操作系统 RR循环调度示例

操作系统 RR循环调度示例

在下面的示例中,有六个进程,分别命名为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个单位。因此,就绪队列开始时只有一个进程P1,CPU执行时间为5个单位。

P1
5

甘特图

P1首先执行4个单位。

操作系统 RR循环调度示例

就绪队列

与此同时,在执行P1的同时,另外四个进程P2、P3、P4和P5到达了就绪队列。P1尚未完成,它还需要1个单位的时间,因此它也将被添加回就绪队列中。

P2 P3 P4 P5 P1
6 3 1 5 1

甘特图

在 P1 之后,P2 将被执行 4 个时间单位,如 GANTT 图表所示。

操作系统 RR循环调度示例

就绪队列

在执行P2期间,还有一个进程P6到达了就绪队列。由于P2尚未完成,因此P2将以剩余的执行时间2个单位重新添加到就绪队列中。

P3 P4 P5 P1 P6 P2
3 1 5 1 4 2

甘特图

在 P1 和 P2 之后,P3 将被执行 3 个时间单位,因为它的 CPU 增长时间仅为 3 秒。

操作系统 RR循环调度示例

就绪队列

因为P3已经完成,因此它将被终止并不会被加入到就绪队列中。下一个将被执行的进程是P4。

P4 P5 P1 P6 P2
1 5 1 4 2

甘特图

在P1、P2和P3之后,P4将被执行。它的执行时间只有1个单位,小于时间片,因此将被完成。

操作系统 RR循环调度示例

就绪队列

就绪队列中的下一个进程是具有5个单位的执行时间的P5。由于P4已经完成,所以它将不会再被加入队列。

P5 P1 P6 P2
5 1 4 2

甘特图

P5将被执行整个时间片,因为它需要5个单位的执行时间,高于时间片的长度。
操作系统 RR循环调度示例

就绪队列

P5尚未完成;它将被添加回队列,并保留1个单位的剩余执行时间。

P1 P6 P2 P5
1 4 2 1

甘特图

进程P1将有机会完成其执行。由于它只需要1个单位的执行时间,因此它将被完成。

操作系统 RR循环调度示例

就绪队列

P1已经完成并且不会再被添加回就绪队列中。下一个进程P6只需要4个时间单位的执行时间,将会被下一步执行。

P6 P2 P5
4 2 1

甘特图

P6将在4个时间单位内执行完毕。
操作系统 RR循环调度示例

就绪队列

由于P6已经完成,因此不会再次添加到队列中。准备队列中只有两个进程。下一个进程P2只需要2个时间单位。

P2 P5
2 1

甘特图

因为只需要2个时间单位,所以P2会再次执行,因此P2将会被完成。

操作系统 RR循环调度示例

就绪队列

现在,队列中唯一可用的进程是P5,它需要1个单位的执行时间。由于时间片的长度为4个单位,因此它将在下一个执行时间片内完成。

P5
1

甘特图

P5将执行直到完成。

操作系统 RR循环调度示例

完成时间,周转时间和等待时间将根据下表所示进行计算。

如我们所知,

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 单位

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程