程序排程演算法

2021-08-21 01:22:51 字數 2003 閱讀 5803

程序排程:無論是批處理系統還是分時系統中,使用者程序數一般多於處理機數、這將導致他們互相爭奪處理機。另外,系統程序也需要使用處理機。這就要求程序排程需要按照一定的策略,動態的把處理機分配給處於就緒佇列中的某乙個程序,以使之執行。

程序的幾種狀態:

執行態→等待態 往往是由於等待外設,等待主存等資源分配或等待人工干預而引起的。

等待態→就緒態 則是等待的條件已滿足,只需分配到處理器後就能執行。

執行態→就緒態 不是由於自身原因,而是由外界原因使執行狀態的程序讓出處理器,這時候就變成就緒態。例如時間片用完,或有更高優先順序的程序來搶占處理器等。

就緒態→執行態 系統按某種策略選中就緒佇列中的乙個程序占用處理器,此時就變成了執行態

程序排程任務: 

(1)首先儲存當前程序的處理機的現場資訊

(2)按照演算法選取程序

(3)把處理器分配給程序。(將選中程序的程序控制塊內有關處理機現場現場的資訊裝入處理機相應暫存器中,程序控制處理機,使之從上次的斷點處恢復執行)

幾種基本排程演算法:

1,先來先先服務演算法:

是一種最簡單的排程演算法:總是從就緒佇列中選擇乙個或多個最先進入佇列的程序,為之分配處理機,使其投入執行。該程序直到執行完成或者阻塞時才放棄處理機。

2.基於優先順序排程:

程序都會關聯乙個優先順序,核心會首先將處理機分配優先順序高的程序。相同優先順序的程序則按照先來先服務的原則進行排程。(避免餓死問題:逐漸提高系統中長時間等待程序的優先順序)

3.短程序優先

從就緒佇列中選擇cpu執行期最短的程序為之分配處理機

4.輪轉法

前幾種演算法主要用於批處理系統,而不能作為分時系統的主排程演算法。分時系統中一般採用時間片輪轉法。

簡單輪轉法原理:

(1)系統將所有就緒程序按fcfs策略排成就緒佇列。系統每隔一段時間產生一次間斷,去啟用程序排程程式進行排程,把cpu分配給隊首程序,並令其執行乙個時間片

(3)若乙個時間片用完,計時器中斷處理程式被啟用,排程程式將它送往就緒佇列末尾。

多級反饋佇列排程演算法:

多級反饋佇列排程演算法則不必事先知道各種程序所需的執行時間,而且還可以滿足各種型別程序的需要,因而它是目前被公認的一種較好的程序排程演算法。在採用多級反饋佇列排程演算法的系統中,排程演算法的過程如下所述。

(1)應設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列的優先順序最高,第二個佇列次之,其餘各佇列的優先權逐個降低

。該演算法賦予各個佇列中程序執行時間片的大小也各不相同,在優先權愈高的佇列中,為每個程序所規定的執行時間片就愈小。例如,第二個佇列的時間片要比第乙個佇列的時間片長一倍,……,第i+1個佇列的時間片要比第i個佇列的時間片長一倍。

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

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

為提高系統吞吐量和縮短平均周轉時間而照顧短程序。

為獲得較好的i/o裝置利用率和縮短響應時間而照顧i/o型程序。

不必估計程序的執行時間,動態調節

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

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

程序排程演算法

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

程序排程演算法

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