【问题标题】:how to implement round robin algorithm?如何实现循环算法?
【发布时间】:2017-03-07 20:24:03
【问题描述】:

我在 youtube 上看了很多关于 RR 调度的教程,我在考试中遇到了这个问题,但我不知道我做错了什么,教授的解决方案与我的解决方案不同,我现在很困惑。

Job       |    Arrival       |      Burst
P1        |       0          |        4
P2        |       2          |        5
P3        |       3          |        3
P4        |       8          |        4

QT = 1 

她的回答是:P1,P1,P2,P3,P1,P2,P3,P1,P4,P2,P3,P4,P2,P4,P2,P4

我的回答是:P1,P1,P2,P1,P3,P2,P1,P3,P2,P4,P3,P2,P4,P2,P4,P4

那么哪一个是正确的答案,如果是她那为什么?

【问题讨论】:

    标签: algorithm operating-system scheduled-tasks scheduling round-robin


    【解决方案1】:

    两个都对!!!

    我会说你的解决方案看起来是正确的(但你没有考虑优先调度队列)。但这取决于你的教授是如何接近的。以下是方法:

    您的方法:

    您正在执行正常的队列操作。只有 enque() 和 deque()。所以使用这两个,你的方法是正确的!!!

    你教授的方法:

    每当有新进程到来时,他都会将它放在队列的顶部。他正在考虑一个优先队列,而不是每个新进程都有最高优先级。

    如果你和你的教授讨论会更好。我会说你没有错!!!

    【讨论】:

    • 在大多数互联网资料和 YouTube 视频中,他们以不同的方式进行操作,例如假设我们在时间 = 1,现在我们只有 P1,所以我们运行它,然后是 P2,所以他们在之后立即添加 P1 P2 在到达 time = 3 之前,所以它变成了 P1,P1,P2,P1 所以现在我很困惑,你所说的暂停到底是什么意思?
    • 好的,等一下。我明白你的问题了。
    • 你绝对应该和你的教授讨论。鉴于他告诉您他正在使用的优先级队列,他也是正确的。
    【解决方案2】:

    最高优先级去新到,第二优先级通过等待队列中的FIFO考虑。

    Queue 
    front    P1     P2     P3      P4
    -----------------------------------
    0  P1 | [3]    
    1  P1 | [2] >>
    2  P2 |  2     [4] >>             <- P2 arrives
    3  P3 |  2      4     [2]         <- P3 arrives
    4  P1 | [1] >>  4      2 
    5  P2 |  1     [3] >>  2 
    6  P3 |  1      3     [1]
    7  P1 | [0] >>  3      1  
    8  P4 |         3      1     [3]  <- P4 arrives. FIFO disrupted.
    9  P2 |        [2] >>  1      3   <- FIFO regained.
    10 P3 |         2     [0] >>  3 
    11 P4 |         2            [2]
    12 P2 |        [1] >>         2 
    13 P4 |         1            [1]
    14 P2 |        [0] >>         1 
    15 P4 |                      [0]
    

    【讨论】:

      【解决方案3】:

      她的回答是正确的。

      你可以这样解决问题:

      1. 打开一个新的笔记本页面
      2. 每行编号 0-15(总共 16 行;SUM(Burst) 列)
      3. 首先在作业到达的那一行写入作业(P1 on line 第 0 行,第 2 行 P2,第 3 行 P3,第 3 行 P4 编号 8)
      4. 现在您知道每个作业只能在该行之后发生。
      5. 接下来,开始按顺序填写其余行 其中行没有定义作业,并且作业出现的次数少于为该作业定义的突发数。

      希望这会有所帮助!

      【讨论】:

      • 是的,这很有帮助,它给了我正确的答案,但我不明白为什么:P
      • 根据问题的定义,每个作业可以执行N次——其中N是Burst的数量。
      • 一旦我们填写了作业到达的每一行,每个作业都会减少 1 个突发。随着时间的增加和可调度的作业,作业被添加到队列中。
      • 当您继续时,作业将从队列中取出并按照接收顺序执行。这一直持续到作业执行了定义的突发量
      【解决方案4】:

      你的老师有不同的方法。每当新进程到达系统时,它的优先级高于完成突发的进程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-15
        • 2019-05-09
        • 1970-01-01
        • 2014-05-17
        相关资源
        最近更新 更多