關於程序排程演算法

2021-09-22 14:12:37 字數 3146 閱讀 1737

什麼是程序排程?

當計算機系統處於就緒狀態的使用者程序數多於cpu數時,就會產生多個程序或執行緒同時競爭cpu的結果。假設現在只有乙個cpu可用,那麼作業系統就必須選擇下乙個要執行的程序。完成這種選擇工作的這一部分稱為排程程式,該程式使用的演算法稱為排程演算法。儘管有一些不同,但許多適用於程序排程的處理方法也同樣適用於執行緒排程。當核心管理執行緒的時候,排程經常是按執行緒級別的,與執行緒所屬的程序基本或根本沒有關聯。

什麼時候進行排程?

1、 在建立乙個新程序之後,需要決定是執行父程序還是執行子程序。由於這兩種程序都處於就緒狀態,所以這是一種正常的排程決策,可以任意決定。

2、在乙個程序退出時必須做出排程決策。乙個程序不再執行,所以必須從就緒程序集中選擇另外某個程序。如果沒有就緒的程序,通常會執行乙個系統提供的空閒程序。

3、當乙個程序在阻塞i/o和訊號量上或由於其他原因阻塞時,必須選擇另乙個程序執行。

4、在乙個i/o中斷發生時,必須做出排程決策。如果中斷來自i/o裝置,而該裝置現在完成了工作,某些阻塞的等待該i/o程序就成為可執行的就緒程序了。是否讓新就緒的程序執行,這取決於排程程式的決定 ,或者讓中斷發生時執行的程序繼續執行,或者應該讓某個其他程序執行。

程序排程演算法?

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

先來先服務排程演算法(fcfs)排程演算法是一種最簡單的排程演算法。在程序排程中採用先來先服務演算法時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使它能夠執行。該程序一直執行到完成或發生某件事而阻塞後才放棄處理機。

2、短程序優先排程演算法(spn)

短程序優先演算法(spf),是指對短程序優先排程的演算法。短程序優先排程演算法是從就緒佇列中選出乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新排程。

3、優先權排程演算法(hpf)

最高優先權演算法(fpf)排程演算法,當再程序排程的時候,把處理機分配給就緒佇列中優先權最高的程序。這時,又可以進一步把該演算法分為以下兩種:

3.1、非搶占式優先權演算法

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

3.2、搶占式優先權排程演算法

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

4、高響亮比優先權演算法(hrn)

如果我們為每個程序引入動態優先權,並使程序的優先順序隨著等待時間的增加而提高,則長程序在等待一定時間後,必然有機會分配到處理機。

優先順序=(等待時間+要求服務時間)/要求服務時間

4.1、如果程序的等待時間相同,則要求服務時間越短,其優先權越高,這個演算法有利於短作業。

4.2、當要求服務的時間相同時,程序的優先權取決於等待時間,等待時間越長,其優先權越高,因而它實現的是先來先服務。

4.3、對於長程序,程序的優先順序可以隨著等待時間的增加而提高。當等待時間足夠長的時候,其優先順序就可以公升到很高,從而獲得處理機。這個演算法既照顧了短程序,又考慮了程序到達的先後次序,不會使長程序長期得不到服務。當然,在利用這個高響亮比優先權演算法排程之前都必須先做響應比的計算,這會增加系統開銷。

5、時間片輪轉法(rr)

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

6、多級反饋佇列排程演算法

短程序優先的排程演算法,僅僅照顧到了短程序,而忽略了長程序,而且如果沒有指定程序的長度的話,則短程序優先和基於程序長度的搶占式排程演算法都無法使用。而多級反饋排程演算法則不必事先知道各種程序所需要的執行時間,而且還可以滿足各種型別的程序的需要。

(1、應設定多個就緒佇列,並為各個佇列賦予不同的優先順序。第乙個佇列的優先順序最高,第二個佇列次之,之後的佇列優先順序逐漸降低。該演算法賦予各個佇列中程序執行的時間片的大小也不同,優先權最高的佇列中每個程序的時間片越小,優先順序小的佇列中的程序的時間片越長。

(2、當乙個新程序進入記憶體後首先將它當道第一隊的隊尾,按照先來先服務的規則排隊等待排程。當輪到該程序執行時,如果能在該時間片內完成,便可準備撤離系統。如果在乙個時間片結束時尚未完成,排程程式便將該程序轉到第二佇列的隊尾,再同樣的按照先來先服務的原則排程。如果他在第二佇列中執行乙個時間片還未完成的話,再一次放入第三個佇列,依次類推,直到它進入最後乙個佇列後,則一直在最後乙個佇列中採用時間片輪轉演算法進行排程。

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

7.實時排程演算法

(1)最早截止時間優先演算法。

誰完成任務的截止時間早,誰就先執行。好比我們在排隊買票的時

候,經常出現有人說,不好意思,我趕時間讓我先。

(2) 最低鬆弛度優先演算法

據任務的緊急程度判斷。任務越緊急,鬆弛度就越低,優先順序就越高
鬆弛度 = 必須完成的時間 - 本身執行時間 - 當前時間 

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

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

程序排程演算法

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

程序排程演算法

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