單調速率排程(RMS)演算法(詳解版)

2020-07-16 10:04:35
單調速率(RMS)排程演算法採用搶佔的、靜態優先順序的策略,排程週期性任務。

當較低優先順序的進程正在執行並且較高優先順序的進程可以執行時,較高優先順序進程將會搶占低優先順序。在進入系統時,每個週期性任務會分配一個優先順序,它與其周期成反比,即周期越短,優先順序越高;週期越長,優先順序越低。

這種策略背後的理由是:更頻繁地需要 CPU 的任務應分配更高的優先順序。此外,單調速率排程假定:對於每次 CPU 執行,周期性進程的處理時間是相同的。也就是說,在每次進程獲取 CPU 時,它的 CPU 執行長度是相同的。

舉一個例子,我們有兩個進程 P1 和 P2。P1 和 P2 的週期分別為 50 和 100,即 ρ1 = 50 和 ρ2= 100。P1 和 P2 的處理時間分別為 t1 = 20 和 t2 = 35。每個進程的截止期限要求,它在下一個週期開始之前完成 CPU 執行。

首先,我們應問自己是否可能排程這些任務以便每個進程都能滿足截止期限。如果我們按執行與周期的比率 tii 測量一個進程的 CPU 利用率,那麼 P1 的 CPU 利用率 20/50 = 0.40,P2 的是 35/100 = 0.35,總的 CPU 利用率為 75%。因此,我們似乎可以排程這些任務以便滿足它們的截止期限,並且仍讓 CPU 有多餘可用的時間。

假設為 P2 分配比 P1 更高的優先順序。P1 和 P2 的執行情況如圖 1 所示。

當 P<sub>2</sub> 的優先級高於 P<sub>1</sub> 時的任務調度
圖 1 當 P2 的優先順序高於 P1 時的任務排程