Linux 幾種常見的程序排程

2021-08-29 04:07:35 字數 1130 閱讀 7981

先來先服務(fcfs)排程演算法即可適用於作業排程,也可以適用於程序排程。當此演算法在作業排程中時,它每次選取乙個或多個最先進入該佇列的作業,將它們調入記憶體,分配資源,建立程序,然後放入就緒佇列。在程序排程中,就是每次選取就緒佇列中最先進入該佇列的程序,為之分配處理機,使它投入執行。只有該程序執行到結束或者被阻塞無法執行後才放棄處理機,排程演算法選取下乙個程序。fcfs演算法簡單易行,是一種非搶占式策略,但效能卻不大好,因為在呼叫短程序並且對i/o資源呼叫平凡的程序時,按順序進行會浪費處理機的資源。

對預計「cpu執行期」最短的程序優先分配處理機,通常後來的短程序不搶先正在執行的程序。

該演算法的優點在於:相比fcfs演算法改善了cpu的平均周轉時間,和程序的平均等待時間,提高系統的吞吐量。

該演算法的缺點在於:長作業可能長時間都得不到處理機的使用權;未能依據程序的緊迫程度來劃分程序的優先順序;難以準確估計程序的執行時間。

該演算法的特性是讓所有程序等待的時間和享受服務的時間都公平公正。具體過程是:

此演算法可分為三步進行講解:

為了照顧緊迫程序,使之在進入系統後便獲得優先處理,引入了優先順序演算法。可進一步把該演算法分成如下兩種:

搶占式優先權排程演算法 :這種方式下,只要有程序比正在執行中程序的優先順序高,就可以直接打斷執行中的程序,系統給優先順序高的程序分配處理機。

該演算法是對fcfs方式和sjf方式的一種綜合平衡。fcfs方式只考慮每個作業的等待時間而未考慮執行時間的長短,而sjf方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種排程演算法在某些極端情況下會帶來某些不便。hrn排程策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。響應比r定義如下:

r =(w+t)/t = 1+w/t

其中t為該作業估計需要的執行時間,w為作業在後備狀態佇列中的等待時間。每當要進行作業排程時,系統計算每個作業的響應比,選擇其中r最大者投入執行。這樣,即使是長作業,隨著它等待時間的增加,w / t也就隨著增加,也就有機會獲得排程執行。這種演算法是介於fcfs和sjf之間的一種折中演算法。由於長作業也有機會投入執行,在同一時間內處理的作業數顯然要少於sjf法,從而採用hrn方式時其吞吐量將小於採用sjf法時的吞吐量。另外,由於每次排程前要計算響應比,系統開銷也要相應增加。

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

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

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

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

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

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