操作系統速記(基礎)—處理器管理

處理器管理

  • 程序:爲完成特定任務的指令序列

  • 順序執行:多個任務按順序執行,多個任務多次執行結果一致

  • 併發執行:一個程序尚未結束,另一個程序已經開始執行,多個任務多次執行結果不一致


進程

  • 概念:程序的一次執行

  • 系統資源分配的基本單位

  • 進程的三個基本狀態

  • 運行狀態:獲得CPU資源執行
  • 等待狀態:等待資源
  • 就緒狀態:獲得除CPU外的必須資源
  • 進程狀態的變化圖

  • 進程控制塊(PCB):保存與其他進程、系統資源以及進程所處狀態的數據結構

  • 進程隊列:PCB與PCB之間通過隊列的形式進行存儲

  • 處理器執行狀態

    核心態:操作系統管理代碼執行時機器的狀態

    用戶態:用戶進程執行時機器的狀態

  • 原語:執行時具有原子性的一系列指令

  • 進程調度的算法

    • 批處理系統

      • 先來先服務:誰先來誰先執行
      • 短作業優先調度算法:優先調度執行時間短的作業,會出現長作業餓死的情況
      • 最短剩餘時間調度算法:新增加的作業比當前執行的作業所需時間短,則讓出CPU給新增加的作業
    • 交互式系統

      • 優先數調度:爲每個進程分配一個優先數,按優先數調度進程
      • 時間片輪轉調度:每個進程執行固定的時間後掛起
      • 多級反饋隊列:分爲多個隊列,第一隊列優先級最高,時間片最少,第二隊列優先級次高,時間片次低,以此類推,進程首先進入第一隊列,時間片用完後,沒執行完,進入第二隊列

線程

  • 概念:進程中的一個實體,可以併發執行,具有相同的地址空間,是獨立參與調度的基本單位

  • 線程控制塊(TCB):記錄了線程的標識符、線程執行時的狀態信息

  • 分類:

    • 內核級線程:內核在其空間內執行線程的創建、調度和管理

    • 用戶級線程:內核並不知道線程的存在,線程的創建、終止、同步和調度等在用戶級完成

    • 混合級線程:同時支持內核級與用戶級線程


進程同步與互斥

  • 臨界區:對共享資源進行訪問的程序段

  • 臨界資源:共享的資源

  • 信號量:表示可使用的某一資源的個數,使用PV原語操作對其進行增減操作,P爲減少信號量的值,V爲增加信號量的值,信號量可爲負,此時絕對值表明等待該資源的進程個數

  • 進程互斥

    • 概念:由於競爭共享資源導致進程執行具有先後順序

    • 實現機制:

      • 互斥量:信號量取值只有0與1時,此時信號量爲互斥量
  • 進程同步

    • 概念:由於進程之間的相互合作導致進程執行具有先後順序,一個進程的執行依賴於另外一個進程的結果

    • 實現機制:

      • 信號量:一個信號量與一個進程運行的結果關聯

      • 管程

        • 概念:任一時刻只有一個進程可以執行管程中的代碼

        • 等待機制

          • 目的:由於缺乏資源而導致進程掛起,若沒有等待機制,則沒有任何進程可以執行管程中的代碼

          • wait()操作:將進程阻塞在等待隊列中,釋放管程

          • signal()操作:將等待隊列中的一個進程喚醒

          • 問題:管程中執行的進程可以執行signal()操作,此時會有兩個進程在管程中,解決方案:

            • 執行signal的進程等待,直到被釋放進程退出管程或進入等待隊列
            • 被釋放進程等待,直到執行signal的進程退出管程或進入等待隊列
    • 經典同步問題:

      • 哲學家就餐問題

      • 讀者寫者問題

      • 生產者消費者問題

        經典同步問題的求解需要較多篇幅,此處不總結


進程通信

  • 概念:進程之間的相互作用

  • 分類

    • 低級通信:進程同步與互斥
    • 高級通信:用於傳輸大量信息
  • 高級通信

    • 分類

      • 共享存儲器:進程通過某些數據結構或共享存儲區進行通信

      • 管道通信

        • 概念:用於連接一個讀進程與一個寫進程,以實現它們之間通信的共享文件

        • 特點:

          • 互斥:不能同時讀寫
          • 同步:滿寫和空讀的等待
          • 判斷對方是否存在,雙方存在纔可以通信
        • 分類

          • 直接通信

            概念:每個進程都有一個名字,需指定信息接收進程的名字

            特點:自動建立鏈路,對應一對通信進程,鏈路可以是單向,也可以是雙向

          • 間接通信:進程間發送或接收消息通過一個信道來進行,每個信箱有一個唯一的標識符,多個進程可共享一個信箱


死鎖

  • 概念:每一個進程佔用了某個資源而又等待另一進程所佔用的資源,導致沒有進程可以運行的情況

  • 原因

    1、資源競爭

    2、進程推進順序不當

    兩者共同作用造成了死鎖

  • 產生死鎖的必要條件

    必須同時滿足下列四個必要條件

    • 互斥條件:任一時刻一個資源僅爲一個進程佔有
    • 佔有且等待條件:一個進程無法運行時,不釋放佔有的資源
    • 不剝奪條件:資源不可搶佔
    • 循環等待條件:存在一個進程資源循環等待鏈
  • 解決死鎖的方法

    • 預防:限制併發進程對資源的請求

      • 破壞互斥條件:是資源可同時訪問而不是互斥使用

      • 破壞佔有和等待條件

        靜態分配策略:一個進程必須在執行前就申請它所需要的全部資源

      • 破壞不剝奪條件:允許進程搶佔資源

      • 破壞循環等待條件

        • 層次分配策略

          • 資源分層
          • 進程得到較低層的資源後,纔可以申請高一層的資源
          • 進程釋放完高層的資源後,才能釋放底層的資源
          • 進程只能佔有一層中的一個資源
        • 按序分配策略

          • 給系統的所有資源劃分優先級
          • 進程只有佔據低優先級的資源後,纔可佔用高優先級的資源
    • 避免:系統在分配資源時,根據資源使用情況進行預測,避免死鎖的發生

      銀行家算法

    • 檢測:通過一個機構檢測死鎖是否發生

      資源分配圖

    • 解除:與檢測配套的措施,用於解除死鎖狀態

      • 結束所有進程,重啓操作系統
      • 撤銷涉及死鎖的所有進程,解除死鎖後繼續運行
      • 逐個撤銷涉及死鎖的進程,看剩餘進程是否可以執行
      • 從涉及死鎖的某個進程中搶佔資源,將其分配給其他進程,知道死鎖解除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章