【操作系统】实时调度
實現實時調度的基本條件
- 提供必要的調度信息(就緒時間、開始截止時間和完成截止時間、處理時間、資源要求、優先級)
- 系統處理能力強。在實時系統中,若處理機的處理能力不夠強,則有可能因處理機忙不過來而致使某些實時任務不能得到及時處理。
- 采用搶占式的調度機制
- 具有快速切換機制
實時調度的 CPU 處理能力
單處理機:
m: 實時任務數目,ci: 每次處理時間,pi: 周期時間
例如:有 6 個硬實時任務,周期時間都是 50 ms,每次的處理時間為 10 ms,則系統是不可調度的。
多處理機:(N: 處理機數目)
實時調度算法的分類
按實時任務性質(即對時間約束的強弱程度)
- 硬實時調度:必須滿足任務截止期要求,錯過后果嚴重。
- 軟實時調度算法:期望滿足任務截止期要求,錯過可容
忍。
按調度方式
非搶占式調度算法
- 非搶占式輪轉調度算法:用于工業生產的群控系統中。
- 非搶占式優先調度算法:用于有一定時間要求的實時控制系統之中。
搶占式調度算法 (按搶占發生的時間)
- 基于時鐘中斷搶占的優先權調度算法
- 立即搶占的優先權調度算法
搶占式調度算法
最早截止時間優先算法
算法是根據任務的開始截止時間和完成截止時間來確定任務的優先級。截止時間越早,其優先級越高。就緒隊列中任務按其截止時間排列,隊首任務先分配處理機。
非搶占式調度方式用于非周期實時任務
搶占式調度方式用于周期實時任務
非搶占式調度方式用于非周期實時任務
搶占式調度方式用于周期實時任務
有兩個周期性任務,任務 A 的周期時間為 20ms,每個周期處理時間為 10ms;任務 B 的周期時間為 50ms,每個周期處理時間為 25ms。兩個任務的到達時間,最后期限和執行時間如下圖:
固定優先級調度(A 有較高優先級)
固定優先級調度(B 有較高優先級)
最早截止完成時間優先算法
最低松弛度優先算法
最低松弛度優先算法(LLF,Least Laxity First)
低松弛 = 高緊急
算法是根據任務緊急(或松弛)的程度,來確定任務的優先級。任務的緊急度越高,其優先級越高,并使之優先執行。
算法采用搶占調度方式,可用于調度具有完成截止時間的周期性實時任務。
松弛度 = 必須完成時間 - 本身剩余運行時間 - 當前時間
例如:
在一個實時系統中,有兩個周期性實時任務 A 和 B,任務 A 要求每 20ms 執行一次,執行時間為 10ms;任務B 只要求每 50ms 執行,執行時間為 25ms。試按最低松弛度優先算法進行調度。
優先級倒置
優先級倒置現象
高優先級進程(或線程)被低優先級進程(或線程)延遲或阻塞。
例如:有三個完全獨立的進程 Task A、Task B 和 TaskC,Task A 的優先級最高,Task B 次之,Task C 最低。Task A 和 Task C 共享同一個臨界資源 X。
根據優先級原則,高優先級進程優先執行。但此例中Task A 和 Task C 共享同一個臨界資源,出現了不合理的現象。
高優先級進程 Task A 因低優先進程 Task C 被阻塞,又因為低優先進程 Task B 的存在延長了被阻塞的時間。
優先級倒置的解決方法
Priority Ceiling
進程 Task C 在進入臨界區后,Task C 所占用的處理機就不允許被搶占。這種情況下,Task C 具有最高優先級(Priority Ceiling) 。
如果系統中的臨界區都較短且不多,該方法是可行的。反之,如果 Task C 臨界區非常長,則高優先級進程Task A 仍會等待很長的時間,其效果無法令人滿意。
Priority Inheritance
當高優先級進程 Task A 要進入臨界區使用臨界資源 X時,如果已經有一個低優先級進程 Task C 正在使用該資源,可以采用優先級繼(Priority Inheritance)的方法。
此時一方面 Task A 被阻塞,另一方面由 Task C 繼承Task A 的優先級,并一直保持到 Task C 退出臨界區。
總結
以上是生活随笔為你收集整理的【操作系统】实时调度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gardner环数控振荡器
- 下一篇: [引用]论文:基于CWM的ETL原型系统