在多道程序設計系統中,內存中有多道程序運行,他們相互爭奪處理機這一重要的資源。
處理機調度就是從就緒隊列中,按照一定的算法選擇一個進程並將處理機分配給它運行,以實現進程並發地執行。
一、衡量調度策略的指標
衡量調度策略的最常用的幾個指標是:周轉時間、吞吐率、響應時間以及設備利用率等。
周轉時間是指將一個作業提交給計算機系統后到該作業的結果返回給用戶所需要的時間。
吞吐率是指在給定的時間內,一個計算機系統所完成的總工作量。
響應時間則是指從用戶向計算機發出一個命令到計算機把相應的執行結果返回給用戶所需要的時間。
設備利用率主要指輸入輸出設備的使用情況。
進程調度性能的衡量方法可分為定性和定量兩種。
二、作業的狀態及其轉換
一個作業從提交給計算機系統到執行結束退出系統,一般都要經歷提交、收容、執行和完成等4個狀態。
處理機調度可以分為4級:(1)作業調度:又稱高級調度。(2)交換調度:又稱中級調度。(3) 進程調度:又稱低級調度。(4) 線程調度。
三、作業調度性能衡量
周轉時間 = 運行時間 + 等待時間 = 作業完成時刻 - 作業到達時刻 ;
等待時間 = 上一個的周轉時間 - 距離上一個的到達時間 = 上一個的等待時間 + 上一個的運行時間 - 距離上一個的到達時間
帶權周轉時間 = 周轉時間 / 服務時間(運行時間);
平均周轉時間 = 作業周轉總時間 / 作業個數;
平均帶權周轉時間 = 帶權周轉總時間 / 作業個數;
特別注意:作業到達時間不是作業進內存的時間,而是發出請求,提交就開始計時,如果無法安排進內存,那么就等待,等待的這部分時間也要計數。
任務同時到達時:
四、調度算法
1、先來先服務(FCFS)調度算法
2、輪轉法(round robin)
輪轉法的基本思路是讓每個進程在就緒隊列中的等待時間與享受服務的時間成比。輪轉法的基本概念是將CPU的處理時間分成固定大小的時間片。如果一個進程在被調度選中之后用完了系統規定的時間片,但未完成要求的任務,則它自行釋放自己所占有的CPU而排到就緒隊列的末尾,等待下一次調度。同時,進程調度程序又去調度當前就緒隊列中的第一個進程或作業。
時間片長度的選擇是根據系統對響應時間的要求R和就緒隊列中所允許的最大進程數Nmax確定的。它可表示為: q=R/Nmax
UNIX系統中進程調度采用:多級反饋隊列輪轉法。
3、優先級法
系統或用戶按某種原則為作業或進程指定一個優先級來表示該作業或進程所享有的調度優先權。
4、最短作業優先法(shortest job first)
最短作業優先法(SJF)就是選擇那些估計需要執行時間最短的作業投入執行,為它們創建進程和分配資源。
五、例題
(一)假設有4道作業,它們的提交時刻及執行時間由下表給出:
計算在單道程序環境下,采用先來先服務調度算法和最短作業優先調度算法時的平均周轉時間和平均帶權周轉時間,並指出它們的調度順序。
答:(1)先來先服務調度順序如下:
平均周轉時間:T=(2+2.7+2.8+3)/4=2.625
平均帶權周轉時間:W=(2/2+2.7/1+2.8/0.5+3/0.3)/4=4.825
(2)最短作業優先調度順序如下:
(二)有5個任務A,B,C,D,E,它們幾乎同時到達,預計它們的運行時間為10min,6min,2min,4min,8min。其優先級分別為3,5,2,1和4,這里5為最高優先級。對於下列每一種調度算法,計算其平均進程周轉時間(進程切換開銷可不考慮)。
(1)先來先服務(按A,B,C,D,E)算法。
(2)優先級調度算法。
(3)短作業調度算法。