先來先服務演算法
短作業優先演算法
最高響應比優先排程演算法
評價作業排程演算法的優劣,通常看平均周轉時間和帶權周轉時間
顧名思義,先來先服務演算法就是先來的作業先排程執行,後來的後執行。和佇列的先進先出的意思是一樣的。不過先來先服務演算法很少單獨使用,都是和其他演算法一起結合使用。
我們來計算 a 和 b 的周轉時間和帶權周轉時間(c,d 兩個的計算類似)。
比如 a 的周轉時間就是t完成 - t到達,也就是 1 (個時間單位)。帶權周轉時間就是 1 / 1 = 1。
b 的周轉時間是 101 - 1 = 100,帶權周轉時間,100 / 100 = 1。
下面給出全部的周轉時間和帶權周轉時間
該演算法操作最簡單,同時看起來也是最公平,因此在系統中都有應用,但是它沒有考慮作業執行時間的長短,如果最先到達的作業需要較長的時間,而稍後到達的作業只需要很短的執行時間,就會導致短作業的長時間等待,使短作業的帶權周轉的時間增大,而長作業的帶權周轉時間較小,因此造成長短作業處於事實上的不公平狀態。
短作業排程演算法的核心在於,執行時間越短的作業就先執行。
這裡有兩個需要注意的地方:
首先,第一到達的作業一定先執行,因為經常題目中是給出所有的作業,很多初學者以為直接從中選取短作業。
要注意,在後續比較作業長短的時候,要看作業是否到達,就是上圖的到達時間,沒有到達的作業是不能比較的。
例項:這個例項包含了先來先服務演算法(兩者的比較)
這裡講 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 的優先順序更高。
該演算法等待時間越長,響應比越高,因此,等待時間長的作業將優先獲得執行,執行時間越長,響應比越低,因此,執行時間長的作業優先順序將降低,這樣就照顧了那些執行時間少而等待時間長的作業,但是每個作業的響應比隨時都在發生變化,因此要不斷的重新計算,如何確定重新計算的時間間隔是乙個難處理的問題,時間間隔太短,將導致大量的計算開銷,時間間隔太長,響應比的作用會下降。
一種既有利於短小作業又兼顧到長作業的作業排程演算法是( )。
a.先來先服務
b.輪轉
c.最高響應比優先
d.均衡排程
正確答案:c
答案解析:
響應比最高者優先演算法綜合考慮作業的等待時間和計算時間,計算時間短的作業容易得到較高的響應比,可能被選中。但是,乙個計算時間長的作業在等待了相當長的時間後,也將獲得較高的響應比。
論述各種不同排程演算法的優劣
排程演算法是指根據系統的資源分配策略所規定的資源分配演算法。而選擇排程方式和演算法的若干準則如下 1 面向使用者的準則 周轉時間短 響應時間快 截止時間的保證 優先權準則。2 面向系統的準則 系統吞吐量 處理機利用率好 各類資源平衡利用。3 最優準則 最大的cpu利用率 最大的吞吐量 最短的周轉時間...
常見的作業排程演算法
評價作業排程演算法的優劣,通常看平均周轉時間和帶權周轉時間 周轉時間 作業完成時間 作業到達時間 平均周轉時間 作業完成時間 作業到達時間 作業數量 帶權周轉時間 作業周轉時間 作業服務時間 顧名思義,先來先服務演算法就是先來的作業先排程執行,後來的後執行。和佇列的先進先出 的意思是一樣的。不過先來...
Linux CFS排程演算法的理解
在加權的情況下,任務按照加權比例同時進行 例如a程序權重2,b程序權重1,a程序完成50 b程序應該完成25 加權後的實際分配的時間 排程的總時間 該程序權重 總權重 那麼我們就可以得到公式 程序實際分配時間 應該分配時間 排程的總時間 程序權重 總權重 程序應該分配時間 程序實際分配時間 應該分配...