在多道程序環境中,主存中有着多個進程,其數目往往多於處理機數量。這就要求系統能按照某種算法動態地把處理機分配給就緒隊列中的一個進程,使之執行,分配處理機的任務是由處理機調度程序完成的。
處理機調度
在多道程序系統中,一個作業被提交后必須經過處理機調度后,方能獲得處理機執行。對於批量型作業而言,通常需要經歷作業調度(也稱為高級調度)和進程調度(也稱為低級調度)兩個過程才能獲得處理機;而對於終端型作業而言,通常只需要經過進程調度就可以獲得處理機。除了上述兩種調度,操作系統中往往也設置了中級調度,用來提高內存的利用率。
作業:是一個比程序更為廣泛的概念,它不僅包含了通常的程序和數據,而且配有一份作業說明書,系統就是根據該說明書來對程序的運行進行控制。前面所說的某種算法,就是我們后面會提到的幾種常用調度算法。
高級調度(作業調度):其主要功能就是根據某種算法,把外存上處於后備隊列中的那些作業調入內存,也就是說,調度的對象是作業。
低級調度(進程調度):用於決定就緒隊列中的哪個進程應該獲得處理機,然后再由分派程序執行把處理機分派給該進程的具體操作。
中級調度:主要目的是為了提高內存利用率和系統吞吐量。它的工作原理就是將暫時不能運行的進程調至外存上去,此時的狀態稱為掛起。相反當內存空閑時,再將他們調回內存,此時的狀態稱為就緒,掛在就緒隊列上等待進程的調度。
為了評價算法的優劣,提出了不同的性能分析標准:
1. cpu利用率:
cpu是計算機系統中最重要的昂貴的資源,所以應該盡可能使cpu保持工作狀態;
2. 系統吞吐量:
單位時間內cpu完成作業的數量,長作業需要消耗較長的處理機時間,所以會降低系統的吞吐量;
3.周轉時間:
從作業提交到作業完成所經歷的時間,包括作業等待、在就緒隊列中排隊、在處理機上運行以及進行輸入輸出操作所花費時間的總和。
周轉時間=作業完成時間-作業提交時間
平均周轉時間=(作業1的周轉時間+作業2的周轉時間+…+作業n的周轉時間)/n
帶權周轉時間=周轉時間/作業實際運行時間
平均帶權周轉時間=(作業1的帶權周轉時間+…+作業n的帶權周轉時間)/n
4. 等待時間:
是指進程處於等處理機狀態時間之和,等待時間越長,用戶滿意度越低。處理機調度算法實際上並不影響作業執行或輸入/輸出操作的時間,只影響作業在就緒隊列中等待所花的時間。因此,衡量一個調度算法優劣常常只需簡單地考察等待時間。
5. 響應時間:
是指從用戶提交請求到系統首次產生響應所用的時間。在交互式系統中,周轉時間不可能是最好的評價准則,一般釆用響應時間作為衡量調度算法的重要准則之一。從用戶角度看,調度策略應盡量降低響應時間,使響應時間處在用戶能接受的范圍之內。
幾種常用的調度算法:
1.先來先服務調度算法(FCFS)
按照各個作業進入系統的自然次序來調度作業。這種調度算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的用戶不滿意,因為短作業等待處理的時間可能比實際運行時間長得多。
優點:公平,實現簡單;
缺點:不利於短作業。
平均等待時間 t = (0+1.6+2.2+2.5)/4=1.575
平均周轉時間 T = (2+2.6+2.7+2.7)/4=2.5
平均帶權周轉時間 W = (1+2.6+5.4+13.5)/4=5.625
2.短作業(進程)優先調度算法
短作業優先(SJF)的調度算法是從后備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行。
而短進程優先(SPF)調度算法則是從就緒隊列中選出一個估計運行時間最短的進程,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新調度。
優點:平均等待時間、平均周轉時間最少;
缺點:該算法對長作業不利,SJF調度算法中長作業的周轉時間會增加。更嚴重的是,如果有一長作業進入系統的后備隊列,由於調度程序總是優先調度那些 (即使是后進來的)短作業,將導致長作業長期不被調度(“飢餓”現象,注意區分“死鎖”。后者是系統環形等待,前者是調度策略問題)。
平均等待時間 t = (0+2.3+1.4+1)/4=1.175
平均周轉時間 T = (2+3.3+1.9+1.2)/4=2.1
平均帶權周轉時間 W = (1+3.3+3.8+6)/4=3.525
3.時間片輪轉調度算法(RR)
將CPU的處理時間划分成一個個的時間片,就緒隊列中的進程輪流運行一個時間片。當時間片結束時,就強迫進程讓出CPU,該進程進入就緒隊列,等待下一次調度,同時,進程調度又去選擇就緒隊列中的一個進程,分配給它一個時間片,以投入運行。
在這種算法中,系統將所有就緒進程按到達時間的先后次序排成一個隊列,進程調度程序總是選擇就緒隊列中第一個進程執行,即先來先服務的原則,但僅能運行一個時間片,如100ms。在使用完一個時間片后,即使進程並未完成其運行,它也必須釋放出(被剝奪)處理機給下一個就緒的進程,而被剝奪的進程返回到就緒隊列的末尾重新排隊,等候再次運行。
在時間片輪轉調度算法中,時間片的大小對系統性能的影響很大。如果時間片足夠大,以至於所有進程都能在一個時間片內執行完畢,則時間片輪轉調度算法就退化為先來先服務調度算法。如果時間片很小,那么處理機將在進程間過於頻繁切換,使處理機的開銷增大,而真正用於運行用戶進程的時間將減少。因此時間片的大小應選擇適當。
優點:兼顧長短作業;
缺點:平均等待時間較長,上下文切換較費時。適用於分時系統。
4.優先級調度算法(HPF)
每一個作業規定一個表示該作業優先級別的整數,當需要將新的作業由輸入井調入內存處理時,優先選擇優先數最高的作業。
5.多級反饋隊列調度算法
將時間片輪轉與優先級調度相結合,把進程按優先級分成不同的隊列,先按優先級調度,優先級相同的,按時間片輪轉。優點是兼顧長短作業,有較好的響應時間,可行性強,適用於各種作業環境。
6.高響應比優先調度算法
根據“響應比=(進程執行時間+進程等待時間)/ 進程執行時間”這個公式得到的響應比來進行調度。高響應比優先算法在等待時間相同的情況下,作業執行的時間越短,響應比越高,滿足段任務優先,同時響應比會隨着等待時間增加而變大,優先級會提高,能夠避免飢餓現象。優點是兼顧長短作業,缺點是計算響應比開銷大,適用於批處理系統。