2

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

4

2 回答 2

3

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

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

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

非抢占式调度可以减少内存消耗。如果一个任务由多个阶段组成,它可以分配内存来完成一个阶段,然后释放它在后续阶段不需要的任何内存,并让出控制权以允许其他任务运行。这对于抢先调度通常是不可能的。

非抢占式调度自然支持互斥,没有任何额外的复杂性或性能开销。这可以通过让任务在相互排斥的代码部分中执行时不产生执行来实现。需要锁定机制来支持与抢占式调度的互斥。

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

于 2018-04-09T00:39:30.763 回答
0

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

于 2018-04-09T15:12:07.443 回答