循环调度:允许多次列出一个进程?


9

在循环调度程序中,将进程多次添加到进程列表是一种便宜的方法,可以为其赋予更高的优先级。

我想知道这种方法有多实用。与其他技术相比,它有什么好处,例如为过程提供更长的时间片(好处:减少切换时间)或维护单独的高优先级过程列表。特别是,多次列出一个流程如何影响公平性和反应性?

(摘自Andrew Tanenbaum的《操作系统:设计与实现》第一版的练习2.16 。)


Tannenbaum写了许多书。大概是指操作系统
戴夫·克拉克2012年

@DaveClarke是的,谢谢你指出这一点。(实际上,我在这里仅是翻译,但我认为它没有遗漏任何部分。)
Gilles'SO-别再邪恶了

Answers:


4

这种方法的优点是循环调度非常有效,因此您不必依赖更复杂的调度程序,因为这样可以节省周期。为优先级较高的进程引入更长的时间片会降低其他线程的响应能力,并使操作系统更难跳入以处理中断等。维护单独的进程列表将需要更复杂的调度程序,就周期而言,这将更加昂贵。不过,我不认为公平会有任何问题。我想问题是粒度是很自然的过程:进程只能具有基本时间片的整数倍。

不利的一面是,删除进程的成本更高,因为每次出现的该进程都必须从队列中删除。不过,也许这可以偷懒完成。


2

多次将任务添加到循环调度队列中会带来确保条目合理合理地分布的问题。这很容易确保系统是否不允许动态任务的创建或删除,但是通常是不可能的。

除了从队列中删除项目的更为复杂的过程外,队列中过程条目的最终倾斜还会导致行为不平衡,从而更容易公平对待多个优先级。


拥有优先权的愿望不会妨碍公平吗?
拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.