4

我正在努力理解抢占式和非抢占式内核以及抢占式和非抢占式调度之间的区别。

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

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

抢占式内核不允许以内核模式运行的进程被抢占;内核模式进程将一直运行,直到它退出内核模式、阻塞或自愿放弃对 CPU 的控制。

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

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

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

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

这本书只是说在这种情况下有一个选择,我不确定这个选择是否存在。是选择继续运行就绪队列中的同一个进程,还是选择运行就绪队列中的不同进程?

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

谢谢!

4

1 回答 1

6

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

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

  1. 调度将中断不产生 CPU 的正在运行的进程。
  2. 调度将在其量程到期之前中断正在运行的进程。
  3. 你的书显然还有另一个定义。我无法从摘录中说出含义。这本书完全有可能在这一点上令人困惑(因为它显然在很多点上)。一点是进程状态是系统相关的。使用进程状态来定义术语是相当混乱的。

它定义的这一部分是有道理的:

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

定义的先发制人部分没有意义。

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

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

所以你问:

  • 在我看来,这似乎与非抢占内核的描述完全相同。

你有四种理论组合:

  1. 抢占式调度 抢占式内核

操作系统几乎可以在任何时候强制切换进程。

  1. 非抢占式调度抢占式内核

这种组合不存在。

  1. 非抢占式调度 非抢占式内核

该进程必须显式让步以允许操作系统切换到另一个进程。

  1. 抢占式调度 非抢占式内核

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

于 2018-04-06T20:59:12.570 回答