在非先佔優先順序排程中,進程根據分配給它們的優先順序編號進行排程。 一旦進程被安排好了,它就會執行直到完成。 通常,優先順序數越低,進程的優先順序越高。 人們可能會對優先順序數位感到困惑,因此在GATE中,明確提到哪一個是最高優先順序,哪一個是最低優先順序。
範例
在例子中,有7個進程:P1
,P2
,P3
,P4
,P5
,P6
和P7
。 它們的優先順序,到達時間和爆發時間在表中給出。
進程ID | 優先順序 | 到達時間 | 爆發時間 |
---|---|---|---|
1 | 2 | 0 | 3 |
2 | 6 | 2 | 5 |
3 | 3 | 1 | 4 |
4 | 5 | 4 | 2 |
5 | 7 | 6 | 9 |
6 | 4 | 5 | 4 |
7 | 10 | 7 | 10 |
我們可以根據非搶先優先順序排程來準備甘特圖。
進程P1在時間0到達,突發時間為3個單位,優先順序為2。由於沒有其他進程到目前為止,因此作業系統會立即安排它。
同時執行P1,還有兩個進程P2和P3到達。 由於P3的優先順序為3,因此CPU將通過P2執行P3。
同時執行P3,所有進程都可以在就緒佇列中使用。 優先順序最低的進程將被優先考慮。 由於P6將優先順序編號分配為4,因此它將在P3之後執行。
在P6之後,P4在可用進程中具有最小優先順序編號; 它會在整個爆發時間執行。
由於所有作業都在就緒佇列中可用,因此所有作業都將根據其優先順序執行。 如果兩個作業的優先順序編號相似,則會執行最短到達時間的編號。
從GANTT圖表中,可以確定每個進程的完成時間。 周轉時間,等待時間和響應時間將被確定。
周轉時間 = 完成時間 - 到達時間
等待時間 = 週轉時間 - 爆發時間
進程Id | 優先順序 | 到達時間 | 爆發時間 | 完成時間 | 周轉時間 | 等待時間 | 響應時間 |
---|---|---|---|---|---|---|---|
1 | 2 | 0 | 3 | 3 | 3 | 0 | 0 |
2 | 6 | 2 | 5 | 18 | 16 | 11 | 13 |
3 | 3 | 1 | 4 | 7 | 6 | 2 | 3 |
4 | 5 | 4 | 2 | 13 | 9 | 7 | 11 |
5 | 7 | 6 | 9 | 27 | 21 | 12 | 18 |
6 | 4 | 5 | 4 | 11 | 6 | 2 | 7 |
7 | 10 | 7 | 10 | 37 | 30 | 18 | 27 |
平均等待時間=(0 + 11 + 2 + 7 + 12 + 2 + 18)/ 7 = 52/7單位