標籤:平衡 特點 因此 指派 時間片輪轉法 feedback 處理 原則 不能
先來先服務 (FCFS,first come first served)
在所有調度演算法中,最簡單的是非搶佔式的FCFS演算法。
演算法原理:進程按照它們請求CPU的順序使用CPU.就像你買東西去排隊,誰第一個排,誰就先被執行,在它執行的過程中,不會中斷它。當其他人也想進入記憶體被執行,就要排隊等著,如果在執行過程中出現一些事,他現在不想排隊了,下一個排隊的就補上。此時如果他又想排隊了,只能站到隊尾去。
演算法優點:易於理解且實現簡單,只需要一個隊列(FIFO),且相當公平
演算法缺點:比較有利於長進程,而不利於短進程,有利於CPU 繁忙的進程,而不利於I/O 繁忙的進程
最短作業優先(SJF, Shortest Job First)
短作業優先(SJF, Shortest Job First)又稱為“短進程優先”SPN(Shortest Process Next);這是對FCFS演算法的改進,其目標是減少平均周轉時間。
演算法原理:對預計執行時間短的進程優先指派處理機。通常後來的短進程不搶先正在執行的進程。
演算法優點:相比FCFS 演算法,該演算法可改善平均周轉時間和平均帶權周轉時間,縮短進程的等待時間,提高系統的輸送量。
演算法缺點:對長進程非常不利,可能長時間得不到執行,且未能依據進程的緊迫程度來劃分執行的優先順序,以及難以準確估計進程的執行時間,從而影響調度效能。
最高響應比優先法(HRRN,Highest Response Ratio Next)
最高響應比優先法(HRRN,Highest Response Ratio Next)是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業的等待時間而未考慮執行時間的長短,而SJF方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種調度演算法在某些極端情況下會帶來某些不便。HRRN調度策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。這樣,即使是長作業,隨著它等待時間的增加,W / T也就隨著增加,也就有機會獲得調度執行。這種演算法是介於FCFS和SJF之間的一種折中演算法。
演算法原理:響應比R定義如下: R =(W+T)/T = 1+W/T
其中T為該作業估計需要的執行時間,W為作業在後備狀態隊列中的等待時間。每當要進行作業調度時,系統計算每個作業的響應比,選擇其中R最大者投入執行。
演算法優點:由於長作業也有機會投入運行,在同一時間內處理的作業數顯然要少於SJF法,從而採用HRRN方式時其輸送量將小於採用SJF 法時的輸送量。
演算法缺點:由於每次調度前要計算響應比,系統開銷也要相應增加。
時間片輪轉演算法(RR,Round-Robin)
該演算法採用剝奪策略。時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的演算法,又稱RR調度。每個進程被分配一個時間段,稱作它的時間片,即該進程允許啟動並執行時間。
演算法原理:讓就緒進程以FCFS 的方式按時間片輪流使用CPU 的調度方式,即將系統中所有的就緒進程按照FCFS 原則,排成一個隊列,每次調度時將CPU 指派給隊首進程,讓其執行一個時間片,時間片的長度從幾個ms 到幾百ms。在一個時間片結束時,發生時鐘中斷,發送器據此暫停當前進程的執行,將其送到就緒隊列的末尾,並通過環境切換執行當前的隊首進程,進程可以未使用完一個時間片,就出讓CPU(如阻塞)。
演算法優點:時間片輪轉調度演算法的特點是簡單易行、平均回應時間短。
演算法缺點:不利於處理緊急作業。在時間片輪轉演算法中,時間片的大小對系統效能的影響很大,因此時間片的大小應選擇恰當
怎樣確定時間片的大小:
時間片大小的確定
1.系統對回應時間的要求
2.就緒隊列中進程的數目
3.系統的處理能力
多級反饋隊列(Multilevel Feedback Queue)
多級反饋隊列調度演算法是一種CPU處理機調度演算法,UNIX作業系統採取的便是這種調度演算法。
多級反饋隊列調度演算法描述:
1、進程在進入待調度的隊列等待時,首先進入優先順序最高的Q1等待。
2、首先調度優先順序高的隊列中的進程。若高優先順序中隊列中已沒有調度的進程,則調度次優先順序隊列中的進程。例如:Q1,Q2,Q3三個隊列,只有在Q1中沒有進程等待時才去調度Q2,同理,只有Q1,Q2都為空白時才會去調度Q3。
3、對於同一個隊列中的各個進程,按照時間片輪轉法調度。比如Q1隊列的時間片為N,那麼Q1中的作業在經曆了N個時間片後若還沒有完成,則進入Q2隊列等待,若Q2的時間片用完後作業還不能完成,一直進入下一級隊列,直至完成。
4、在低優先順序的隊列中的進程在運行時,又有新到達的作業,那麼在運行完這個時間片後,CPU馬上分配給新到達的作業(搶佔式)。
在多級反饋隊列調度演算法中,如果規定第一個隊列的時間片略大於多數人機互動所需之處理時間時,便能夠較好的滿足各種類型使用者的需要。
進程調度演算法