“RES:重新调度中断”和“LOC:本地定时器中断”有什么区别?什么负责触发 RES 中断?LOC 是否与处理器中的 Timer h/w 生成的通用定时器中断相同?
另外,请说明在定时器中断和 RES 中断期间调用了调度程序的哪一部分?它在 Linux 内核中是如何发生的?
提前致谢。
“RES:重新调度中断”和“LOC:本地定时器中断”有什么区别?什么负责触发 RES 中断?LOC 是否与处理器中的 Timer h/w 生成的通用定时器中断相同?
另外,请说明在定时器中断和 RES 中断期间调用了调度程序的哪一部分?它在 Linux 内核中是如何发生的?
提前致谢。
重新调度中断是 Linux 内核通知另一个 CPU 内核调度线程的方式。
在 SMP 系统上,这是由调度程序完成的,以将负载分散到多个 CPU 内核上。
调度程序尝试将处理器活动分散到尽可能多的内核上。一般的经验法则是,最好在所有内核上以较低的功耗(较低的时钟频率)运行尽可能多的进程,而不是让一个内核真正忙于全速运行而其他内核正在休眠。
使用处理器间中断 (IPI)实现重新调度中断。有关更多详细信息,请查看这篇关于Rescheduling Interrupts on Linux的文章。
APIC 为特定的 CPU 内核引发本地定时器中断。只有那个 CPU 核心接收中断并处理它们。有关其各种优势的简要说明,请查看此答案。