迴圈排程演算法範例


在以下範例中,有六個進程分別命名為P1,P2,P3,P4,P5和P6。 他們的到達時間和爆發時間如下表所示。 系統的時間量是4個單位。

進程ID 到達時間 突發時間
1 0 5
2 1 6
3 2 3
4 3 1
5 4 5
6 6 4

根據演算法,我們必須保持就緒佇列和甘特圖。 兩個資料結構的結構在每次排程後都會改變。

就緒佇列:
最初,在時間0,過程P1到達,其將被安排為時間片4單位。 因此,在就緒佇列中,在CPU突發時間5個單元開始時將只有一個進程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之後,由於其CPU突發時間僅為3秒,因此P3將執行3個單位時間。

就緒佇列

由於P3已經完成,因此它將被終止並且不會被新增到就緒佇列中。 下一個進程將執行P4。

P4 P5 P1 P6 P2
1 5 1 4 2

甘特圖

之後,P1,P2和P3,P4將被執行。 它的爆發時間只有1個單位,與時間量相比更小,因此它會完成。

就緒佇列

就緒佇列中的下一個進程是P5,有5個單位的突發時間。 由於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將被執行直至完成。

完成時間,週轉時間和等待時間將按下表所示計算。

周轉時間 = 完成時間 - 到達時間
等待時間 = 週轉時間 - 爆發時間
進程ID 到達時間 爆發時間 完成時間 周轉時間 等待時間
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個單位