即使有空闲处理器,内核是否也可能不让已经准备好的线程运行?

即使有空闲处理器,内核是否也可能不让已经准备好的线程运行?

假设每个线程的关联性是所有处理器。每当线程准备就绪时,内核是否会尝试寻找空闲处理器来运行它?

答案1

内核的进程调度程序不会等待核心变得空闲,它实际上根据affinity和来决定在每个核心上顺序获取处理片priority

当线程处于休眠或等待 I/O 状态时,它将被跳过,直到下次调度程序在其处理队列中循环回到它。

更详细地理解这一点需要阅读源代码。请注意,这是内核中最复杂的部分。

相关内容