特殊情况调度

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

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

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

如果有人向我澄清这一点,我会很感激,因为我从其他文章知道上下文切换不是以循环方式发生在队列中的单个进程中,但是一般情况下调度是在将新进程添加到队列之前完成的。


我从你得到的描述是:

时间0:

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

时间5:

过程2到达。 过程1耗尽了其时间片并补充。

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

P1

在时间5:

P1转到P1 - > P2

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

链接地址: http://www.djcxy.com/p/84823.html

上一篇: Special case scheduling

下一篇: Java Thread Scheduling