【发布时间】:2014-10-23 19:04:17
【问题描述】:
“了解 Linux 内核”一书提到了几种挂起在内核模式下运行的进程的方法(第 1 章,第 22 页)。他们在这里:
- 无法立即满足系统调用请求
- CPU 检测到异常
- 发生硬件中断
- 当 CPU 在启用内核抢占的情况下运行时发生中断, 并且可以运行更高优先级的进程。
它没有提到进程用完了它的时间片并且调度器带来另一个相同优先级的进程来运行。我认为这应该是暂停在内核模式下运行的进程的一种情况。请发表评论。
【问题讨论】:
-
这不是第 4 点吗?调度程序通常在定时器中断时运行。
-
是的,上下文切换不会自行发生。 CS 在系统定时器中断处理程序中实现。
-
数字 4 是关于更高优先级的进程可以运行。我担心的是相同或更低优先级的进程。
-
man 7 sched: '要运行的线程是根据仅在此列表中确定的动态优先级从静态优先级 0 列表中选择的。动态优先级基于 nice 值(见下文),并随着线程准备好运行但被调度程序拒绝运行的每个时间片而增加。这确保了所有 SCHED_OTHER 线程之间的公平进展。'
标签: linux linux-kernel