作業系統-7——單處理器排程
阿新 • • 發佈:2019-01-27
一、基本概念
- 長程排程:新作業提交時,決定是否將其送入記憶體,成為一個程序。
- 中程排程:決定把哪些程序在記憶體與磁碟間交換。
- 短程排程:決定將CPU分配給哪個就緒程序。
三種排程影響程序的狀態轉換:
二、長程排程
- 在批處理系統或OS的批處理部分中,新提交的作業放在磁碟的後備作業佇列中,長程排程選擇某些作業送入記憶體並建立。
- 何時長程排程?根據系統併發度決定,當老程序結束或CPU空閒超過閾值時,啟動長程排程。
- 到底哪個作業?根據 先來先服務,優先順序,預計時間,組合CPU密集型和I/O密集型、組合不同I/O需求的作業等。
- 注意:在分時系統中,不需要長程排程。OS總是立即接受使用者的互動請求並建立程序,直至系統飽和。
三、中程排程
- 何時長程排程?與長程排程類似,系統併發度決定中程排程的時機。
- 需要考慮換入程序和換出程序的記憶體空間長度。
四、短程排程
- 何時長程排程?當前執行程序的時間片用完、阻塞、被搶佔時,啟動短程排程。
- 排程頻繁(毫秒級) = 》 執行速度必須很快。
4.1短程排程準則
- 面向使用者的效能指標:對每個程序計算的指標
- 週轉時間:從作業提交到完成的時間間隔,包括:服務時間(執行態CPU執行)+等待時間(包括後備態等待進入記憶體、阻塞態等待資源、就緒態等待CPU)。適合批處理作業。
- 響應時間:從提交請求到開始響應。適合分時(互動)程序。
- 最後期限:程序完成的截止期限。適合實時程序。
- 歸一化週轉時間(帶權週轉時間):週轉時間/服務時間。≥1
- 面向系統的效能指標:
- 吞吐量:單位時間內完成的程序個數。
- 處理器利用率:CPU忙的時間比例,=工作時間/總執行時間。當用戶系統和實時系統不看重該指標。
4.2排程方式
- 非搶佔式:當前程序一直執行,直至其終止或阻塞時,才再次分配CPU。
- 搶佔式:當其時間片結束或有更高階程序就緒時,將正執行程序轉為就緒,再次分配CPU。
4.3選擇排程策略
本文的排程演算法有:先來先服務(FCFS)、輪轉(RR)、最短程序優先(SPN)、最短剩餘時間優先(SRT)、最高響應比優先(HRRN)、多級反饋。
先來先服務(FCFS)
排程最先進入後備佇列/就緒佇列的作業/程序,直至執行完或阻塞時,在重新排程。(非搶佔式)
輪轉(RR)
輪轉RR:各程序按提交順序排成就緒佇列,然後按次佔用處理機,執行某一時間片。時間片完則排入就緒佇列尾。(搶佔式)(不利於I/O密集型程序)RR的平均週轉時間可能較高,但是響應時間更短。
時間片的長度:關鍵引數
- 時間片q太大 =》 相當於FIFS,相應慢。
- 時間片q太小 =》 上下文切換頻繁,開銷大。
- 時間片應略大於一次典型的互動所需要的時間。
最短程序優先(SPN)
最短程序優先SPN:排程CPU執行時間預期最短的程序;直至執行完或阻塞時,重新排程。有利於短程序,不利於長程序及緊迫任務。(非搶佔式)
通常,程序是“CPU執行和I/O”不斷交替的過程,SPN的困難在於:如何預測下一CPU用時長度。(常用:指數平均法)
最短剩餘時間(SRT)
新程序到達時,若新程序的預計執行時間比當前程序的剩餘執行時間更短,則搶佔當前程序。(搶佔式)
最高響應比優先
綜合了FCFS和SPN演算法。(非搶佔式)- 當前程序完成或阻塞時發生排程。每次排程前,計算所有就緒程序的響應比,高者優先。
- 實際上,響應比就是一個程序在某一時刻的“歸一化週轉時間”(即帶權週轉時間)。
- 反饋
- 基於時間片的搶佔+動態優先順序排程。(搶佔式)
- 同一佇列內程序按FCFS排程,但末級佇列按輪轉法排程。
- 當上級佇列均無程序就緒時,才排程本級佇列內程序;
- 實用,能較好地滿足互動型程序、短程序、長程序的要求
- 優先權排程
- 排程優先順序高的程序。就緒佇列中程序按優先順序 遞減排列,每次排程高階佇列的隊首程序。
- 可搶佔:新到達的高階程序立即搶佔當前程序。
- 靜態優先權:建立程序時確定優先順序,保持不變。
- 問題:低優先順序程序可能飢餓Starvation。
動態優先權:建立程序時賦予程序一個優先權初 值,但隨著程序的等待時間延長,其優先順序會升高 (稱為老化Aging );隨著CPU執行時間的延長,其 優先順序會降低