您能在非先发制人调度的实际应用方面提供帮助吗?因为似乎没有使用这种调度的操作系统,这只是理论上的,还是使用此调度的任何工作操作系统?如果这些操作系统需要处理哪些类型的任务,如果有特定于任务的任务的话。
发布于 2018-04-09 00:39:30
首先,重要的是要理解抢占是一个频谱。你可以想象,频谱的一端是某种形式的硬核优先调度,而另一端是某种形式的硬核非抢占调度。在这两个极端之间,有各种各样的选择,其中一些是作为研究建议存在的,而另一些则已经进入了生产级操作系统。
预调度使系统在执行可能不可信或错误的代码时能够高度可靠地运行,并提高了系统的总体响应能力。这就是为什么所有现代大型操作系统本质上都使用预先调度(有许多变化)。
然而,对于内存受限和/或实时平台,已经并仍在进行大量的研究,研究了优先级调度( preemtive scheduling )和非抢占调度(non,又称协同调度或CMT)的优缺点。抢占通常会降低任务执行时间的可预测性。也就是说,每个任务的执行时间可能会降低或改善。这主要是因为两个原因。首先,不同的任务可能对不同的数据进行操作。因此,当任务被排定为下一个运行时,它将访问的数据将从CPU中缓存以前计划的任务使用的部分或全部数据,这些数据可能仍然需要被调度为运行。其次,现代CPU使用了许多动态预测/投机技术(分支预测、预取等)。不同任务的行为可能会降低或提高这些技术的有效性,这取决于任务有多相似,并且在每个上下文切换中都会产生性能上的影响。
非抢先调度可以减少内存消耗。如果一个任务由几个阶段组成,它可以分配内存来完成一个阶段,然后释放在以后阶段不需要的任何内存,并产生允许其他任务运行的控制。这通常是不可能的先期调度。
非先期调度自然支持互斥,不需要任何额外的复杂性或性能开销。这可以通过让任务在代码中的一个相互排斥的部分中执行时不产生执行来实现。锁定机制需要支持具有先期调度的互斥机制。
由于这些原因,非抢占调度技术在内存受限和/或实时系统中得到了广泛的应用。维基百科有一个实时列表 (实时OSes ),其中许多支持非先期调度.
发布于 2018-04-09 15:12:07
在NT之前,Windoze就是一个例子。
https://stackoverflow.com/questions/49721718
复制相似问题