在以下範例中,有六個進程分別命名為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個單位