先发制人非抢占核VS Premptive&非抢先式计划

时间:2018-04-06 16:48:28

标签: operating-system kernel scheduling preemptive

我正在努力理解抢先和非抢先内核之间的区别,以及premptive& amp;非抢先式调度。

来自操作系统概念(第九版),Silberschatz,Galvin和Gagne:

抢先内核是内核允许在内核模式下运行时删除和替换进程的地方。

非抢先内核不允许抢占在内核模式下运行的进程;内核模式进程将一直运行,直到它退出内核模式,阻塞或自动控制CPU。

非抢占式调度下,一旦将CPU分配给进程,该进程将保持CPU,直到它通过终止或切换到等待状态来释放CPU。 - 这对我来说似乎是对非破坏性内核的完全相同的描述。

抢占式安排在这两种情况下发生(来自同一本书):

  1. *当进程从运行状态切换到就绪状态时(for 例如,发生中断时)

  2. 当进程从等待状态切换到就绪状态时(对于 例如,在完成I / O时)*

  3. 这本书简单地指出在这种情况下有一个选择,我不确定选择是什么。可以选择是否可以继续运行就绪队列中的相同进程,还是可以选择与就绪队列不同的进程来运行?

    基本上,我正在寻找对这四个术语的明确说明。

    谢谢!

1 个答案:

答案 0 :(得分:3)

您遇到的问题是这些术语没有标准含义。我怀疑你的书是从一些特定操作系统的角度使用它们的(哪一个?-Je ne sais quois)。如果你在互联网上搜索过,你肯定发现了相互矛盾的解释。

例如,抢先式调度可能意味着:

  1. 将中断正在运行的进程但不会产生CPU的调度。
  2. 在量程已到期之前中断正在运行的进程的调度。
  3. 你的书显然还有另一个定义。我不能从摘录中说出其含义。这本书完全有可能在这一点上令人困惑(因为它显然是在很多方面)。一点是过程状态取决于系统。使用流程状态定义术语非常令人困惑。
  4. 这部分定义是有道理的:

      

    在非抢占式调度下,一旦将CPU分配给进程,该进程将保持CPU直到它通过终止或切换到等待状态来释放CPU。

    定义的先发制人部分毫无意义。

    对于术语抢先内核,这是非常标准的,你给出的描述有些正常。也就是说,本书的陈述应该更加精炼,因为必须在内核模式中删除每个进程。通常情况下,人们会说"在非抢占式内核中,当进程通过异常进入内核模式时,无法删除进程。"

    抢占式内核对于实时处理至关重要。

    所以你问:

      
        
    • 这对我来说似乎是对非预感内核的完全相同的描述。
    •   

    您有四种理论组合:

    1. 抢占式调度先占核心
    2. 操作系统几乎可以随时强制切换进程。

      1. 非抢占式调度抢占式内核
      2. 此组合不存在。

        1. 非抢占式调度非抢先式内核
        2. 该过程必须明确屈服,以允许操作系统切换到另一个进程。

          1. 抢占式调度非抢先式内核
          2. 操作系统可以强制切换进程,除非进程在内核模式下执行以处理异常(可能还存在在处理中断时无法切换进程的情况)。