【发布时间】:2018-09-16 18:21:47
【问题描述】:
我很难理解抢占式和非抢占式内核以及抢占式和非抢占式调度之间的区别。
来自操作系统概念(第九版)、Silberschatz、Galvin 和 Gagne:
抢占式内核是内核允许在内核模式下运行的进程被删除和替换的地方。
非抢占式内核不允许以内核模式运行的进程被抢占;内核模式进程将一直运行,直到它退出内核模式、阻塞或自愿放弃对 CPU 的控制。
在非抢占式调度下,一旦 CPU 被分配给一个进程,该进程就会保留 CPU,直到它通过终止或切换到等待状态来释放 CPU。 em> - 这对我来说似乎与非抢占内核的描述完全相同。
抢占式调度发生在这两种情况下(来自同一本书):
*当进程从运行状态切换到就绪状态时(对于 例如,发生中断时)
当进程从等待状态切换到就绪状态时(对于 例如,在 I/O 完成时)*
这本书只是说在这种情况下有一个选择,我不确定这个选择是否存在。是选择继续运行就绪队列中的同一个进程,还是选择运行就绪队列中的不同进程?
基本上,我正在寻找对这 4 个术语的明确说明。
谢谢!
【问题讨论】:
-
Basically, a clear clarification on these 4 terms is what I'm looking for.- Stack Overflow 上有很多关于这些术语的问题。他们到底有什么不清楚的地方? 非抢占式调度和非抢占式内核的区别在于,非抢占式内核允许进程在用户模式,但非抢占式调度不允许这样做。 -
买一本更好的书。您在上面引用的“抢占式调度”的内容是一堆误导性的流行语标记在一起:(
-
@MartinJames:不,它们不是流行语。它们是关键字,实际上是有意义的。不幸的是,您对其余部分完全正确。
-
@Olaf 没有有效线程状态及其含义的列表(即操作系统)。他们的嗡嗡声多于关键:)
-
@MartinJames:嗯,谁需要明确的定义/规范。我们有人工智能,让他们处理思考,我们在脸书上,在推特上发火来燃烧理性。
标签: operating-system kernel scheduling preemptive