程序排程演算法

2021-10-04 19:47:22 字數 2482 閱讀 7350

一 . 優先排程演算法

1. 先來先服務演算法(fcfs)

當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個先進入該隊 列的作業,將它們調入記憶體,為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採 用 fcfs 演算法時,則每次排程是從就緒佇列中選擇乙個先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機,特點是:演算法比較 簡單,可以實現基本上的公平。

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

短作業優先(sjf)的排程演算法是從後備佇列中選擇乙個或若干個估計執行時間短的作業,將它們 調入記憶體執行。而短程序優先(spf)排程演算法則是從就緒佇列中選出乙個估計執行時間短的程序, 將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重 新排程。該演算法未照顧緊迫型作業。

二 . 高優先權優先排程演算法

為了照顧緊迫型作業,使之在進入系統後便獲得優先處理,引入了高優先權優先(fpf)排程 演算法。當把該演算法用於作業排程時,系統將從後備佇列中選擇若干個優先權高的作業裝入記憶體。 當用於程序排程時,該演算法是把處理機分配給就緒佇列中優先權高的程序。

1. 非搶占式優先權演算法

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

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

在這種方式下,系統同樣是把處理機分配給優先權高的程序,使之執行。但在其執行期間,只 要又出現了另乙個其優先權更高的程序,程序排程程式就立即停止當前程序(原優先權高的程序) 的執行,重新將處理機分配給新到的優先權高的程序。顯然,這種搶占式的優先權排程演算法能 更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的實時系統中,以及對效能要求較高的批 處理和分時系統中。

3.高響應比優先排程演算法

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

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

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

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

時間片輪轉法 在早期的時間片輪轉法中,系統將所有的就緒程序按先來先服務的原則排成乙個佇列,每次排程 時,把cpu 分配給隊首程序,並令其執行乙個時間片。時間片的大小從幾ms 到幾百ms。當執行 的時間片用完時,由乙個計時器發出時鐘中斷請求,排程程式便據此訊號來停止該程序的執行, 並將它送往就緒佇列的末尾;然後,再把處理機分配給就緒佇列中新的隊首程序,同時也讓它執 行乙個時間片。這樣就可以保證就緒佇列中的所有程序在一給定的時間內均能獲得一時間片的處 理機執行時間。

多級反饋佇列排程演算法

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

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

(3) 僅當第一佇列空閒時,排程程式才排程第二佇列中的程序執行;僅當第 1~(i-1)佇列均空時, 才會排程第 i 佇列中的程序執行。如果處理機正在第 i 佇列中為某程序服務時,又有新程序進入優 先權較高的佇列(第 1~(i-1)中的任何乙個佇列),則此時新程序將搶占正在執行程序的處理機,即 由排程程式把正在執行的程序放回到第i佇列的末尾,把處理機分配給新到的高優先權程序。

在多級反饋佇列排程演算法中,如果規定第乙個佇列的時間片略大於多數人機互動所需之處理時間 時,便能夠較好的滿足各種型別使用者的需要。

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...

程序排程演算法

先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...