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

第三章 處理機排程與死鎖(1)

一、處理機排程相關基本概念

作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述三級排程。
1.高階排程(High Scheduling)
又稱作業排程或長程排程(Long-Term Scheduling),接納排程(Admission Scheduling)。主要在早期批處理階段,處理在外存上的作業。
決定外存後備佇列中的哪些作業調入記憶體
為它們建立程序、分配必要的資源
將新建立的程序排在就緒佇列上,準備執行
管理的方面比較多。

系統執行不一定存在高階排程
例如:
批處理系統:作業進入系統後先駐留外存,故需要有作業排程。
分時系統:為及時響應,作業由終端直接送入記憶體,故不需作業排程。
實時系統中,通常也不需作業排程。

2.中級排程(Intermediate-Level Scheduling)
又稱交換排程或中程排程(Medium-Term Scheduling)
引入目的:提高記憶體利用率和系統吞吐量。根據條件將一些程序調出或再調入記憶體。
3. 低階排程(Low Level Scheduling)
也稱為程序排程、微觀排程或短程排程(Short-Term Scheduling)
決定記憶體就緒佇列中的哪個程序獲得處理機,進行分配工作。是最基本的一種排程,在三種基本OS中都有。

三種排程比較:
在這裡插入圖片描述
在這裡插入圖片描述
4. 排程佇列模型
不論高階、中級或者低階排程,都涉及到程序佇列,由此形成了三類排程佇列模型。從這三種方式中體驗排程的過程。
①僅有程序排程的排程佇列模型
常見情況:


分時系統。
通常僅設定程序排程,使用者鍵入的命令和資料,都直接送入記憶體。
排程物件:
處於就緒狀態的程序。
組織形式:
棧、樹或一個無序連結串列
用何種形式取決於OS型別和採用的排程演算法。如:分時系統中把就緒程序組織成FIFO佇列形式:按時間片輪轉方式執行。
程序排程過程圖:
在這裡插入圖片描述
②具有高階和低階排程的排程佇列模型
批處理系統中,還需要作業排程
在這裡插入圖片描述
③同時具有三級排程的排程佇列模型
引入中級排程後,程序的狀態變化:
就緒狀態:分為記憶體就緒和外存就緒。
阻塞狀態:分為記憶體阻塞和外存阻塞。

中級排程使程序在上述狀態間變化,並使資料在內外存間互換。
在這裡插入圖片描述
5. 選擇排程方式和排程演算法的若干準則
①面向使用者的準則
②面向系統的準則

二、常用排程演算法

排程的實質就是一種資源分配。不同的系統和系統目標,通常採用不同的排程演算法——適合自己的才是最好的。

1.先來先服務的排程演算法FCFS
一種最簡單的排程演算法,按先後順序進行排程。既可用於作業排程,也可用於程序排程。
按照作業提交,或程序變為就緒狀態的先後次序分派CPU。
新作業只有噹噹前作業或程序執行完或阻塞才獲得CPU執行
被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序出讓CPU。
**不足:**短作業C的帶權週轉時間竟高達100,這是不能容忍的;而長作業D的帶權週轉時間僅為1.99。
**關於應用:**有利於CPU繁忙型的作業,而不利於I/O繁忙的作業

2.短作業優先排程演算法SJF/SPF
優點:
通過上表可見採用SJF/SPF演算法,平均週轉時間、平均帶權週轉時間都有明顯改善。SJF/SPF排程演算法能有效的降低作業的平均等待時間,提高系統吞吐量。
方式:
分搶佔和非搶佔兩種方式,上例為簡單的非搶佔式。
不足:
1.對短作業有利,但同時造成了對長作業的不利。
2.由於作業的長短含主觀因素,不一定能真正做到短作業優先。
3.未考慮作業的緊迫程度,因而不能保證緊迫性作業的及時處理。

3.高優先權優先排程演算法HPF
照顧緊迫性作業,使其獲得優先處理而引入排程演算法。
常用於批處理系統中的作業排程演算法,以及多種作業系統中的程序排程演算法
兩種方式:
非搶佔式優先權演算法
搶佔式優先權演算法
關鍵點:新作業產生時
優先權的型別:
*靜態優先權:*建立程序時確定,整個執行期間保持不變。一般利用某一範圍的一個整數來表示,又稱為優先數。
*動態優先權:*建立程序時賦予的優先權可隨程序的推進或隨其等待時間的增加而改變。

關於程序優先權的確定:
程序型別:一般來,系統程序高於使用者程序。
程序對資源的需求:如程序的估計時間及記憶體需要量的多少,對要求少的程序賦予較高優先權。
使用者要求:由使用者程序的緊迫程度及使用者所付費用的多少來確定優先權的。

