常見的程序排程演算法

2021-07-13 03:55:11 字數 2482 閱讀 6850

程序排程程式按一定的策略,動態地把處理機

分配給處於就緒佇列中的某乙個程序

,以使之執行。

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

原理:

系統將按照作業到達的先後次序來進行作業排程,或者說它是優先考慮在系統中等待時間最長的作業,而不管該作業所需執行時間的長短,從後備作業佇列中優先選擇幾個最先進入該佇列的作業,將他們調入記憶體,為他們分配資源和建立程序。然後把它放入就緒佇列。

當在程序排程中採用fcfs演算法時,每次排程是從就緒的程序佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直

執行到完成或發生某事件而組賽後,程序排程程式才將處理機分配給其他程序。

2.短作業優先

sjf)的排程演算法

原理:sjf演算法是以優先順序作業的長短來計算優先順序的,作業越短,其優先順序越高,作業的長短是以作業所要求的執行時間來衡量的。sjf演算法可以分別用於作業排程和程序排程。再把短作業優先排程演算法用於作業排程時,它將從外存的作業後背佇列張選擇若干個執行時間最短的作業,優先將他們調入記憶體執行。

3.優先順序排程演算法原理:

3.1  非搶占式優先順序排程演算法:一旦把處理及分配給就緒佇列中優先順序最高的程序後,該程序便一直執行下去直至完成。或者因該程序發生某事件而放棄處理機時,系統方可將處理機重新分配給另乙個優先順序最高的程序。

3.2  搶占式優先順序排程演算法: 把處理及分配給優先順序最高的程序,使之執行。但在其執行期間,只要出現了另乙個其優先順序跟高的程序,排程程式就將處理機分配給新的優先順序更高的程序。因此,在採用這種排程演算法時,每當系統中出現了乙個新的就緒程序i時,就將其優先順序pi與正在執行的程序j的優先順序pj進行比較,如果pi<=pj,原程序pj便繼續執行,但如果pi>pj,則立即停止pj的執行,進行程序切換,使i程序投入執行。

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

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

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

由上式可以看出:

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

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

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

5.輪轉排程演算法原理:

在rr排程演算法中,系統根據fcfs策略,將所有的就緒程序排成乙個就緒佇列,並設定每隔一定時間間隔(如30ms)即產生一次中斷,啟用系統中程序排程程式,完成一次排程,將cpu分配給隊首程序,令其執行。當該程序的時間片耗盡或執行完畢,系統在將cpu分配給新的隊首程序。由此,可保證就緒佇列中的所有程序在乙個確定的時間段內,都能夠獲得一次cpu執行。

6.多級反饋佇列演算法

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

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

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

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

常見程序排程演算法

程序排程 實質是一種資源分配。決定將cpu分配給就緒佇列中的某個程序。發生程序排程原因 1 正在執行的程序執行完畢 2 執行中的程序因發生i o請求或等事件而暫停執行 3 時間片用完 4 在程序通訊或同步過程中執行了某項原語操作,如p操作 wait操作 5 高優先順序進入。作業排程 簡單來說就是決定...

程序排程的常見演算法

1.程序排程的常見演算法 1 先來先服務排程演算法 fcfs,first come first server 處於就緒態的程序按先後順序鏈入到就緒佇列中,而fcfs排程演算法按就緒程序進入就緒佇列的先後次序選擇當前最先進入就緒佇列的程序來執行,直到此程序阻塞或結束,才進行下一次的程序選擇排程。fcf...

常見的程序排程演算法

適用場景 分時系統 基本原理 根據先來先服務策略,形成就緒佇列。分配時間片。關鍵時間片的分配長度是關鍵,如果分配太短則切換頻繁。如果太長,就退化成了先來先服務演算法。前言相對於輪轉片演算法,輪轉片是預設了所有程序的優先順序一樣,而優先順序演算法根據程序的優先順序進行 cpu 的分配 優先順序型別 靜...