linux 幾種常見的程序排程演算法

2021-07-13 12:23:05 字數 1756 閱讀 2129

先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機。演算法總是把處理機分配給最先進入就緒佇列的程序,乙個程序一旦分得處理機,便一直執行下去,直到該程序完成或阻塞時,才釋放處理機。

缺點:比較有利於長作業,而不利於短作業。 有利於cpu繁忙的作業,而不利於i/o繁忙的作業。

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

缺點:長作業的執行得不到保證。

3 輪轉法(roundrobin)

將系統中所有的就緒程序按照fcfs原則,排成乙個佇列。

每次排程時將cpu分派給隊首程序,讓其執行乙個時間片。時間片的長度從幾個ms到幾百ms。

在乙個時間片結束時,發生

時鐘中斷

。排程程式據此暫停當前程序的執行,將其送到就緒

佇列的末尾

,並通過

上下文切換

執行當前的隊首程序。 程序可以未使用完乙個時間片,就出讓cpu(如阻塞)。

4 多級反饋佇列演算法

設定多個就緒佇列,分別賦予不同的優先順序,如逐級降低,佇列1的優先順序最高。每個佇列執行時間片的長度也不同,規定優先順序越低則時間片越長,如逐級加倍。2 新程序進入記憶體後,先投入佇列1的末尾,按fcfs演算法排程;若按佇列1

乙個時間片未能執行完,則降低投入到佇列2的末尾,同樣按fcfs演算法排程;如此下去,降低到最後的佇列,則

按"時間片輪轉

"演算法排程直到完成。僅當較高優先順序的隊列為空,才排程較低優先順序的佇列中的程序執行。如果程序執行時有新程序進入較高優先順序的佇列,則搶先執行新程序,並把被搶先的程序投入原佇列的末尾。

程序排程的效能評價:

程序排程雖然是在系統內部的低階排程,但程序排程的優劣直接影響作業排程的效能。那麼,怎樣評價程序排程的優劣呢?反映作業排程優劣的周轉時間和平均周轉時間只在某種程度上反映了程序排程的效能,例如,其執行時間部分中實際上包含有程序等待(包括就緒狀態時的等待)時間,而程序等待時間的多少是要依靠程序排程策略和等待事件何時發生等來決定的。因此,程序排程效能的商量是作業系統設計的乙個重要指標。我們說程序排程效能的衡量方法可分為定形和定量兩種。在定形衡量方面,首先是排程的可靠住。包括一次程序排程是否可能引起資料結構的破壞等。這要求我們對排程時機的選擇和儲存cpu現場十分謹慎。另外,簡潔性也是衡量程序排程的乙個重要指標,由於排程程式的執行涉及到多個程序和必須進行上下文切換,如果排程程式過於繁瑣和複雜,將會耗去較大的系統開銷。這在使用者程序呼叫系統呼叫較多的情況下,將會造成響應時間大幅度增加。程序排程的定量評價包括cpu的利用率評價、程序在就緒佇列中的等待時間與執行時間之比等。實際上由於程序進入就緒佇列的隨機模型很難確定,而且程序上下文切換等也將影響程序的執行

效率,ll而對程序排程進行解析是很困難的。一般情況下,大多利用模擬或測試系統響應時間的方法來評價程序排程的效能。

Linux 幾種常見的程序排程

先來先服務 fcfs 排程演算法即可適用於作業排程,也可以適用於程序排程。當此演算法在作業排程中時,它每次選取乙個或多個最先進入該佇列的作業,將它們調入記憶體,分配資源,建立程序,然後放入就緒佇列。在程序排程中,就是每次選取就緒佇列中最先進入該佇列的程序,為之分配處理機,使它投入執行。只有該程序執行...

常見的幾種程序排程演算法

程序排程概念 作業系統必須為多個,嗎程序可能有競爭的請求分配計算機資源。對處理器而言,可分配的資源是在處理器上的執行時間,分配途徑是排程。排程功能必須設計成可以滿足多個目標,包括公平 任何程序都不會餓死 有效地使用處理器時間和低開銷。此外,排程功能可能需要為某些程序的啟動或結束考慮不同的優先順序和實...

常見的幾種程序排程演算法

以上這幾種演算法主要關心對使用者的公平性 平均周轉時間 平均等待時間等評價系統整體效能的指標,但是不關心 響應時間 也並不區分任務的緊急程度,因此對於使用者來說,互動性是很糟糕的。所示這些演算法一般適用於早期的批處理系統,當然,fcfs演算法也常結合其他的演算法來使用,在現在也扮演著很重要角色。就緒...