3.1 處理機調度概述
處理機是計算機系統的中的重要資源。
處理機調度算法對整個計算機系統的綜合性能指標有重要影響
處理機調度的三個層次:高級調度(作業)、中級調度、低級調度(進程)
進程調度要解決的問題:
WHAT:按什么原則分配CPU——調度算法
WHEN:何時分配CPU——調度的時機 (一個進程運行完畢或因某種錯誤終止運行、一個進程從運行態變為等待態(等待I/O)、分時系統中的時間片到、有一個優先級更高的進程就緒(搶占式)、執行中的進程執行了某種原語操作(阻塞原語))
HOW:如何分配CPU——CPU調度過程(進程的上下文切換)
進程切換步驟:1.保存當前進程CPU的上下文(PC,寄存器)以及相關信息到運行中的PCB中去
2.把該進程移至合適的隊列——就緒、阻塞
3.從被選中的PCB中重裝入CPU上下文
選擇調度方式和調度算法的准則
面向系統:系統吞吐量高、處理機利用率好、各類資源的平衡利用、公平
面向用戶:周轉時間短、響應時間快、截止時間的保證、優先權准則
周轉時間:結束-進入 帶權周轉:周轉/運行
進程優先級:靜態優先級、動態優先級 (與進程類型、進程對資源要求、用戶要求有關)
搶占/非搶占:可搶占式(有比正在運行進程優先級更高進程就緒時,系統可強行剝奪正在運行的CPU),不可搶占式
3.2 調度算法
指根據系統資源分配所規定的資源分配算法
先來先服務:按進程就緒的先后順序來調度進程,分配處理機。
有利於長作業(進程),不利於短作業。
短作業優先:能有效降低作業的平均等待時間,提高系統的吞吐量
對長作業不利、未考慮作業的緊張程度,作業的估計運行時間不准確
高優先權調度算法:非搶占式優先權算法(批處理系統、對實時性要求不高)、搶占式優先權算法(要求嚴格實時系統,性能要求較高的分時、批處理系統)。
高響應比優先調度算法
響應比:作業周轉時間/作業處理時間
優點:若作業等待時間相同,則處理時間越短,響應比越高,有利於短作業
對於長作業,隨等待時間增加,響應比增高,同樣可獲得處理機
若處理時間相同,等待時間越長,響應比越高,為先來先服務
多級反饋隊列調度算法
等待進程被喚醒時,進入原來的就緒隊列(可能被搶占)
當進程第一次就緒時,進入第一級隊列
多級反饋隊列算法的性能:能較好滿足各種類型用戶的需要 (終端型用戶、短批處理作業用戶、長批處理作業用戶)
3.3 實時調度 實現實時調度的基本條件
1.提供必要的信息 2.系統處理能力強 3.采用搶占式調度機制 4.具有快速切換的機制 (要求快速硬件中斷機構、允許中斷的時間短)
實時調度算法的分類
按任務性質:硬實時和軟實時
按調度方式:非搶占和搶占
按調度時間:靜態和動態
非搶占式調度算法:
1.非搶占式輪轉調度算法 (響應時間在幾秒到數十秒之間,用於不太嚴格的實時控制系統,比如工業生產群控系統)
2.非搶占式優先調度算法 (實時任務到達,放在就緒隊列隊首,等待當前任務的自我終止或運行完成,響應時間數百毫秒,用於較為嚴格的實時系統)
3.基於時鍾中斷的搶占式優先權調度算法 (優先級高於當前任務的實時任務到達,則等到下一個時鍾中斷,搶占當前時鍾處理機。響應時間:幾到幾十ms,應用於較嚴格的實時系統)
4.立即搶占的優先權調度算法 (一旦出現請求中斷的緊急任務,只要當前任務未在臨界區,立即搶占它的CPU。響應時間100微秒到幾毫秒,系統必須具有快速響應外部中斷能力)
常用的兩種實時調用算法
最早截止時間優先算法EDF (以開始截止時間確定優先級,可用於搶占式/非搶占式調度)
最低松弛度優先算法LLF (以任務緊急程度確定優先級,松弛度:必須完成時間-還需運行時間-當前時間,用於可搶占式)
3.4 死鎖的概念
定義:一組進程中,每個進程都無限等待被該組進程中另一進程所占有的資源,因而永遠無法得到該資源
產生原因:1.競爭資源引起進程死鎖(資源分配策略)
2.進程推進順序不當引起死鎖
結論:1.參與死鎖的進程最少是兩個
2.參與死鎖是進程至少有2個已經占有資源
3.參與死鎖的所有進程都在等待資源
4.參與死鎖的進程是當前系統中所有進程的子集
(死鎖發生,會浪費大量系統資源,甚至導致系統崩潰!)
產生死鎖的必要條件
互斥條件 (涉及的資源是非共享的)
不剝奪條件 (不能剝奪進程擁有資源)
請求保持條件 (進程在等待一新資源時繼續占有已分配的資源)
環路條件 (存在一種循環鏈,鏈中每一個進程已獲得的資源同時被鏈中的下一個進程所請求)
處理死鎖的基本方法
A.預防死鎖 (設置某些限制條件,破壞死鎖四個必要條件中的一個或多個)(較易實現,可能導致系統資源利用率和系統資源吞吐量降低)
B.避免死鎖 (在資源動態分配過程中,用某種方法去防止系統進入不安全狀態)(實現較難)
C.檢測死鎖 (事先不采取任何限制,不檢查系統是否進入不安全區,允許死鎖發生,可及時檢測出死鎖發生,精確確定發生死鎖的進程和資 源,采取適當措施,將系統中發生的死鎖清除掉)
D.解除死鎖 (將進程從死鎖狀態解脫出來)(撤銷或掛起一些進程,回收一些資源,再將它們分配給處於阻塞狀態的進程,使之轉為就緒狀態,實現難度大)
破壞請求保持條件:一次性申請整個運行過程中所需全部資源,若系統有足夠資源則完全分配(執行時不提出資源請求,在等待時未占有任何資源)
優點:簡單、易於實現且安全
缺點:一個用戶在運行之前可能提不出它的作業將要使用的全部設備;延遲運行,用戶作業必須等待,直到所有資源滿足運行;資源浪費
破壞不剝奪條件:實現復雜、要付出很大的代價(以前工作的失效,執行的推遲)
破壞環路條件:將所有資源按類型進行線性排序賦予不同的序號,所有進程對資源的請求必須嚴格按照資源序號的次序提出
優點:資源利用率和系統吞吐量有明顯改善
缺點:資源浪費、限制新設備增加
安全狀態:如果系統能按某種順序為每個進程分配其所需的資源,直至所有進程都能運行完成,稱系統處於安全狀態,否則處於不安全狀態
處於不安全狀態不一定會發生死鎖,處於安全狀態一定不會發生死鎖!
保證死鎖不發生:r>=(m-1)*p+1
利用銀行家算法避免死鎖
Available 可利用資源向量 MAX 最大需求矩陣 分配矩陣 ALLocation 需求矩陣 Need
在資源分配圖中,死鎖狀態的充分條件是:當且僅當資源分配圖是不可完全簡化的