jjzjj

linux - Linux内核中ASID用完了怎么处理?

ARM架构中的ASID(theAddressSpaceIdentifier)在一个寄存器中占用8位。这意味着可以分配256个ASID。但是在linux内核中甚至有超过1024个任务可以同时运行。Linux内核中ASID用完了怎么处理?我查过内核源码,当ASID用完后,内核会重新分配ASID给新任务。考虑一种情况,最新的任务拥有第一个ASID(0b1000000000000001),但必须有一个任务已经拥有相同的ASID。如果这两个任务需要cantextswitch怎么办?我没有找到相关的内核源代码。linux内核相关代码在~/kernel/core.ccontext_switch()中