如何实现循环算法?

how to implement round robin algorithm?

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

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

她的回答是正确的。

您可以这样解决问题:

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

希望对您有所帮助!

两个都是正确的!!!

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

你的方法:

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

您教授的方法:

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

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

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

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