📅  最后修改于: 2020-12-14 01:50:00             🧑  作者: Mango
在以下示例中,有六个进程分别命名为P1,P2,P3,P4,P5和P6。它们的到达时间和突发时间在下表中给出。系统的时间量为4个单位。
Process ID | Arrival Time | Burst Time |
---|---|---|
1 | 0 | 5 |
2 | 1 | 6 |
3 | 2 | 3 |
4 | 3 | 1 |
5 | 4 | 5 |
6 | 6 | 4 |
根据算法,我们必须维护就绪队列和甘特图。每次调度后,两个数据结构的结构都将更改。
最初,在时间0,过程P1到达,该过程将按时间片4个单位进行调度。因此,在就绪队列中,从5个单元的CPU突发时间开始只有一个进程P1。
P1 |
5 |
P1将首先执行4个单元。
同时,执行P1时,还有四个进程P2,P3,P4和P5进入就绪队列。 P1尚未完成,它需要另外1单位时间,因此它也将被添加回就绪队列。
P2 | P3 | P4 | P5 | P1 |
6 | 3 | 1 | 5 | 1 |
在P1之后,P2将执行4个时间单位,如甘特图所示。
在执行P2的过程中,另一个进程P6到达就绪队列。由于P2尚未完成,因此P2也将以剩余的突发时间2个单位加回到就绪队列中。
P3 | P4 | P5 | P1 | P6 | P2 |
3 | 1 | 5 | 1 | 4 | 2 |
在P1和P2之后,P3将执行3个时间单位,因为它的CPU突发时间仅为3秒。
由于P3已完成,因此它将终止并且不会添加到就绪队列中。下一个将执行的处理是P4。
P4 | P5 | P1 | P6 | P2 |
1 | 5 | 1 | 4 | 2 |
之后,P1,P2和P3,P4将被执行。它的爆发时间只有1个单位,小于时间量,因此它将完成。
准备队列中的下一个进程是具有5个突发时间单位的P5。由于P4已完成,因此不会将其添加回队列。
P5 | P1 | P6 | P2 |
5 | 1 | 4 | 2 |
P5将在整个时间片中执行,因为它需要5个单位的突发时间,该时间比时间片高。
P5尚未完成;它将以剩余的突发时间1单位加回到队列中。
P1 | P6 | P2 | P5 |
1 | 4 | 2 | 1 |
下一轮将给予过程P1以完成其执行。由于仅需要1个单位的突发时间,因此它将完成。
P1已完成,不会被添加回就绪队列。下一过程P6仅需要4个脉冲串时间,然后将被执行。
P6 | P2 | P5 |
4 | 2 | 1 |
P6将执行4个时间单位直到完成。
由于P6已完成,因此不会再次添加到队列中。就绪队列中仅存在两个进程。下一处理P2仅需要2个时间单位。
P2 | P5 |
2 | 1 |
P2将再次执行,因为它仅需要2个时间单位,因此可以完成。
现在,队列中唯一可用的进程是P5,它需要1个单位的突发时间。由于时间片为4个单位,因此它将在下一个脉冲串中完成。
P5 |
1 |
P5将执行直到完成。
如下表所示,将计算完成时间,周转时间和等待时间。
据我们所知,
Turn Around Time = Completion Time - Arrival Time
Waiting Time = Turn Around Time - Burst Time
Process ID | Arrival Time | Burst Time | Completion Time | Turn Around Time | Waiting Time |
---|---|---|---|---|---|
1 | 0 | 5 | 17 | 17 | 12 |
2 | 1 | 6 | 23 | 22 | 16 |
3 | 2 | 3 | 11 | 9 | 6 |
4 | 3 | 1 | 12 | 9 | 8 |
5 | 4 | 5 | 24 | 20 | 15 |
6 | 6 | 4 | 21 | 15 | 11 |
平均等待时间=(12 + 16 + 6 + 8 + 15 + 11)/ 6 = 76/6单位