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