先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機。
演算法優點:易於理解且實現簡單,只需要乙個佇列(fifo),且相當公平
演算法缺點:比較有利於長程序,而不利於短程序,有利於cpu 繁忙的程序,而不利於i/o 繁忙的程序
短作業(程序)優先排程演算法,它作用於作業排程和程序排程。短作業優先是從後備佇列當中選擇乙個或者若干個執行時間最短的作業,調入記憶體當中執行。
短程序優先是從就緒程序佇列當中選出乙個時間最短的程序,將處理機分配給它,立即執行並且一直執行到完成,當發生其他問題的時候,這個時候就重新排程。
演算法優點:相比fcfs 演算法,該演算法可改善平均周轉時間和平均帶權周轉時間,縮短程序的等待時間,提高系統的吞吐量。
演算法缺點:對長程序非常不利,可能長時間得不到執行,且未能依據程序的緊迫程度來劃分執行的優先順序,以及難以準確估計程序的執行時間,從而影響排程效能。
優先順序排程演算法又被稱為優先權排程演算法,這個演算法既可以用於作業排程,也可以用於程序排程,這個演算法中的優先順序用於描述作業執行的緊迫程度。
在作業排程中,優先順序排程演算法每次從後備作業佇列中選擇優先順序最髙的乙個或幾個作業,將它們調入記憶體,分配必要的資源,建立程序並放入就緒佇列。在程序排程中,優先順序排程演算法每次從就緒佇列中選擇優先順序最高的程序,將處理機分配給它,使之投入執行。
根據新的更高優先順序程序能否搶占正在執行的程序,可將該排程演算法分為:
* 非剝奪式優先順序排程演算法。當某乙個程序正在處理機上執行時,即使有某個更為重要或緊迫的程序進入就緒佇列,仍然讓正在執行的程序繼續執行,直到由於其自身的原因而主動讓出處理機時(任務完成或等待事件),才把處理機分配給更為重要或緊迫的程序。
* 剝奪式優先順序排程演算法。當乙個程序正在處理機上執行時,若有某個更為重要或緊迫的程序進入就緒佇列,則立即暫停正在執行的程序,將處理機分配給更重要或緊迫的程序。
而根據程序建立後其優先順序是否可以改變,可以將程序優先順序分為以下兩種:
* 靜態優先順序。優先順序是在建立程序時確定的,且在程序的整個執行期間保持不變。確定靜態優先順序的主要依據有程序型別、程序對資源的要求、使用者要求。
* 動態優先順序。在程序執行過程中,根據程序情況的變化動態調整優先順序。動態調整優先順序的主要依據為程序占有cpu時間的長短、就緒程序等待cpu時間的長短。
高響應比優先排程演算法主要用於作業排程,是堆fcfs和sjf的一種平衡。
fcfs是只考慮每個作業的等待時間不考慮執行時間長短,而sjf是只考慮執行時間未考慮等待時間的長短。
所以高響應比同時考慮每個作業的等待時間和估計執行時間,在每次進行作業排程時,先計算後備作業佇列當中的每個作業響應比,然後找出響應比最高的作業投入執行。
響應比r定義如下: r =(w+t)/t = 1+w/t
其中t為該作業估計需要的執行時間,w為作業在後備狀態佇列中的等待時間。每當要進行作業排程時,系統計算每個作業的響應比,選擇其中r最大者投入執行。
演算法優點:由於長作業也有機會投入執行,在同一時間內處理的作業數顯然要少於sjf法,從而採用hrrn方式時其吞吐量將小於採用sjf 法時的吞吐量。
演算法缺點:由於每次排程前要計算響應比,系統開銷也要相應增加。
主要用於分時系統。這種演算法中,系統將所有的就緒程序按照到達時間先後次序排成乙個佇列,按照先來先服務的原則執行,但是僅僅只能執行乙個時間片,使用完乙個時間片的時間以後,即使程序並未完成其執行,也必須釋放出處理機給下乙個就緒的程序,而被剝奪的程序返回就緒佇列末尾重新排隊,等候再次執行。並且通過上下文切換執行當前的隊首程序,京城可以未使用完乙個時間片,就讓出處理機。
在整個過程中,時間片的大小尤為重要,時間片過大,那麼所有的程序都能在乙個時間片內執行完畢,則時間片輪轉演算法就會退化成為fcfs,如果太小,那麼程序之間頻繁切換,那麼處理機的開銷很大,真正用於執行使用者程序的時間將減小。因此時間片需要選擇恰當。
時間片大小的確定:
1. 系統對響應時間的要求
2. 就緒佇列中程序的數目
3. 系統的處理能力
演算法優點:時間片輪轉排程演算法的特點是簡單易行、平均響應時間短。
演算法缺點:不利於處理緊急作業。在時間片輪轉演算法中,時間片的大小對系統效能的影響很大,因此時間片的大小應選擇恰當。
多級反饋佇列排程演算法是一種cpu處理機排程演算法,unix作業系統採取的便是這種排程演算法。多級反饋佇列排程演算法可以兼顧多方面的系統目標。
多級反饋佇列排程演算法的實現思想如下:
* 1.應設定多個就緒佇列,並為各個佇列賦予不同的優先順序,第1級佇列的優先順序最高,第2級佇列次之,其餘佇列的優先順序逐次降低。
* 2.賦予各個佇列中程序執行時間片的大小也各不相同,在優先順序越高的佇列中,每個程序的執行時間片就越小。例如,第2級佇列的時間片要比第1級佇列的時間片長一倍, ……第i+1級佇列的時間片要比第i級佇列的時間片長一倍。
* 3.當乙個新程序進入記憶體後,首先將它放入第1級佇列的末尾,按fcfs原則排隊等待排程。當輪到該程序執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在乙個時間片結束時尚未完成,排程程式便將該程序轉入第2級佇列的末尾,再同樣地按fcfs 原則等待排程執行;如果它在第2級佇列中執行乙個時間片後仍未完成,再以同樣的方法放入第3級佇列……如此下去,當乙個長程序從第1級佇列依次降到第 n 級佇列後,在第 n 級佇列中便釆用時間片輪轉的方式執行。
* 4.僅當第1級隊列為空時,排程程式才排程第2級佇列中的程序執行;僅當第1 ~ (i-1)級佇列均為空時,才會排程第i級佇列中的程序執行。如果處理機正在執行第i級佇列中的某程序時,又有新程序進入優先順序較高的佇列(第 1 ~ (i-1)中的任何乙個佇列),則此時新程序將搶占正在執行程序的處理機,即由排程程式把正在執行的程序放回到第i級佇列的末尾,把處理機分配給新到的更高優先順序的程序。
多級反饋佇列的優勢有:
* 終端型作業使用者:短作業優先。
* 短批處理作業使用者:周轉時間較短。
* 長批處理作業使用者:經過前面幾個佇列得到部分執行,不會長期得不到處理
程序排程演算法(程序排程策略)
程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...
程序排程演算法
排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...
程序排程演算法
先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...