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