调度程序代码在什么上下文中运行?

Pav*_*ath 12 linux scheduling interrupt linux-kernel

schedule()调用调度程序代码有两种情况 -

  1. 当进程自愿调用时 schedule()

  2. 定时器中断调用 schedule()

在案例2中,我认为schedule()在中断上下文中运行,但第一种情况呢?它是在调用它的进程的上下文中运行的吗?

还有更多场景可以调用schedule()吗?

caf*_*caf 8

schedule()始终在流程上下文中运行.在第二种情况下,当它由定时器中断启动时,它处于从内核返回到schedule()被调用的中断进程的返回路径中.

  • @Jesus Ramos:对内核的输入方式进行分类是没有意义的,因为它总是*通过某种中断进入*.`schedule()`本身总是代表要调度的进程执行的代码路径,即使内核是通过定时器中断输入的 - 这意味着进程上下文. (4认同)