1. 程式人生 > >【作業系統】實時排程

【作業系統】實時排程

實現實時排程的基本條件

  • 提供必要的排程資訊(就緒時間、開始截止時間和完成截止時間、處理時間、資源要求、優先順序)
  • 系統處理能力強。在實時系統中,若處理機的處理能力不夠強,則有可能因處理機忙不過來而致使某些實時任務不能得到及時處理。
  • 採用搶佔式的排程機制
  • 具有快速切換機制

實時排程的 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 退出臨界區。

圖示