
進階的行程管理
|
215
• 必須非常小心忙碌等待(busy waiting)的問題。如果一個即時行程忙碌等待一個優
先權較低之行程所把持的一個資源,則即時行程將永遠忙碌等待下去。
• 開發一個即時行程的時候,讓一個終端機保持開啟的狀態,並以較高的優先權(相
較於進行開發的行程)將它執行成即時行程。發生緊急狀況時,終端機將依然會有
反應,允許你終止(kill)失控的即時行程。(因為終端機依然是閒置著,等待鍵盤
的輸入,所以不會干擾到其他的即時行程。)
• 使用
chrt
公用程式(
util-linux
工具套件的一部分)可輕易取得和設定其他行程的
即時屬性。使用此工具可輕易執行一個即時排班類型中的任何程式(例如前面所提
到的終端機)或是變更現有應用程式的即時優先權。
決定論
即時行程的重要性在於事情已成定論(determinism)。在即時運算中,行動已成定
論:如果輸入一樣,則所花的時間一樣,所產生的結果也一樣。在現代的電腦中則
有所不同,因為有些東西的定義已經完全不一樣了:快取區有多個層級(導致命中或
失誤的不可預測性)、多個處理器、分頁(paging)、置換(swapping)以及多任務化
(multitasking)嚴重破壞了特定行動需要花多少時間的可估計性。的確,我們已經達到
了每個行動(硬碟的存取除外)都「奇快無比」的地步,但是在此同時,現代的系統也
讓我們難以準確估計特定操作實際上將花多少時間。
一般來說,即時應用程式往往會嘗試限制不可預測性,特別是情況最糟的延遲。接下來
我們會探討解決此類問題的二種方法。 ...