操作系統複習攻略:進程調度

調度程序

當計算機系統是多道程序設計系統時,通常就會有多個進程或線程同時競爭 CPU。只要有兩個或更多的進程處於就緒狀態,這種情形就會發生。如果只有一個 CPU 可用,那麼就必須選擇下一個要運行的進程。在操作系統中,完成選擇工作的這一部分稱爲調度程序,該程序使用的算法稱爲調度算法

進程行爲

  • CPU 密集型進程
  • I/O 密集型進程

何時調度

  1. 在創建一個新進程之後,需要決定是運行父進程還是運行子進程。(任意決定,調度程序可以選擇)
  2. 在一個進程退出時必須所處調度決策。
  3. 當一個進程阻塞在 I/O 和信號量上或由於其他原因阻塞時,必須選擇另一個進程運行。
  4. 在一個 I/O 中斷髮生時,必須做出調度決策。

調度模式

  • 搶佔式
  • 非搶佔式

調度算法的分類

  • 批處理
  • 交互式
  • 實時

調度算法的目標

  • 所有系統
    • 公平——給每個進程公平的 CPU 份額
    • 策略強制執行——保證所有規定的策略被執行
    • 平衡——保持系統的所有部分都忙碌
  • 批處理系統
    • 吞吐量——每小時最大作業數
    • 週轉時間——從提交到終止間的最小時間
    • CPU 利用率——保持 CPU 始終忙碌
  • 交互式系統
    • 響應時間——快速響應請求
    • 均衡性——滿足用戶期望
  • 實時系統
    • 滿足截止時間——避免丟失數據
    • 可預測性——在多媒體系統避免品質降低

批處理系統中的調度

  1. 先來先服務
  2. 最短作業優先
  3. 最短剩餘時間優先

交互式系統中的調度

  1. 輪轉調度
  2. 優先級調度:在各個優先級類中使用輪轉調度
  3. 多級隊列:屬於最高優先級類的進程運行一個時間片,次高運行2個,再次運行4個。。。
  4. 最短進程優先:根據進程過去的行爲進程預測,並執行估計運行時間最短的那個,可以和之前的運行時間做加權和來預測
  5. 保證調度:確保 n 個進程中每個進程佔用 CPU 的時間約爲 1/n
  6. 彩票調度:反應迅速,所有的進程都是平等的,但是可以給更重要的進程額外的彩票
  7. 公平分享調度:以進程的所有者均分 CPU 時間而不論進程數目

實時系統中的調度

  • 分類1:
    • 硬實時:必須滿足絕對的截止時間
    • 軟實時:雖然不希望偶爾錯失截止時間,但是可以容忍
  • 分類2:
    • 週期性:事件以規則的時間間隔發生
    • 非週期性:事件發生的時間不可預知
  • 分類3:
    • 靜態調度:在系統開始運行前作出調度決策
    • 動態調度:在運行過程中進行調度決策
  1. 最小延誤調度
  2. 優先級調度
  3. 速率單調調度
  4. 最早截止優先調度
  5. 成比例分享調度
  6. POSIX 實時調度

線程調度

  • 內核級線程
  • 用戶級線程

用戶級線程和內核級線程之間的差別在於性能。
用戶級線程可以使用專門爲應用程序定值的線程調度程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章