我在this book和我教授的幻灯片上学习操作系统。我已经到了"进程调度算法"章节。谈到RoundRobin(RR)算法,我发现了一些不一致的地方。据我所知,这是带有时间片(quatum)的FCFS算法的抢占式版本。 从现在开始,我将使用以下符号:
#1 = prof's version
#2 = book's version
#3 = other version
这里存在不一致性(假设量子为100ms):
#1
RR使用两个队列(Q1,Q2):
Q2:确定结束量子的进程的队列;
因此当一个进程被阻塞I / O请求(例如30ms之后)并且其量程尚未到期时,将被置于Q1的末尾(我猜)并且当它再次被调度时它将使用CPU剩余时间(本例中为70ms)。
#2
(这本书没有谈到多个队列,所以我假设它只使用一个队列)
#3
Source
对我来说,这些是RR调度算法的3种不同实现。我认为最有价值的是#3
,因为#1
会导致饥饿(如果流程放在第二季度,新流程继续在第一季度流行,那么流程将永远不再安排)当进程被阻止进行I / O请求时,#2
会浪费CPU时间。所以,我的问题是:哪一个是正确的?
答案 0 :(得分:0)
到达系统的任何进程都在就绪队列的末尾排队。选择处于就绪队列头部的进程并允许在CPU上执行时间量q。在q到期时,进程在就绪队列的尾部排队。下一个进程被安排为一个在就绪队列的头部。这是知道循环调度。
OR
在循环调度中,进程被调度为FIFO,但被赋予有限的CPU时间称为时间片或量子。如果进程在其CPU时间到期之前未完成,则CPU被抢占并被提供给在下一个等待进程中,被抢占的进程被放置在就绪队列的后面。