1. 程式人生 > >排程演算法的介紹及優缺點

排程演算法的介紹及優缺點

排程演算法是根據系統的資源分配策略所規定的資源分配演算法。有的排程演算法適用於作業排程,有的適用於程序排程,有的兩者都適用。

先了解幾個術語
到達時間、服務時間、開始時間
完成時間、等待時間
週轉時間:完成時間-到達時間
帶權週轉時間:週轉時間/服務時間

一、先來先服務(FCFS)/先進先出(FIFO)排程演算法
(1)概念:按照作業/程序進入系統的先後次序進行排程,先進入系統者先排程;即啟動等待時間最長的作業/程序。是一種最簡單的排程演算法,即可用於作業排程,也可用於程序排程

(2) 先來先服務(先進先出)優缺點
* 比較有利於長作業(程序),而不利於短作業(程序)
* 有利於CPU繁忙型作業(程序) ,而不利於I/O繁忙型作業(程序)
* 用於批處理系統,不適於分時系統
這裡寫圖片描述

二、短作業優先排程演算法(SJF)

1、概念:從佇列中選出一個估計執行時間最短的作業優先排程,即可用於作業排程,也可用於程序排程

2、SJ(P)F排程演算法也存在不容忽視的缺點
*對長作業不利。嚴重的是,若一長作業(程序)進入系統的後備佇列(就緒佇列),由於排程程式總是優先排程那些(即使是後進來的)短作業(程序),將導致長作業(程序)長期不被排程——飢餓
*完全未考慮作業(程序)的緊迫程度,因而不能保證緊迫性作業(程序)會被及時處理
*由於作業(程序)的長短只是根據使用者所提供的估計執行時間而定的,而使用者又可能會有意或無意地縮短其作業的估計執行時間,致使該演算法不一定能真正做到短作業優先排程。
這裡寫圖片描述

三、高優先權排程演算法
即可用於作業排程,也可用於程序排程

1、優先排程演算法的型別
(1)非搶佔式優先權排程演算法
特點:系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成,或因發生某事件使該程序放棄處理機時,系統才將處理機重新分配給另一優先權最高的程序
主要用於批處理系統中,也可用於某些對實時性要求不嚴的實時系統中
(2)搶佔式優先權排程演算法
特點:把處理機分配給優先權最高的程序,但在執行期間,只要出現另一個優先權更高的程序,則程序排程程式就立即停止當前程序的執行,並將處理機分配給新到的優先權最高的程序
注意:只要系統中出現一個新的就緒程序,就進行優先權比較
該排程演算法,能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對效能要求較高的批處理和分時系統中

2、優先權型別
高優先權排程演算法,需要比較作業或程序的優先順序,所以我們需要了解一下優先順序
優先權分為靜態優先權、動態優先權
(1)靜態優先權
靜態優先權在建立程序時確定,且在程序的整個執行期間保持不變。一般地,優先權是利用某一範圍內的一個整數來表示的,例如,0∼7或0∼255, 又把該整數稱為優先數
確定程序優先權的依據有如下三個方面:
程序型別:系統程序的優先權高於一般使用者程序。
程序對資源的需求:如程序的估計執行時間及記憶體需要量少的程序,應賦予較高的優先權。
使用者要求:由使用者程序的緊迫程度和使用者所付費用的多少來確定優先權。
(2)動態優先權
概念:在建立程序時賦予的優先權是隨程序的推進或隨其等待時間的增加而改變,以獲得更好的排程效能。可規定,在就緒佇列中的程序,隨其等待時間的增長,其優先權以速率a提高
特徵:具有相同優先權初值的程序,則最先進入就緒佇列,其將因其動態優先權變得最高而優先獲得處理機,此即FCFS演算法
具有各不相同的優先權初值的就緒程序,則優先權初值低的程序,在等待了足夠的時間後,其優先權便可能升為最高,從而可以獲得處理機
注意:當採用搶佔式優先權排程演算法時,如果再規定當前程序的優先權以速率b下降,則可防止一個長作業長期地壟斷處理機

四、高響應比優先排程演算法
(1)概念:高響應比優先排程演算法既考慮作業的執行時間也考慮作業的等待時間,綜合了先來先服務和最短作業優先兩種演算法的特點。
該演算法中的響應比是指作業等待時間與執行比值,響應比公式定義如下:
響應比 =(等待時間+要求服務時間)/ 要求服務時間,即RR=(w+s)/s=1+w/s,因此響應比一定是大於1的。
(2)優缺點
優點:等待時間相同的作業,則要求服務的時間愈短,其優先權愈高,——對短作業有利
要求服務的時間相同的作業,則等待時間愈長,其優先權愈高,——是先來先服務
長作業,優先權隨等待時間的增加而提高,其等待時間足夠長時,其優先權便可升到很高, 從而也可獲得處理機——對長作業有利
是一種折衷,既照顧了短作業,又考慮了作業到達的先後次序,又不會使長作業長期得不到服務。
缺點:要進行響應比計算,增加了系統開銷

五、簡單的時間片輪轉法(RR—Round Robin)
(1)概念:系統將所有的就緒程序按先來先服務的原則排成一個佇列,每次排程時,把CPU分配給隊首程序,並令其執行一個時間片;當執行的時間片用完時,由一個計時器發出時鐘中斷請求,排程程式便停止該程序的執行,並將其放就緒佇列尾;然後,再把處理機分配給就緒佇列中新的隊首;時間片的大小從幾ms到幾百ms
(2)缺點:緊迫任務響應慢。
UNIX中採用:時間片+優先權
(3)時間片選取
太小,會頻繁發生中斷、程序上下文切換,增加系統開銷,但利於短作業
太大,退化成FCFS
——時間片應該略大於一次典型互動的時間