是否有任何操作系统使用非抢占式调度?如果是这样,他们执行什么类型的任务?



您能否帮助解决非抢占式调度的实际应用,因为似乎没有操作系统使用此调度,这只是理论上的,还是有任何工作操作系统使用此调度?如果这些操作系统旨在处理什么类型的任务,如果有特定于任务的任务。

首先,重要的是要了解抢占是一个频谱。您可以想象,频谱的一端是某种形式的硬核先发制人调度,而另一端是某种形式的硬核非先发制人调度。在这两个极端之间,有各种各样的选择,其中一些作为研究提案存在,而另一些则已经进入生产级操作系统。

先发制人的调度使系统在执行可能不受信任或有缺陷的代码时能够高度可靠地运行,并提高系统的整体响应能力。这就是为什么所有现代大型操作系统基本上都使用抢占式调度(有许多变化)。

然而,对于内存受限和/或实时平台,已经并且仍在进行大量关于抢占调度(PMT)和非抢占调度(也称为协作调度或CMT)的优缺点的研究。抢占通常会降低任务执行时间的可预测性。也就是说,每个任务的执行时间可能会降低或改善。这主要是由于两个原因。首先,不同的任务可能对不同的数据进行操作。因此,当任务计划为接下来运行时,它将访问的数据将从 CPU 缓存中逐出先前计划的任务使用的部分或全部数据,这些任务可能仍需要计划运行。其次,现代 CPU 采用许多动态预测/推测技术(分支预测、预取等)。不同任务的行为可能会降低或提高这些技术的有效性,具体取决于任务的相似程度,并在每次上下文切换时造成性能影响。

非预先调度可以减少内存消耗。如果任务由多个阶段组成,它可以分配内存以完成一个阶段,然后释放在后续阶段不需要的任何内存,并产生控制以允许其他任务运行。这通常无法通过先发制人的调度来实现。

非抢先调度自然支持互斥,无需任何额外的复杂性或性能开销。这可以通过让任务在互斥的代码段中执行时不产生执行来实现。需要锁定机制来支持具有先发制人的调度的互斥。

由于这些原因,非先发制人的调度技术在内存受限和/或实时系统中被广泛使用。维基百科有一个实时操作系统列表,其中许多支持非先发制人的调度。

NT之前的Windoze就是一个例子。

相关内容

最新更新