評價作業排程演算法的優劣,通常看平均周轉時間和帶權周轉時間
周轉時間 = 作業完成時間 - 作業到達時間
平均周轉時間 = (作業完成時間 - 作業到達時間)/ 作業數量
帶權周轉時間 = 作業周轉時間 / 作業服務時間
顧名思義,先來先服務演算法就是先來的作業先排程執行,後來的後執行。和佇列的先進先出
的意思是一樣的。不過先來先服務演算法很少單獨使用,都是和其他演算法一起結合使用。
例項
我們來計算 a 和 b 的周轉時間和帶權周轉時間(c,d 兩個的計算就一樣了)。
比如 a 的周轉時間就是 t完成 - t到達,也就是 1 (個時間單位)。帶權周轉時間就是 1 / 1 = 1。
b 的周轉時間是 101 - 1 = 100,帶權周轉時間,100 / 100 = 1。
下面給出全部的周轉時間和帶權周轉時間
短作業排程演算法的核心在於,執行時間越短的作業就先執行。
這裡有兩個需要注意的地方:
1.首先,第一到達的作業一定先執行,因為經常題目中是給
出所有的作業,很多初學者以為直接從中選取短作業。
2.要注意,在後續比較作業長短的時候,要看作業是否到達,就是上圖的到達時間,沒
有到達的作業是不能比較的。
3. 短作業優先具有最短的平均周轉時間
例項:這個例項包含了先來先服務演算法(兩者的比較)
這裡講 a 和 d 兩個作業(因為 d 短作業優先)。
首先,a 作業是先到達的,毋庸置疑,先計算 a 。
a 周轉時間是 t完成 - t到達 = 4,帶權周轉是 4 / 4 = 1
我們觀察,當 a 作業完成的時候,已經過去了 4 個時間單位了。而b,c,d,e 的到達時間為 1,2,3,4。所以所有作業均已到達,這個時候可以比較哪個是短作業了。觀察服務時間,d 為 2 是最短的。
d 的周轉時間 6 - 3 = 3 , 帶權周轉時間 3 / 2 = 1.5 。其他的作業也是用同樣的方式計算。
我們分析上面的兩個演算法,先來先考慮的是作業的等待時間,而短作業考慮的是作業的運
行時間,都有優劣,但是如果把二者結合起來豈不是更好,這就是高響應比優先排程算
法。注意:該演算法的優先順序需要每執行乙個程序後重新計算一次。
優先順序的計算:
變換上式可以得到:優先權 = 1 + (等待時間 / 要求服務時間)
這個算式在考試分析中更常用。
例項
當 a 完成的時候,過去了 3 個單位時間(服務時間),此時只有 b 程序到達(b 的到達時間是 2)。
所以 b 的周轉時間 , 9 - 2 =7 。 帶權周轉時間 7 / 6 = 1.17。
再接著看,當 b 完成時,時間到達了 9 這個時間單位。而 c,d,e 都再 9 之前到達了。所以這個時候要看誰的優先順序高。
計算得到 c 的優先順序最高,所以先計算 c 周轉時間和平均周轉時間。計算方式同上。
同理,計算 d 和 e 的優先順序,計算得到 e 的優先順序更高。
同樣的方式計算下面的內容。
你可以把這個題的先來先服務演算法和短作業排程演算法也計算一下,最後可以得出誰的效率更高。
這是三個演算法在這道題上的比較
我們可以看到短作業排程演算法的效率更高。但是並不是說這個演算法是最好的,每個演算法有利有弊,需要看具體情況使用。
常見的作業排程和程序排程演算法
接下來我們分別講解一下幾種常見演算法以及它們適用的排程型別。演算法思想 演算法規則 適用排程型別 是否可以搶占 優點缺點 是否會飢餓 主要從公平的角度考慮 按照作業 程序到達的先後順序進行排程 即 優先考慮在系統中等待時間最長的作業 程序排程和作業排程 非搶占式演算法 滿足公平原則,且演算法容易實現...
常見的批處理作業排程演算法
1.先來先服務排程演算法 fcfs 就是按照各個作業進入系統的自然次序來排程作業。這種排程演算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的使用者不滿意,因為短作業等待處理的時間可能比實際執行時間長得多。2.短作業優先排程演算法 spf 就是優先排程並處理短...
作業排程演算法
1.先來先服務fcfs first come first serve 是最簡單的排程演算法,按先後順序進行排程。按照作業提交或程序變為就緒狀態的先後次序,分派cpu 當前作業或程序占用cpu,直到執行完或阻塞,才出讓cpu 非搶占方式 在作業或程序喚醒後 如i o完成 並不立即恢復執行,通常等到當前...