實時操作系統(RTOS)廣泛應用于消費電子、娛樂產品、家用電器、工業設備、醫療儀器、軍事武器和科研設備中,在航空航天控制系統、汽車工業、銀行金融、機器人系統、安全和電信以及交通控制等安全攸關領域發揮著關鍵作用。
RTOS首先至少需支持優先級搶占式調度,任務間同步與通信應能避免優先級反轉, 并提供高精度定時器。RTOS往往運行在資源受限的設備,調度資源確定性與調度時間確 定性是重要需求,進而可以保證在事先確定的時間內使用系統資源。
舉個例子,當一個優先級更高的任務進入就緒狀態時,當前的任務會停止運行。這意味著一個任務可以處在三個狀態之一:運行中(執行中)、就緒和掛起。可以用如下狀態轉換圖描述任務在搶占式調度中的行為。只有在被RTOS調度時一個任務才能進入運行狀態,在此之前它必須處在就緒狀態,在基于優先級的系統中它還必須處在就緒隊列的第一位。
任務掛起或者被搶占時會離開運行狀態。當任務結束執行,或者因為某種原因無法繼續時,任務會掛起,比如在本例中任務需要進行特定時長的延時。當任務進入掛起狀態時會釋放處理器的使用權,從而允許其他任務運行(見下圖)。釋放可以是任務自行觸發的,也可以是 RTOS強制的。一個運行中的任務可以用兩種方式自行釋放處理器:其一,任務完成了必需的操作退出;其二,任務因為內部產生的信號(內部事件)放棄對處理器的控制。
當搶占發生時,任務即使沒有完成也會被迫放棄處理器,此時任務并沒有被掛起,而是會返回就緒隊列。任務在隊列中的位置是由優先級決定的,它會在隊列中等待到下一次被調度。當條件滿足時任務會從掛起狀態進入就緒狀態,比如完成一個事件、經過特定的時間或者某種事件和時間的組合。不同的任務有不同的掛起狀態。
簡單示例
如果需要,任務模型可以進一步擴充并顯示任務的創建和刪除。在基于優先級的系統中,任務的就緒和再調度會變得很復雜,下圖是一個簡單的例子,圖中展示了優先級對任務在就緒和掛起隊列中位置的影響,以及當任務就緒時就緒隊列是如何變化的。