所以这就是问题所在。在研究进程调度时,我遇到了两个看似矛盾的例子,我无法理解。
如果例如在优先级非抢占式调度算法中总是选择具有最高优先级的进程下一个运行并且一旦运行,进程只能自愿放弃其CPU时间,即没有其他进程可以运行,直到当前运行的进程完成。看来这本书提出的解决方案是,如果一个进程的结束和新的高优先级进程的到来同时发生,那么新的高优先级进程将被加入到就绪队列中,然后由接下来要运行的调度程序。
但是在循环算法的另一个例子中,如果就绪队列中只有一个进程并且它当前正在运行,如果同时它的时间片已经过去并且新进程说它准备好了,那么建议的解决方案似乎是调度将首先完成,因此当前正在运行的进程将继续运行,而新进程将被添加到队列中。
如果有人向我澄清这一点,我将不胜感激,因为我从其他一些帖子中知道,对于队列中的单个进程,上下文切换不会在循环中发生,但总的来说,调度是在将新进程添加到队列之前完成的.