常見的作業系統程序排程演算法

2021-07-27 04:11:23 字數 3345 閱讀 1820

一、先來先服務和短作業(程序)優先排程演算法

1、先來先服務排程演算法

先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法可用於作業排程也可以程序排程。擋在作業排程該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體中為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採用

fcfs

時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,位置分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機。

2、短作業(程序)優先排程演算法

短作業優先排程演算法sjf,是指對短作業或程序優先排程的演算法。它們可以分別用於作業排程和程序排程。短作業優先的排程演算法則是從就緒佇列中選出乙個估計執行時間最短的作業,將它們你調入記憶體執行。而短程序優先排程演算法則是從就緒佇列中選出乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行並一直執行到完畢,或發生某事件而被阻塞處理機時在重新排程。

二、高優先權排程演算法

1、優先權排程演算法的型別

1)非搶占優先權演算法

在這種方式下,系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成;或因發生某事件使該程序放棄處理機時,系統可再將處理機重新分配給另一一優先權最高的程序。這種排程演算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。

2)搶占式優先權排程演算法

在這種方式下,系統同樣是把處理機分配給優先權最高的程序,使之執行。但在其執行期間,只要又出現了另乙個其優先權更高的程序,程序排程程式就立即停止當前程序(原優先權最高的程序

)的執行,重新將處理機分配給新到的優先權最高的程序。因此,在採用這種排程演算法時,是每當系統中出現乙個新的就緒程序

i時,就將其優先權

pi與正在執行的程序

j的優先權

pj進行比較。如果pi≤

pj,原程序

pj便繼續執行;但如果是

pi>pj

,則立即停止

pj的執行,做程序切換,使

i程序投入執行。顯然,這種搶占式的優先權排程演算法能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對效能要求較高的批處理和分時系統中。

2、高響應比優先排程演算法

在批處理系統中,短作業優先演算法是一種比較好的演算法,其主要的不足之處是長作業的執行得不到保證。如果我們能為每個作業引入前面所述的動態優先權,並使作業的優先順序隨著等待時間的增加而以速率a提高,則長作業在等待一定的時間後,必然有機會分配到處理機。該優先權的變化規律可描述為:

由於等待時間與服務時間之和就是系統對該作業的響應時間,故該優先權又相當於響應比rp。據此,又可表示為:

由上式可以看出

(1)如果作業的等待時間相同,則要求服務時間越段,其優先權越高,因而改演算法有利於短作業。

(2)當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。

(3)對於長作業,作業的優先順序可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先順序便可公升到很高,從而也可獲得處理機。簡言之,該演算法既照顧了短作業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該演算法實現了一種較好的折衷。當然,在利用該演算法時,每要進行排程之前,都須先做響應比的計算,這會增加系統開銷。

三、基於時間片的輪轉排程演算法

1、時間片輪轉法

在早期的時間片輪轉法中,系統將所有的就緒程序按先來先服務的原則排成乙個佇列,每次排程時,把cpu分配給隊首程序,並令其執行乙個時間片。時間片的大小從幾

ms到幾百

ms。當執行的時間片用完時,由乙個計時器發出時鐘中斷請求,排程程式便據此訊號來停止該程序的執行,並將它送往就緒佇列的末尾;然後,再把處理機分配給就緒佇列中新的隊首程序,同時也讓它執行乙個時間片。這樣就可以保證就緒佇列中的所有程序在一給定的時間內均能獲得一時間片的處理機執行時間。換言之,系統能在給定的時間內響應所有使用者的請求。

2、多級反饋佇列排程演算法

前面介紹的各種用作程序排程的演算法都有一定的侷限性。如短程序優先的排程演算法,僅照顧了短程序而忽略了長程序,而且如果並未指明程序的長度,則短程序優先和基於程序長度的搶占式排程演算法都將無法使用。而多級反饋佇列排程演算法則不必事先知道各種程序所需的執行時間,而且還可以滿足各種型別程序的需要,因而它是目前被公認的一種較好的程序排程演算法。在採用多級反饋佇列排程演算法的系統中,排程演算法的實施過程如下所述。

(1)應設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列的優先順序最高,第二個佇列次之,其餘各佇列的優先權逐個降低。該演算法賦予各個佇列中程序執行時間片的大小也各不相同,在優先權愈高的佇列中,為每個程序所規定的執行時間片就愈小。例如,第二個佇列的時間片要比第乙個佇列的時間片長一倍,……,第i+1

個佇列的時間片要比第

i個佇列的時間片長一倍。

(2)當乙個新程序進入記憶體後,首先將它放入第一佇列的末尾,按fcfs原則排隊等待排程。當輪到該程序執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在乙個時間片結束時尚未完成,排程程式便將該程序轉入第二佇列的末尾,再同樣地按

fcfs

原則等待排程執行;如果它在第二佇列中執行乙個時間片後仍未完成,再依次將它放入第三佇列,……,如此下去,當乙個長作業(程序

)從第一佇列依次降到第

n佇列後,在第

n佇列便採取按時間片輪轉的方式執行。

(3)僅當第一佇列空閒時,排程程式才排程第二佇列中的程序執行;僅當第1~

(i-1)

佇列均空時,才會排程第

i佇列中的程序執行。如果處理機正在第

i佇列中為某程序服務時,又有新程序進入優先權較高的佇列(第

1~(i-1)

中的任何乙個佇列

),則此時新程序將搶占正在執行程序的處理機,即由排程程式把正在執行的程序放回到第

i佇列的末尾,把處理機分配給新到的高優先權程序。

四、銀行家演算法

我們可以把

作業系統

看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。

為保證資金的安全,銀行家規定:

(1) 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客;

(2) 顧客可以分期貸款,但貸款的總數不能超過最大需求量;

(3) 當銀行家現有的資金不能滿足顧客尚需的貸款數額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間裡得到貸款;

(4) 當顧客得到所需的全部資金後,一定能在有限的時間裡歸還所有的資金

.作業系統

按照銀行家制定的規則為程序分配資源,當程序首次申請資源時,要測試該程序對資源的最大需求量,如果系統現存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當程序在執行中繼續申請資源時,先測試該程序本次申請的資源數是否超過了該資源所剩餘的總量。若超過則拒絕分配資源,若能滿足則按當前的申請量分配資源,否則也要推遲分配。

常見的作業系統程序排程演算法

一 先來先服務和短作業 程序 優先排程演算法 1 先來先服務排程演算法 先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源...

作業系統 程序排程演算法

cpu利用率 cpu忙碌的時間佔總時間的比例 利 用率 忙碌的 時間總時 間利用率 frac 利用率 總時 間忙碌的 時間 系統吞吐量 單位時間完成作業或程序的數量 吞 吐量 完成的 作業數量 總時 間吞吐量 frac 吞吐量 總時 間完成的 作業數量 周轉時間 完成作業需要花費的總時間 周 轉時 ...

作業系統的程序排程演算法

作業系統的程序排程也稱 dispatcher,其實簡單來說作業系統的程序排程不外乎人類社會的兩大原則 先來後到和優先順序,乙個良好的任務排程演算法主要體現在以下幾個方面 公平的保證每個程序得到合理的cpu時間 高效的使cpu保持忙碌狀態即總有程序在cpu上執行 使互動使用者的響應時間盡可能短 周轉時...