作業系統第三章處理機排程與死鎖
阿新 • • 發佈:2019-02-01
第三章:處理機排程與死鎖
處理機排程演算法的目標
處理機排程演算法的共同目標
- 資源利用率:CPU的利用率=CPU有效工作時間/(CPU有效工作時間+CPU空閒等待時間)
- 公平性
- 平衡性
- 策略強制執行
批處理系統的目標
- 平均週轉時間短
- 系統吞吐量高
- 處理機利用率高
分時系統的目標
- 響應時間快
- 均衡性
實時系統目標
- 截止時間的保證
- 可預測性
處理機排程的層次
- 高階排程(作業排程)
- 分時系統無需作業排程,因為需要互動
- 批處理系統需要作業排程
- 中級排程(和掛起有關)
- 低階排程(程序排程)
- 程序排程是最基本的排程,任何作業系統都有程序排程。
- 低階排程的三個基本機制
- 排隊器
- 分派器
- 上下文切換
- 程序排程方式
- 非搶佔方式
- 搶佔方式
- 優先權原則
- 短程序優先原則
- 時間片原則
- 程序排程的任務
- 儲存處理機的現場資訊
- 按某種演算法選取程序
- 把處理器分配給程序
- 程序排程的演算法
- 優先順序排程演算法
- 優先順序排程演算法的型別
- 非搶佔式優先順序排程演算法
- 等當前程序執行完以後,再執行另一個優先權最高的程序
- 這種排程演算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。
- 搶佔式優先順序排程演算法
- 不等當前程序結束,直接搶處理機
- 常用於要求比較嚴格的實時系統中, 以及對效能要求較高的批處理和分時系統中。
- 非搶佔式優先順序排程演算法
- 優先順序的型別
- 靜態優先順序
- 優先權是在建立程序時確定的,且在程序的整個執行期間保持不變。一般地,優先權是利用某一範圍內的一個整數來表示的,例如,0~7或0~255中的某一整數, 又把該整數稱為優先數。
- 可以參考BIOS系統中設定boot的優先順序
- 動態優先順序
- 在建立程序時所賦予的優先權,是可以隨程序的推進或隨其等待時間的增加而改變的,以便獲得更好的排程效能。
- 靜態優先順序
- 優先順序排程演算法的型別
- 輪轉排程演算法
- 基本原理:在輪轉(RR)法中,系統根據FCFS策略,將所有的就緒程序排成一個就緒佇列,並可設定每隔一定時間間隔(如30ms)即產生一次中斷,啟用系統中的程序排程程式,完成一次排程,將CPU分配給隊首程序,令其執行
- 程序切換時機
- 時間片未用完,程序完成
- 時間片到,程序未完成
- 時間片大小的確定
- 太小利於短作業,增加系統切換開銷
- 太長就退化為FCFS演算法
- 一般選擇: q略大於一次互動所需要的時間,使大多數程序在一個時間片內完成
- 一般來說,平均週轉時間將比SJF長,但是有較好的響應時間
- 多佇列排程演算法
- 多級反饋佇列排程演算法
- 排程機制
- 設定多個就緒佇列
- 每個佇列都採用FCFS演算法
- 按照佇列優先順序排程,在第n佇列中採取按時間片輪轉的方式執行
- 排程演算法的效能
- 對於終端型使用者,由於作業小,感覺滿意
- 對於短批處理作業使用者,週轉時間也較小
- 長批處理作業使用者,也能夠得到執行
- 排程機制
- 基於公平原則的排程演算法
- 保證排程演算法
- 公平分享排程演算法
- 優先順序排程演算法
作業與作業排程
作業
- 作業不僅包含程式和資料,還配有一份作業說明書,系統根據說明書對程式的執行進行控制。批處理系統是以作業為單位從外存掉入記憶體的。
作業控制塊JCB
- 為每個作業設定一個JCB,儲存了對作業管理排程的全部資訊。是作業存在的標誌。
作業步
- 作業步,每個作業都必須經過若干相對獨立,有相互關聯的順序步驟才能得到結果。每一個步驟就是一個作業步。
作業執行的三個階段
- 收容階段
- 執行階段
- 完成階段
作業執行的三個狀態
- 後備狀態
- 執行狀態
- 完成狀態
作業排程的主要任務
- 接納多少個作業
- 接納哪些作業
先來先服務(first–come first–served,FCFS)排程演算法
- 比較有利於長作業,而不利於短作業。
- 有利於CPU繁忙的作業,而不利於I/O繁忙的作業。
短作業優先(short job first,SJF)的排程演算法
- 優點
- 比FCFS改善平均週轉時間和平均帶權週轉時間,縮短作業的等待時間;
- 提高系統的吞吐量;
- 缺點
- 必須預知作業的執行時間
- 對長作業非常不利,長作業的週轉時間會明顯地增長
- 在採用SJF演算法時,人–機無法實現互動
- 該排程演算法完全未考慮作業的緊迫程度,故不能保證緊迫性作業能得到及時處理
優先順序排程演算法(priority–scheduling algorithm,PSA)
高響應比優先排程演算法(Highest Response Ratio Next,HRRN)
- 原理
- 在每次選擇作業投入執行時,先計算此時後備作業佇列中每個作業的響應比RP然後選擇其值最大的作業投入執行
- 優先權=(等待時間+要求服務時間)/要求服務時間=響應時間/要求服務時間=1+等待時間/要求服務時間
- 特點
- 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而類似於SJF演算法,有利於短作業
- 當要求服務的時間相同時,作業的優先權又決定於其等待時間,因而該演算法又類似於FCFS演算法
- 對於長時間的優先順序,可以為隨等待時間的增加而提高,當等待時間足夠長時,也可獲得處理機
實時排程(HRT和SRT任務)
實現實時排程的基本條件
- 提供必要資訊
- 就緒時間
- 開始截止時間和完成截止時間
- 處理時間
- 資源要求
- 優先順序
- 系統處理能力強
- ∑(Ci/Pi)≤1
- N個處理機:∑(Ci/Pi)≤N
- 採用搶佔式排程機制
- 具有快速切換機制
- 對中斷的快速響應能力
- 快速的任務分派能力
實時排程演算法的分類
- 非搶佔式排程演算法
- 非搶佔式輪轉排程演算法
- 非搶佔式優先排程演算法
- 搶佔式排程演算法
- 基於時鐘中斷的搶佔式優先順序排程演算法
- 立即搶佔的優先順序排程演算法
最早截止時間優先EDF(Earliest Deadline First)演算法
- 根據任務的開始截至時間來確定任務的優先順序
- 截至時間越早,優先順序越高
- 非搶佔式排程方式用於非週期實時任務
- 搶佔式排程方式用於週期實時任務
最低鬆弛度優先LLF(Least Laxity First)演算法
- 類似EDF
- 演算法根據任務緊急(或鬆弛)的程度,來確定任務的優先順序。任務的緊急程度愈高,為該任務所賦予的優先順序就愈高, 以使之優先執行。
- 鬆弛度例子
- 例如,一個任務在200ms時必須完成,而它本身所需的執行時間就有100ms,因此,排程程式必須在100 ms之前排程執行,該任務的緊急程度(鬆弛程度)為100 ms
優先順序倒置(Priority inversion problem)
- 優先順序倒置的形成
- 高優先順序程序被低優先順序程序延遲或阻塞。
- 優先順序倒置的解決方法
- 簡單的:假如程序P3在進入臨界區後P3所佔用的處理機就不允許被搶佔
- 實用的:建立在動態優先順序繼承基礎上的
死鎖概述
資源問題
- 可重用性資源
- 計算機外設
- 消耗性資源
- 資料,訊息
- 可搶佔性資源
- 不引起死鎖
- CPU,記憶體
- 不可搶佔性資源
- 光碟機,印表機
計算機系統中的死鎖
- 競爭不可搶佔性資源引起死鎖
- 競爭可消耗資源引起死鎖
- 程序推進順序不當引起死鎖
死鎖的定義,必要條件和處理方法
- 定義:如果一組程序中的每一個程序都在等待僅由該程序中的其他程序才能引發的事件,那麼該組程序是死鎖的
- 產生死鎖的必要條件
- 互斥條件
- 請求和儲存條件
- 不可搶佔條件
- 迴圈等待條件
- 如果每個資源只有一個例項,則環路等待條件是死鎖存在的充分必要條件
- 處理死鎖的方法
- 預防死鎖
- 靜態方法,在程序執行前採取的措施,通過設定某些限制條件,去破壞產生死鎖的四個條件之一,防止發生死鎖。
- 預防死鎖的策略
- 破壞”請求和儲存”條件
- 第一種協議
- 所有程序在開始執行之前,必須一次性地申請其在整個執行過程中所需的全部資源
- 優點:簡單,易行,安全
- 缺點
- 資源被嚴重浪費,嚴重地惡化了資源的利用率
- 使程序經常會發生飢餓現象
- 第二種協議
- 它允許一個程序只獲得執行初期所需的資源後,便開始執行。程序執行過程中再逐步釋放已分配給自己的,且已用畢的全部資源,然後再請求新的所需資源
- 第一種協議
- 破壞”不可搶佔”條件
- 當一個已經儲存了某些不可被搶佔資源的程序,提出新的資源請求而不能得到滿足時,它必須釋放已經保持的所有資源,待以後需要時再重新申請
- 破壞”迴圈等待”條件
- 對系統所以資源型別進行線性排序,並賦予不同的序號
- 例如令輸入機的序號為1,印表機序號為2,磁碟機序號為3等。所有程序對資源的請求必須嚴格按資源序號遞增的次序提出。
- 破壞”請求和儲存”條件
- 避免死鎖
- 動態的方法,在程序執行過程中採取的措施,不需事先採取限制措施破壞產生死鎖的必要條件,而是在程序申請資源時用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。如銀行家演算法
- 避免死鎖的策略
- 系統安全狀態
- 安全狀態
- 某時刻,對於併發執行的n個程序,若系統能夠按照某種順序如
- 安全狀態
- 系統安全狀態
- 預防死鎖