我正在努力理解抢先和非抢先内核之间的区别,以及premptive& amp;非抢先式调度。
来自操作系统概念(第九版),Silberschatz,Galvin和Gagne:
抢先内核是内核允许在内核模式下运行时删除和替换进程的地方。
非抢先内核不允许抢占在内核模式下运行的进程;内核模式进程将一直运行,直到它退出内核模式,阻塞或自动控制CPU。
在非抢占式调度下,一旦将CPU分配给进程,该进程将保持CPU,直到它通过终止或切换到等待状态来释放CPU。 - 这对我来说似乎是对非破坏性内核的完全相同的描述。
抢占式安排在这两种情况下发生(来自同一本书):
*当进程从运行状态切换到就绪状态时(for 例如,发生中断时)
当进程从等待状态切换到就绪状态时(对于 例如,在完成I / O时)*
这本书简单地指出在这种情况下有一个选择,我不确定选择是什么。可以选择是否可以继续运行就绪队列中的相同进程,还是可以选择与就绪队列不同的进程来运行?
基本上,我正在寻找对这四个术语的明确说明。
谢谢!
答案 0 :(得分:3)
您遇到的问题是这些术语没有标准含义。我怀疑你的书是从一些特定操作系统的角度使用它们的(哪一个?-Je ne sais quois)。如果你在互联网上搜索过,你肯定发现了相互矛盾的解释。
例如,抢先式调度可能意味着:
这部分定义是有道理的:
在非抢占式调度下,一旦将CPU分配给进程,该进程将保持CPU直到它通过终止或切换到等待状态来释放CPU。
定义的先发制人部分毫无意义。
对于术语抢先内核,这是非常标准的,你给出的描述有些正常。也就是说,本书的陈述应该更加精炼,因为必须在内核模式中删除每个进程。通常情况下,人们会说"在非抢占式内核中,当进程通过异常进入内核模式时,无法删除进程。"
抢占式内核对于实时处理至关重要。
所以你问:
- 这对我来说似乎是对非预感内核的完全相同的描述。
您有四种理论组合:
操作系统几乎可以随时强制切换进程。
此组合不存在。
该过程必须明确屈服,以允许操作系统切换到另一个进程。
操作系统可以强制切换进程,除非进程在内核模式下执行以处理异常(可能还存在在处理中断时无法切换进程的情况)。