嵌入式與裸機

最早期限優先排程(earliest-deadline-first, EDF)

想像一個忙碌的學生,有好幾份作業在不同時間到期。最自然的策略很簡單:永遠做「最快」到期的那份。你不為各科目訂永久排名;你只是不斷問「下一個到期的是什麼?」然後去做。最早期限優先排程(EDF)對處理器而言正是這個策略:每一刻都執行期限在時間上最接近的任務。

與速率單調排程的對比是它的核心。速率單調給每個任務一個依其週期決定、一次定案的「固定」優先順序。EDF 用「動態」優先順序:一個任務的緊急程度取決於它當前的期限有多近,而這會隨時間改變,所以同一個任務現在可能高優先、稍後低優先。排程器是搶占式,總是挑出絕對期限最早的就緒任務;平手可任意決勝。引人注目的理論結論是:EDF 對於在單一處理器上排程獨立的週期性(或零星)任務是「最佳」的:若有任何排程演算法能達成所有期限,EDF 也能。而它的可行性檢驗美妙地簡單——對於期限等於週期的週期性任務,EDF 達成所有期限「若且唯若」總使用率(Ci/Ti 的總和)不超過 1.0。換言之,EDF 可用到 100% 的 CPU 仍保證期限,而速率單調只保證約 69%。

它之所以重要,是因為 EDF 在仍保證期限的前提下,從處理器榨出最多可排程的工作,當 CPU 時間珍貴時這很吸引人。讓 RMS 依然受歡迎的誠實取捨:EDF 需要動態優先順序,所以執行期負擔較大(排程器必須追蹤並比較絕對期限),而它在「過載」下的行為較差——若你推過 100% 使用率,RMS 會可預測地降級(低優先任務先錯過),而 EDF 可能出現「骨牌效應」,一個錯過的期限串聯成許多。EDF 在簡單的固定優先 RTOS 核心上也較難實作,這是許多真實系統儘管使用率上界較低仍採速率單調的原因之一。那個 100% 上界同樣假設理想化的獨立任務模型,就像 RMS 的上界一樣。

在 t=0,有三個就緒任務,絕對期限如下: A:期限在 t=10 B:期限在 t= 4 <- 最早 -> 現在執行 B C:期限在 t=20 EDF 先執行 B。若在 t=2 來了新任務 D、期限 t=3, D 的期限此刻最早 -> EDF 搶占 B 並執行 D。 可行性:週期性任務達成所有期限若且唯若 sum(Ci/Ti) <= 1.0。

永遠執行最近的期限;優先順序隨期限逼近而改變。EDF 可達 100% 使用率,而 RMS 只保證約 69%。

EDF 可達 100% 使用率,但過載時降級嚴重(一個錯過的期限可能骨牌般串聯成許多),且其動態優先順序負擔較大——這正是許多固定優先 RTOS 核心仍偏好速率單調的原因。

又称
EDFearliest deadline firstdeadline scheduling最早期限優先EDF 排程