速率單調排程(rate-monotonic scheduling, RMS)
想像你有好幾項週期性的家事,各按自己的時鐘重複:每分鐘檢查一次煙霧警報器、每小時澆一次花、每週倒一次垃圾。一條合理的經驗法則是把最頻繁的家事給最高優先,因為它在必須再次重複前的餘裕最少。速率單調排程正是這條法則,並為跑週期性任務的處理器精確化:依任務「多常」執行來指派固定優先順序——週期越短(速率越高),優先順序越高。
把場景說精確。你有一組週期性任務;任務 i 每 Ti 個時間單位執行一次(它的週期),每次最多需要 Ci 個 CPU 單位(它的最壞情況執行時間),且必須在下次釋放前完成(期限 = 週期)。RMS 依速率指派優先順序:週期最小的任務得到最高優先,而這些優先順序是「固定」(靜態)的——執行期絕不改變。排程器是搶占式,總是執行最高優先的就緒任務。漂亮的結論由 Liu 與 Layland 在 1973 年證明:這套固定優先指派在所有固定優先方案中是「最佳」的(若有任何固定優先指派能達成所有期限,速率單調的也能),而且有個簡單的充分檢驗:若總 CPU 使用率,即所有任務 Ci/Ti 的總和,對 n 個任務不超過 n*(2^(1/n) - 1),則所有期限都獲保證。該上界在一個任務時是 1.0,隨 n 變大遞減趨近約 0.693(ln 2)。
它之所以重要,是因為它給嵌入式設計者一份簡單、可分析、低負擔的配方,去保證一組週期性即時任務全部達成期限,而且優先順序你能在紙上算出。誠實的提醒:經典的使用率上界假設任務是獨立、週期性、期限等於週期、無阻塞且瞬間搶占——真實系統會違反這些(共享資源、抖動、中斷負擔),所以當使用率高於上界時,工程師改用更精確的回應時間分析。該上界是「充分」而非必要:使用率高於 0.693「不」代表會錯過期限,只代表那個快速檢驗不再能證明安全,你需要更細的分析。而 RMS 在最壞的保證情況下會留下約 31% 的 CPU 無法使用——最早期限優先可達 100%,但要付出動態優先順序的代價。
三個週期性任務(週期 T、最壞情況時間 C): A:T=4 ms, C=1 ms -> 週期最短 -> 「最高」優先 B:T=8 ms, C=2 ms -> 中等優先 C:T=16 ms, C=4 ms -> 週期最長 -> 「最低」優先 使用率 = 1/4 + 2/8 + 4/16 = 0.75 n=3 的 Liu-Layland 上界 = 3*(2^(1/3)-1) ~= 0.78 0.75 <= 0.78 -> 簡單檢驗保證所有期限達成。
週期最短者得最高優先;若總使用率低於 Liu-Layland 上界,簡單檢驗即可證明所有期限達成。
使用率上界是充分而非必要:高於約 0.693「不」代表會錯過期限,只代表快速檢驗無法證明安全,你需要精確的回應時間分析。RMS 也把可保證使用的 CPU 上限壓在 100% 以下。