1. 程式人生 > >作業系統複習攻略:程序排程

作業系統複習攻略:程序排程

排程程式

當計算機系統是多道程式設計系統時,通常就會有多個程序或執行緒同時競爭 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 實時排程

執行緒排程

  • 核心級執行緒
  • 使用者級執行緒

使用者級執行緒和核心級執行緒之間的差別在於效能。
使用者級執行緒可以使用專門為應用程式定值的執行緒排程程式。