在循环调度程序中,多次在流程列表中添加一个流程是一种使其更高优先级的廉价方法。

我想知道这可能是多么实用。它比其他技术具有什么好处,例如给流程更长的时间切片(好处:更少的切换时间)或保持高优先级流程的单独列表。特别是,多次列出过程如何影响公平和反应性?

(练习2.16在安德鲁·塔南鲍姆(Andrew Tanenbaum) 操作系统:设计和实施 第一版)

有帮助吗?

解决方案

这种方法的优点是循环计划非常有效,因此您无需依靠更复杂的调度程序,这会窃取周期。引入更长的时间切片以提高优先级流程将降低其他线程的响应能力,并使OS更难跳入打断中断等。维护单独的流程列表将需要更复杂的调度程序,这在周期方面会更昂贵。不过,我看不出公平有什么问题。我猜问题是粒度是相当的过程:过程只能具有基本时机的整数倍数。

一个负数是,删除过程将更加昂贵,因为该过程的每次发生都必须从队列中删除。不过,也许这可以懒惰地做到。

其他提示

多次将任务添加到循环计划队列中,这会打开一个问题,即确保条目保持合理分布。这很容易确保系统是否允许动态任务创建或删除,但通常不可能。

除了从队列中删除项目的更复杂的过程外,队列中的过程条目最终会导致行为不平衡,这在多个优先级级别上更容易公平。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top