1

Linux进程调度的时候,真的是在产生和处理定时器中断的时候发生的,对不对?如果错了,还有什么进一步的解释吗?谢谢!

4

2 回答 2

2

不。调度也会在进程停止运行时发生——最明显的是,当进程退出时,而且在它进行系统调用导致它阻塞的任何时候(即内核不能立即返回结果的任何时间)。

于 2013-05-25T16:55:41.250 回答
1

部分正确。根据当前的 Linux 调度程序 (CFS),在每个调度程序滴答声中,调度程序都会检查是否该进行任何抢占。除此之外,还有其他计划任务的情况 - a) 创建任务时,即 fork(); b) 当任务自愿放弃 CPU 时,即通过调用 schedule();c) 任务退出时。

在 b & c 的情况下,有可能当前 CPU 上没有进程可以运行。在那种特殊情况下——即将空闲的 CPU 尝试进行负载平衡,即尝试将负载(任务)从最繁忙的 CPU 转移到自身并尝试运行该特定任务。这是对 Linux 上的进程如何调度的粗略总结。

于 2013-05-25T17:03:53.757 回答