抢占式和非抢占式内核 VS 抢占式和非抢占式调度
Preemptive & Nonpreemptive Kernel VS Premptive & Nonpreemptive Scheduling
我正在努力理解抢占式和非抢占式内核之间的区别,以及抢占式和非抢占式调度之间的区别。
来自操作系统概念(第九版),Silberschatz、Galvin 和 Gagne:
A preemptive kernel 是内核允许进程在 运行ning 处于内核模式时被删除和替换的地方。
A nonpreemptive kernel不允许内核模式下的进程运行ning被抢占;内核模式进程将 运行 直到它退出内核模式、阻塞或自愿放弃对 CPU.
的控制
在非抢占式调度下,一旦CPU被分配给一个进程,该进程将保留CPU直到它释放CPU 通过终止或切换到等待状态。 - 这对我来说似乎与非抢占式内核的描述完全相同。
抢占式调度出现在这两种情况下(来自同一本书):
*当一个进程从运行ning状态切换到就绪状态时(对于
例如,当发生中断时)
当一个进程从等待状态切换到就绪状态时(对于
例如,在 I/O)*
完成时
这本书只是说在这种情况下有一个选择,我不确定这个选择是什么。是选择就绪队列中的同一个进程可以继续到运行,还是选择与就绪队列不同的进程到运行?
基本上,我正在寻找对这 4 个术语的明确说明。
谢谢!
您面临的问题是这些术语没有标准含义。我怀疑您的书是从某个特定操作系统(哪个操作系统?—Je ne sais quois)的角度使用它们的。如果您在互联网上搜索过,您肯定会发现相互矛盾的解释。
例如,抢占式调度可能意味着:
- 将中断不产生 CPU 的 运行 进程的计划。
- 计划将在 运行 进程到期之前中断它。
- 您的书显然还有另一个定义。我无法从摘录中分辨出意思。这本书完全有可能在这一点上令人困惑(因为它显然在很多方面)。有一点是进程状态依赖于系统。使用流程状态来定义术语非常混乱。
这部分定义是有道理的:
Under nonpreemptive scheduling, once the CPU has been allocated to a process, the process keeps the CPU until it releases the CPU either by terminating or by switching to the waiting state.
定义的优先部分毫无意义。
就术语抢占式内核而言,这是非常标准的,您给出的描述也比较正常。也就是说,这本书的陈述应该更精确一些,因为每个进程都必须在内核模式下删除。通常,人们会说 "In a non-preemptive kernel, a process cannot be removed when it has entered kernel mode through an exception."
抢占式内核对于 real-time 处理至关重要。
所以你问:
- This to me seems to be the exact same description of the nonpreemeptive kernel.
你有四种理论组合:
- 抢占式调度抢占式内核
操作系统几乎可以随时强制切换进程。
- Non-Preemptive调度抢占式内核
这个组合不存在。
- Non-Preemptive调度Non-Preemptive内核
该进程必须显式让步以允许操作系统切换到另一个进程。
- 抢占式调度非抢占式内核
操作系统可以强制切换进程,除非进程在内核态执行处理异常(也可能出现处理中断无法切换进程的情况)。
我正在努力理解抢占式和非抢占式内核之间的区别,以及抢占式和非抢占式调度之间的区别。
来自操作系统概念(第九版),Silberschatz、Galvin 和 Gagne:
A preemptive kernel 是内核允许进程在 运行ning 处于内核模式时被删除和替换的地方。
A nonpreemptive kernel不允许内核模式下的进程运行ning被抢占;内核模式进程将 运行 直到它退出内核模式、阻塞或自愿放弃对 CPU.
的控制在非抢占式调度下,一旦CPU被分配给一个进程,该进程将保留CPU直到它释放CPU 通过终止或切换到等待状态。 - 这对我来说似乎与非抢占式内核的描述完全相同。
抢占式调度出现在这两种情况下(来自同一本书):
*当一个进程从运行ning状态切换到就绪状态时(对于 例如,当发生中断时)
当一个进程从等待状态切换到就绪状态时(对于 例如,在 I/O)*
完成时
这本书只是说在这种情况下有一个选择,我不确定这个选择是什么。是选择就绪队列中的同一个进程可以继续到运行,还是选择与就绪队列不同的进程到运行?
基本上,我正在寻找对这 4 个术语的明确说明。
谢谢!
您面临的问题是这些术语没有标准含义。我怀疑您的书是从某个特定操作系统(哪个操作系统?—Je ne sais quois)的角度使用它们的。如果您在互联网上搜索过,您肯定会发现相互矛盾的解释。
例如,抢占式调度可能意味着:
- 将中断不产生 CPU 的 运行 进程的计划。
- 计划将在 运行 进程到期之前中断它。
- 您的书显然还有另一个定义。我无法从摘录中分辨出意思。这本书完全有可能在这一点上令人困惑(因为它显然在很多方面)。有一点是进程状态依赖于系统。使用流程状态来定义术语非常混乱。
这部分定义是有道理的:
Under nonpreemptive scheduling, once the CPU has been allocated to a process, the process keeps the CPU until it releases the CPU either by terminating or by switching to the waiting state.
定义的优先部分毫无意义。
就术语抢占式内核而言,这是非常标准的,您给出的描述也比较正常。也就是说,这本书的陈述应该更精确一些,因为每个进程都必须在内核模式下删除。通常,人们会说 "In a non-preemptive kernel, a process cannot be removed when it has entered kernel mode through an exception."
抢占式内核对于 real-time 处理至关重要。
所以你问:
- This to me seems to be the exact same description of the nonpreemeptive kernel.
你有四种理论组合:
- 抢占式调度抢占式内核
操作系统几乎可以随时强制切换进程。
- Non-Preemptive调度抢占式内核
这个组合不存在。
- Non-Preemptive调度Non-Preemptive内核
该进程必须显式让步以允许操作系统切换到另一个进程。
- 抢占式调度非抢占式内核
操作系统可以强制切换进程,除非进程在内核态执行处理异常(也可能出现处理中断无法切换进程的情况)。