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

时间:2018-04-08 19:11:16

标签: operating-system scheduling real-time-systems

你能否帮助实现非抢先式调度的现实应用,因为似乎没有使用这种方法的操作系统只是为了理论,还是有任何使用这种调度的工作操作系统?如果有任何特定于任务的操作,那么这些操作系统将被设定为处理什么类型的任务。

2 个答案:

答案 0 :(得分:2)

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

Preemtive调度使系统在执行可能不受信任或错误的代码时可以高度可靠地运行,并提高系统的整体响应能力。这就是为什么所有现代大型操作系统都主要使用预先调度(有很多变化)的原因。

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

非preemtive调度可以减少内存消耗。如果一个任务由几个阶段组成,它可以分配内存只是为了完成一个阶段,然后释放它在以后阶段不需要的任何内存,并产生控制以允许其他任务运行。这通常不能用于预先安排。

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

由于这些原因,非预先调度技术被广泛用于内存受限和/或实时系统中。维基百科有cooperative scheduling个实时操作系统,其中许多支持非预先安排。

答案 1 :(得分:0)

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