特殊情况安排

时间:2013-12-03 20:24:12

标签: algorithm operating-system scheduling priority-queue round-robin

所以这就是问题所在。在研究过程调度时,我遇到了两个看似矛盾的例子,我无法理解。

如果例如在优先级非抢占式调度算法中总是选择具有最高优先级的进程接下来运行并且一旦运行,那么问题就出现了,进程只能自动放弃它的CPU时间,这是没有其他进程可以的运行直到当前正在运行的进程完成。本书提出的解决方案似乎是,如果一个进程的结束和新的高优先级进程的到达同时发生,则新的高优先级进程将被添加到就绪队列中,然后由调度程序将在下一个运行。

但是在Round-robin算法的另一个例子中,如果就绪队列中只有一个进程并且它当前正在运行,如果同时它的量子流逝并且新进程表示已准备就绪,那么似乎建议解决方案是首先完成调度,因此当新进程将添加到队列时,当前正在运行的进程将继续运行。

如果有人向我澄清这一点,我将不胜感激,因为我从其他帖子中了解到,对于队列中的单个进程,循环中没有出现上下文切换,但通常在添加新进程之前完成调度是正确的进程排队。

1 个答案:

答案 0 :(得分:2)

我从你那里得到的描述是:

时间0:

进程1开始使用其时间片,例如5个单位。

时间5:

进程2到达。 过程1用完了时间片并得到了补充。

循环调度程序通过选择剩余时间的下一个进程来检查就绪队列。 在时间0,您的就绪队列如下所示:

P1

时间5:

P1转到P1 - > P2

Tanenbaum在现代操作系统中写道:当一个进程耗尽它的时间片时,它最终排队。所以会发生的是,P1在第一次入队之前再次入队。这节省了从P1到P2并返回到P1的附加上下文切换。 如果您希望首先运行P2,则可以使用优先级基础循环。