搶先式優先順序排程


在搶佔式優先順序排程中,在進程到達就緒佇列時,其優先順序與就緒佇列中存在的其他進程的優先順序以及CPU在該點執行的優先順序進行比較。 在所有可用的進程中具有最高優先順序的那個將被賦予CPU。

搶先優先順序排程和非搶佔優先順序排程之間的區別在於,在搶先優先順序排程中,正在執行的作業可以在更高優先順序作業到達時停止。

一旦所有作業在就緒佇列中可用,演算法將表現為非搶占式優先順序排程,這意味著計劃的作業將執行直至完成並且不會執行搶占。

範例

有7個過程P1,P2,P3,P4,P5,P6和P7給出。 下表列出了他們各自的優先順序,到達時間和爆發時間。

進程Id 優先順序 到達時間 爆發時間
1 2(L) 0 1
2 6 1 7
3 3 2 3
4 5 3 6
5 4 4 5
6 10(H) 5 6
7 9 15 8

甘特圖製備

在時間0,P1以1單位的爆發時間和優先順序2到達。由於沒有其他進程可用,因此這將被安排到下一個作業到達或完成(以較小者為準)。

在時間1,P2到達。 P1已經完成執行,此時沒有其他進程可用,因此作業系統必須安排它,而不管分配給它的優先順序如何。

下一個進程P3在時間單元2到達,P3的優先順序高於P2。 因此,P2的執行將被停止,並且P3將被安排在CPU上。

在執行P3期間,還有三個進程P4,P5和P6可用。 因為,所有這三個優先順序都低於執行過程,因此PS無法搶佔進程。 P3將完成其執行,然後P5將按照可用進程中的優先順序排列。

同時執行P5,所有進程都可以在就緒佇列中使用。 此時,演算法將開始表現為非搶占式優先順序排程。 因此,現在,一旦所有進程在就緒佇列中都可用,作業系統就會將進程的優先順序最高並執行該進程直到完成。 在這種情況下,P4將按計劃執行,直至完成。

由於P4已完成,因此就緒佇列中具有最高優先順序的其他進程為P2。 因此P2將在下一個時間安排。

P2被給予CPU直到完成。 由於其剩餘的爆發時間為6個單位,因此P7將在此之後安排。

唯一剩下的進程是P6,其優先順序最低,作業系統除非執行它,否則別無選擇。 這將在最後執行。

每個過程的完成時間在GANTT圖表的幫助下確定。 周轉時間和等待時間可以通過以下公式計算。

周轉時間 = 完成時間 - 到達時間
等待時間 = 轉身時間 - 爆發時間
進程Id 優先順序 到達時間 爆發時間 完成時間 周轉時間 等待時間
1 2 0 1 1 1 0
2 6 1 7 22 21 14
3 3 2 3 5 3 0
4 5 3 6 16 13 7
5 4 4 5 10 6 1
6 10 5 15 45 40 25
7 9 6 8 30 24 16

平均等待時間=(0 + 14 + 0 + 7 + 1 + 25 + 16)/ 7 = 63/7 = 9個單位