4.高響應比優先排程演算法HRRN
短作業優先演算法是一種比較好的演算法(相當於根據作業長度設定的靜態優先權演算法),適用於短作業較多的批處理系統中,其主要不足是長作業的執行得不到保證。
HRRN為每個作業引入動態優先權,使作業的優先順序隨著等待時間的增加而以速率a提高:
優先權 =(等待時間+要求服務時間)/要求服務時間
= 響應時間 / 要求服務時間

5.基於時間片的輪轉排程演算法RR
早期分時系統採用的是簡單的時間片輪轉法
進入90年代後廣泛採用多級反饋佇列排程演算法
(1)時間片輪轉演算法
將系統中所有的就緒程序按照FCFS原則,排成一個佇列。
每次排程時將CPU分派給隊首程序,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。
在一個時間片結束時,發生時鐘中斷。
排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。

影響時間片長度的主要因素:
系統的處理能力和系統的負載狀態。

(2)多級反饋佇列演算法FB
特點:
多個就緒佇列,迴圈反饋
動態優先順序,時間片輪轉
在這裡插入圖片描述
常用排程演算法的比較
在這裡插入圖片描述

三、實時排程

1.基本條件
(1)提供必要的資訊
為了實現實時排程,系統應向排程程式提供有關任務的下述資訊:
就緒時間。該任務成為就緒狀態的時間。
開始截止時間、完成截止時間。
處理時間。從開始執行到完成所需時間。
資源要求。任務執行時所需的一組資源。
優先順序。根據任務性質賦予不同優先順序。
(2)系統處理能力足夠強
處理能力不足可能會出現某些實時任務不能得到及時處理,導致難以預料的後果。
如:系統中有M個週期性的硬實時任務,處理時間為Ci,週期時間表示為Pi,
單機系統中必須滿足條件
在這裡插入圖片描述
提高系統處理能力的方法
增強單機系統的處理能力
採用多處理機系統
此情況下需滿足
∑( Ci / Pi )≤N,N為處理機數
(3)採用搶佔式排程機制
硬實時任務:廣泛採用搶佔機制。
小的實時系統:如能預知任務的開始截止時間,為簡化排程程式和對任務排程時所花費的系統開銷,可採用非搶佔排程機制,
(4)具有快速切換機制
對外部中斷的快速響應能力
利用快速硬體中斷機構,可在緊迫的外部事件請求中及時響應。
快速的任務分派能力
使系統中的執行功能單位適當的小,提高切換速度。類如執行緒的思想
2.實時排程演算法的分類

根據實時任務的性質
硬實時排程演算法
軟實時排程演算法

按排程方式
非搶佔排程演算法
搶佔排程演算法

根據排程時間不同
靜態排程演算法
動態排程演算法。

多處理機環境下
集中式排程
分散式排程

(1)非搶佔排程演算法
該演算法較簡單,用於一些小型實時系統或要求不太嚴格的實時系統中,又可分為:
非搶佔式輪轉排程演算法。
常用於工業生產的群控系統中,要求不太嚴格。
非搶佔式優先排程演算法。
要求相對嚴格,根據任務的優先順序安排等待位置。可用於有一定要求的實時控制系統中。(精心設定可獲得百ms級的響應時間)
(2)搶佔式排程演算法
較嚴格的實時系統中(t約為數十ms),選擇採用搶佔式優先權排程演算法。根據搶佔發生時間可分為:
**基於時鐘:**某高優先順序任務到達後並不立即搶佔,而等下一個時鐘中斷時搶佔。
**立即搶佔:**一旦出現外部中斷,只要當前任務未處於臨界區,就立即搶佔處理機。
3.常見實時排程演算法
(1)最早截止時間優先EDF(Earliest Deadline First)演算法
根據任務的開始截止時間來確定任務的優先順序。
截止時間越早,其優先順序越高。
系統保持一個實時任務就緒佇列
佇列按各任務截止時間的早晚排序
排程程式總是選擇就緒佇列中的第一個任務,分配處理機使之投入執行。
新任務產生時,是否等當前程式執行完:搶佔式/非搶佔式
可能會使作業錯過,但可適用於軟實時系統
(2)最低鬆弛度優先LLF(Least Laxity First)演算法
根據任務緊急(或鬆弛)的程度,來確定任務的優先順序。任務的緊急程度越高(鬆弛度值越小),優先順序就越高。
鬆弛度= 截止完成時間 – 還需執行時間 - 當前時間
例:
任務A,截止完成時間=200ms,執行=100ms;
任務B,截止完成時間= 400ms,執行=150ms,
當前t=0時刻,兩者的鬆弛度分別為
A鬆弛度=200-100ms; B鬆弛度=250ms。