循环调度算法

时间:2015-09-18 08:25:32

标签: operating-system scheduling round-robin

我在this book和我教授的幻灯片上学习操作系统。我已经到了"进程调度算法"章节。谈到RoundRobin(RR)算法,我发现了一些不一致的地方。据我所知,这是带有时间片(quatum)的FCFS算法的抢占式版本。 从现在开始,我将使用以下符号:

#1 = prof's version
#2 = book's version
#3 = other version

这里存在不一致性(假设量子为100ms):

#1 RR使用两个队列(Q1,Q2):

  • Q1:没有结束量子的进程的队列;
  • Q2:确定结束量子的进程的队列;

    1. 调度程序从Q1的头部开始;
    2. 如果流程在量程到期之前结束,则该流程会故意释放CPU,并且调度程序将从Q1开始执行下一个流程
    3. 如果该过程在量子到期之前没有结束,则被抢占并放置在Q2的末尾;
    4. 当一个流程准备好时,它被放置在Q1的末尾;
    5. 当Q1为空时,Q1和Q2交换;

因此当一个进程被阻塞I / O请求(例如30ms之后)并且其量程尚未到期时,将被置于Q1的末尾(我猜)并且当它再次被调度时它将使用CPU剩余时间(本例中为70ms)。

#2(这本书没有谈到多个队列,所以我假设它只使用一个队列)

  1. 调度程序从就绪队列的头部开始处理;
  2. 如果进程在量程到期之前结束,则进程会故意释放CPU,并且调度程序从就绪队列中获取下一个进程
  3. 如果进程在量程到期之前没有结束,则被抢占并放置在就绪队列的末尾;
  4. #3 Source

    1. 调度程序获取就绪队列中的第一个进程;
    2. 如果进程在量程到期之前结束,则进程会故意释放CPU,并且调度程序从就绪队列中获取下一个进程
    3. 如果进程在量程到期之前没有结束,则被抢占并放置在就绪队列的末尾;
    4. 如果进程被I / O请求阻止,它将被放置在等待队列中,当它变为 ready 时,将再次放入就绪队列;
    5. 对我来说,这些是RR调度算法的3种不同实现。我认为最有价值的是#3,因为#1会导致饥饿(如果流程放在第二季度,新流程继续在第一季度流行,那么流程将永远不再安排)当进程被阻止进行I / O请求时,#2会浪费CPU时间。所以,我的问题是:哪一个是正确的

1 个答案:

答案 0 :(得分:0)

到达系统的任何进程都在就绪队列的末尾排队。选择处于就绪队列头部的进程并允许在CPU上执行时间量q。在q到期时,进程在就绪队列的尾部排队。下一个进程被安排为一个在就绪队列的头部。这是知道循环调度。

                                   OR

在循环调度中,进程被调度为FIFO,但被赋予有限的CPU时间称为时间片或量子。如果进程在其CPU时间到期之前未完成,则CPU被抢占并被提供给在下一个等待进程中,被抢占的进程被放置在就绪队列的后面。