很多人認為實時操作系統(tǒng)(RTOS)相當于軟件中的賽車:小、快、高度協(xié)調。但這種比喻不夠全面,沒有充分說明RTOS使你的設計受益的情況。
RTOS使設計人員能夠建立一個復雜的系統(tǒng)。這個系統(tǒng)能對任何時間要求苛刻的事件作出響應,在正確的時間做一個正確的動作。例如,要求系統(tǒng)必須在5μs內對某種告警情況作出響應。一個好的RTOS能使你的系統(tǒng)始終滿足時限的要求,即使在重負荷的情況下也一樣。
優(yōu)先級
在RTOS中,過程按優(yōu)先級執(zhí)行。時限緊迫的過程投入運行時,可以立即從低優(yōu)先級的過程接管CPU。而且高優(yōu)先級過程在結束前,能一直繼續(xù)運行,除非它被一個更高優(yōu)先級的過程所搶占。這種“搶占” 調度方式可以使對于時間要求嚴格的過程滿足時限的要求,無論是有多少其他過程正在運行。
RTOS不僅要使任何應用程序和驅動程序符合這種優(yōu)先級的安排,而且也包括所有的中斷操作——響應中斷的一小段代碼。在任何復雜的系統(tǒng)中,都會有多個中斷同時發(fā)生。例如,在一個心臟監(jiān)視設備中,當一個傳感器記錄病人的心跳變化時,或通過網絡接收病人的測量數據時,護士可能會去點擊鼠標。顯然,一些中斷(如心率的變化)應立即得到關注,而其他的可以稍等一下或被搶占。對各種中斷分配一個優(yōu)先級,使之具有中斷嵌套能力,可保證重要的中斷放在第一位安排。
可靠性
RTOS應該好好利用存儲器管理單元,這是一個大多數現(xiàn)代微處理器中都有的構成部件。以傳統(tǒng)的“平鋪”(flat)體系結構為例,大多數“成品的”或“自建的”RTOS仍在使用這種體系結構。它把所有的模塊放在同一個地址空間中,作為操作系統(tǒng)的內核(見圖1),沒有任何存儲器的保護。結果任何模塊,不管它是多么無關緊要,也能通過內核對存儲器進行重寫,導致整個系統(tǒng)的崩潰。
有少數的RTOS針對這個問題,使應用程序運行在分離的有存儲器保護的地址空間。如果一個應用程序試圖侵害存儲器,MMU就會捕獲這個錯誤,從而把這個問題隔離開來。但不幸的是,這些操作系統(tǒng)仍和驅動程序、協(xié)議、文件系統(tǒng)綁在一起,并且其他系統(tǒng)可對此內核服務。從而使得這些模塊中的任何一個都能導致內核發(fā)生致命的錯誤。
其他的操作系統(tǒng)的體系結構,如QNX RTOS 的微核體系結構,則向前近了一步,可使任何系統(tǒng)級的軟件部件在其各自的MMU所保護的地址空間運行(見圖2)。用這種方法,出錯的驅動程序和協(xié)議則不再成為單個就起作用的失效點,而是可以在它們引起其他服務失效前,就使它們停止或重新啟動,不必重新開機引導。