作業系統複習攻略:程序排程
阿新 • • 發佈:2019-01-05
排程程式
當計算機系統是多道程式設計系統時,通常就會有多個程序或執行緒同時競爭 CPU。只要有兩個或更多的程序處於就緒狀態,這種情形就會發生。如果只有一個 CPU 可用,那麼就必須選擇下一個要執行的程序。在作業系統中,完成選擇工作的這一部分稱為排程程式,該程式使用的演算法稱為排程演算法。
程序行為
- CPU 密集型程序
- I/O 密集型程序
何時排程
- 在建立一個新程序之後,需要決定是執行父程序還是執行子程序。(任意決定,排程程式可以選擇)
- 在一個程序退出時必須所處排程決策。
- 當一個程序阻塞在 I/O 和訊號量上或由於其他原因阻塞時,必須選擇另一個程序執行。
- 在一個 I/O 中斷髮生時,必須做出排程決策。
排程模式
- 搶佔式
- 非搶佔式
排程演算法的分類
- 批處理
- 互動式
- 實時
排程演算法的目標
- 所有系統
- 公平——給每個程序公平的 CPU 份額
- 策略強制執行——保證所有規定的策略被執行
- 平衡——保持系統的所有部分都忙碌
- 批處理系統
- 吞吐量——每小時最大作業數
- 週轉時間——從提交到終止間的最小時間
- CPU 利用率——保持 CPU 始終忙碌
- 互動式系統
- 響應時間——快速響應請求
- 均衡性——滿足使用者期望
- 實時系統
- 滿足截止時間——避免丟失資料
- 可預測性——在多媒體系統避免品質降低
批處理系統中的排程
- 先來先服務
- 最短作業優先
- 最短剩餘時間優先
互動式系統中的排程
- 輪轉排程
- 優先順序排程:在各個優先順序類中使用輪轉排程
- 多級佇列:屬於最高優先順序類的程序執行一個時間片,次高執行2個,再次執行4個。。。
- 最短程序優先:根據程序過去的行為程序預測,並執行估計執行時間最短的那個,可以和之前的執行時間做加權和來預測
- 保證排程:確保 n 個程序中每個程序佔用 CPU 的時間約為 1/n
- 彩票排程:反應迅速,所有的程序都是平等的,但是可以給更重要的程序額外的彩票
- 公平分享排程:以程序的所有者均分 CPU 時間而不論程序數目
實時系統中的排程
- 分類1:
- 硬實時:必須滿足絕對的截止時間
- 軟實時:雖然不希望偶爾錯失截止時間,但是可以容忍
- 分類2:
- 週期性:事件以規則的時間間隔發生
- 非週期性:事件發生的時間不可預知
- 分類3:
- 靜態排程:在系統開始執行前作出排程決策
- 動態排程:在執行過程中進行排程決策
- 最小延誤排程
- 優先順序排程
- 速率單調排程
- 最早截止優先排程
- 成比例分享排程
- POSIX 實時排程
執行緒排程
- 核心級執行緒
- 使用者級執行緒
使用者級執行緒和核心級執行緒之間的差別在於效能。
使用者級執行緒可以使用專門為應用程式定值的執行緒排程程式。