操作系統( 第三章 :處理機調度與死鎖)知識點總結


 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

     

 

 

 在資源分配圖中,死鎖狀態的充分條件是:當且僅當資源分配圖是不可完全簡化的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM