1. 程式人生 > >第三章處理機排程與死鎖--處理機排程

第三章處理機排程與死鎖--處理機排程

一、處理機排程的基本概念
作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述三級排程。

高階排程(High Scheduling)

又稱作業排程或長程排程(Long-Term Scheduling),接納排程(Admission Scheduling)
主要在早期批處理階段,處理在外存上的作業。
決定外存後備佇列中的哪些作業調入記憶體;
為它們建立程序、分配必要的資源;
將新建立的程序排在就緒佇列上,準備執行。

  • 管理的方面比較多。
    作業排程決定的細節
    在每次執行作業排程時,都須作出兩個決定:
    接納多少作業——取決於多道程式度。應根據系統的規模和執行速度等情況綜合考慮。
    接納哪些作業——取決於採用的排程演算法。如先來先服務,短作業優先等
    *** 系統執行並不一定存在高階排程**
    批處理系統:作業進入系統後先駐留外存,故需要有作業排程。
    分時系統:為及時響應,作業由終端直接送入記憶體,故不需作業排程。
    實時系統中,通常也不需作業排程。

中級排程(Intermediate-Level Scheduling)

又稱交換排程或中程排程(Medium-Term Scheduling)
引入目的:提高記憶體利用率和系統吞吐量。根據條件將一些程序調出或再調入記憶體。

低階排程(Low Level Scheduling)

也稱為程序排程、微觀排程或短程排程(Short-Term Scheduling)
決定記憶體就緒佇列中的哪個程序獲得處理機,進行分配工作。是最基本的一種排程,在三種基本OS中都有。
程序排程方式
1)非搶佔方式(Non-preemptive Mode)
一旦處理機分配給某程序,該程序一直執行。決不允許其他程序搶佔已分配執行程序的處理機。
2)搶佔方式(Preemptive Mode)
允許排程程式根據某種原則,暫停某個正在執行的程序,將處理機重新分配給另一程序
程序排程方式比較

三種排程的頻率和複雜度
程序排程:執行頻率最高,演算法不能太複雜,以免佔用太多的CPU時間。分時系統通常10~100ms便進行一次。
作業排程:一個作業執行完畢退出系統時即觸發重新排程一個新作業入記憶體,週期較長,大約幾分鐘一次。因而也允許作業排程演算法花費較多的時間。
中級排程:執行頻率基本上介於上述兩種排程之間。
三種排程方式比較

**

二、常用排程演算法

**
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
**

三、實時排程

**
什麼是實時系統?
1.指系統能夠在限定的響應時間內提供所需水平的服務。
2.指計算的正確性不僅取決於程式的邏輯正確性,也取決於結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。
實現實時排程的基本條件
1)提供必要的資訊
為了實現實時排程,系統應向排程程式提供有關任務的下述資訊:
就緒時間。該任務成為就緒狀態的時間。
開始截止時間、完成截止時間。
處理時間。從開始執行到完成所需時間。
資源要求。任務執行時所需的一組資源。
優先順序。根據任務性質賦予不同優先順序。
2)系統處理能力足夠強
處理能力不足可能會出現某些實時任務不能得到及時處理,導致難以預料的後果。
3)採用搶佔式排程機制
4)具有快速切換機制

  1. 實時排程演算法的分類
    根據實時任務的性質
    硬實時排程演算法
    軟實時排程演算法;
    根據排程時間不同
    靜態排程演算法
    動態排程演算法。
    按排程方式
    非搶佔排程演算法
    搶佔排程演算法;
    多處理機環境下
    集中式排程
    分散式排程
    1)非搶佔排程演算法
    該演算法較簡單,用於一些小型實時系統或要求不太嚴格的實時系統中,又可分為:
    非搶佔式輪轉排程演算法。常用於工業生產的群控系統中,要求不太嚴格。
    非搶佔式優先排程演算法。要求相對嚴格,根據任務的優先順序安排等待位置。可用於有一定要求的實時控制系統中。(精心設定可獲得百ms級的響應時間)
    2)搶佔式排程演算法
    較嚴格的實時系統中(t約為數十ms),選擇採用搶佔式優先權排程演算法。根據搶佔發生時間可分為:
    基於時鐘:某高優先順序任務到達後並不立即搶佔,而等下一個時鐘中斷時搶佔。
    立即搶佔:一旦出現外部中斷,只要當前任務未處於臨界區,就立即搶佔處理機。
    3. 常用的幾種實時排程演算法

    目前有許多實時排程演算法,在常用的演算法中簡單介紹兩種實時排程演算法:
    最早截止時間優先EDF(Earliest Deadline First)演算法
    根據任務的開始截止時間來確定任務的優先順序。截止時間越早,其優先順序越高。
    系統保持一個實時任務就緒佇列
    佇列按各任務截止時間的早晚排序
    排程程式總是選擇就緒佇列中的第一個任務,分配處理機使之投入執行。
    新任務產生時,是否等當前程式執行完:
    搶佔式/非搶佔式
    可能會使作業錯過,但可適用於軟實時系統

最低鬆弛度優先LLF(Least Laxity First)演算法
根據任務緊急(或鬆弛)的程度,來確定任務的優先順序。任務的緊急程度越高(鬆弛度值越小),優先順序就越高。
鬆弛度= 截止完成時間 – 還需執行時間 - 當前時間
可理解為當前時刻到開始截止時刻間的差距,隨著時間的推進,這個差值逐漸變小,任務越來越緊迫。
在這裡插入圖片描述