我们认为在 SMP 环境中,正在执行的进程P当前处于“ 进程上下文”或“ 中断上下文” ”,现在完成任务后,同时返回用户空间(从中断处理程序或系统调用)或返回内核空间(从中断处理程序),它检查是否设置了 need_resched 标志,如果发现设置了该标志,则将调用 scheduler 来分配一个在当前处理器上运行的进程。
我无法理解的是,如何/谁设置了 need_resched 标志?因为此标志在每个进程中都是本地的。
很明显,由于当前处理器忙于执行当前进程P,因此当前处理器无法更新 need_resched 标志。在这种情况下,在另一个处理器上执行的代码如何在进程P中更新该标志? / p>
平台:x86上的Linux