当进程在定时器中断之前退出时,Linux内核如何进行上下文切换?
我知道,如果进程正在运行并且发生计时器中断,则schedule
如果设置了标志,则自动调用函数,然后调度函数选择下一个要运行的进程。基本上在这种情况下,调度函数在当前进程的上下文中运行,但是当进程在计时器中断之前退出时会发生什么?schedule
在这种情况下谁调用函数?它在什么上下文中运行?
注意:我最初在 stackoverflow 上问过这个问题,但是由于 stackoverflow 上没有回复,所以我在这里再次询问。
答案1
定时器中断与任何给定进程无关。当它被服务时,内核执行中断服务例程。该代码及其调用的所有函数都在“中断上下文”中执行。
中断几乎可以在任何事情的中间进行服务:内核代码的执行,包括服务另一个中断的代码,可以暂停以服务中断。
当调用调度程序时,它只是考虑当时存在且可运行的进程。