如何实现循环算法?

时间:2016-10-25 17:12:04

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

我在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

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

4 个答案:

答案 0 :(得分:3)

两者都是正确的!!!

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

您的方法:

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

你教授的方法:

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

如果你和你的教授讨论,那就更好了。我会说你没错!!!!

答案 1 :(得分:3)

新到达的最高优先级,在等待队列中通过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]

答案 2 :(得分:2)

她的回答是正确的。

您可以像这样解决问题:

  1. 打开新的笔记本页面
  2. 每行0-15的数字(总共16行; SUM(突发)列)
  3. 首先将作业写在它到达的行上(P1在线 编号为0,P2编号为2,P3编号为3,P4编号为线 编号8)
  4. 现在您知道每个工作只能在该行之后发生。
  5. 接下来,按顺序开始填写其余行 这些行没有定义任何作业,并且作业的出现次数少于为该作业定义的突发数量。
  6. 希望这有帮助!

答案 3 :(得分:1)

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