常見的作業排程演算法

2021-08-28 07:23:34 字數 2229 閱讀 9011

評價作業排程演算法的優劣,通常看平均周轉時間和帶權周轉時間

周轉時間 = 作業完成時間 - 作業到達時間

平均周轉時間 = (作業完成時間 - 作業到達時間)/ 作業數量

帶權周轉時間 = 作業周轉時間 / 作業服務時間

顧名思義,先來先服務演算法就是先來的作業先排程執行,後來的後執行。和佇列的先進先出

的意思是一樣的。不過先來先服務演算法很少單獨使用,都是和其他演算法一起結合使用。

例項

我們來計算 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完成 並不立即恢復執行,通常等到當前...