您何時需要實時操作系統(tǒng)?
擴展實時操作系統(tǒng)以針對應(yīng)用開發(fā)的需求
本文引用地址:http://www.ex-cimer.com/article/140324.htm盡管使用通用操作系統(tǒng)在確定性環(huán)境中有缺陷,但使用它們還是有一些優(yōu)點的。這些優(yōu)點就包括支持廣泛使用的API,以Linux為例,其開源的模型。開源使得開發(fā)人員能夠根據(jù)應(yīng)用需求來定義操作系統(tǒng)的組件,在解決問題時也能節(jié)省大量的時間。實時操作系統(tǒng)廠商不能不重視這點。所以對POSIX API(Linux以及各種類Unix系統(tǒng)使用的相同的API)的支持就是重要的第一步。因此要提供文檔清晰的源代碼和定制工具使得能夠滿足嵌入式開發(fā)人員的需求和設(shè)計挑戰(zhàn)。
實時操作系統(tǒng)的架構(gòu)也發(fā)揮了重要作用。例如,與使用其他系統(tǒng)架構(gòu)相比,基于微內(nèi)核設(shè)計的實時操作系統(tǒng)能從根本上簡化操作系統(tǒng)的定制過程。在微內(nèi)核實時操作系統(tǒng)中,只有少數(shù)核心基本對象(如信號、計時器、調(diào)度程序)才會存在于內(nèi)核中。所有其他組件——設(shè)備驅(qū)動程序、文件系統(tǒng)、協(xié)議棧、用戶應(yīng)用程序,都會作為單獨、內(nèi)存受保護的進程在內(nèi)核外部運行(參見圖 5)。因此,開發(fā)定制的驅(qū)動程序和應(yīng)用程序特定的操作系統(tǒng)擴展組件不需要專門的內(nèi)核調(diào)試工具或內(nèi)核專家。實際上,作為用戶空間程序,開發(fā)這種操作系統(tǒng)擴展組件和開發(fā)標準應(yīng)用程序一樣容易,因為開發(fā)人員都能使用標準、源代碼級工具和技術(shù)對它們進行調(diào)試。
例如,如果設(shè)備驅(qū)動程序試圖訪問其進程空間之外的內(nèi)存,操作系統(tǒng)就能識別相關(guān)進程,指出故障位置并創(chuàng)建可使用源代碼級調(diào)試工具查看的進程轉(zhuǎn)儲文件。轉(zhuǎn)儲文件可包括調(diào)試程序確定導致故障的源代碼行所需的所有信息以及診斷信息(如數(shù)據(jù)項的內(nèi)容和函數(shù)調(diào)用的歷史)。
這種架構(gòu)還提供了絕佳的故障隔離和恢復功能:如果驅(qū)動程序、協(xié)議?;蚱渌到y(tǒng)服務(wù)出現(xiàn)故障,它可在不影響其他服務(wù)或或損壞操作系統(tǒng)內(nèi)核的情況下完成這種操作。實際上,“軟件監(jiān)視程序”會持續(xù)監(jiān)測此類事件,并能以動態(tài)方式重啟出現(xiàn)故障的服務(wù),無需重啟整個系統(tǒng)或以任何方式干擾用戶。同樣,驅(qū)動程序和其他服務(wù)都能以動態(tài)方式停止、啟動或升級,無需關(guān)閉系統(tǒng)?! ?/p>
圖 5. 在微內(nèi)核實時操作系統(tǒng)中,系統(tǒng)服務(wù)作為標準的用戶空間進程運行,
因而簡化了操作系統(tǒng)的定制任務(wù)。
絕不可小看這些優(yōu)勢——因為破壞實時性能的最大威脅就是不定期的系統(tǒng)重啟!甚至軟件更新中包含的以可控制的方式進行的預(yù)定重啟都會干擾系統(tǒng)運行。為保證一直滿足最后期限的要求,軟件開發(fā)人員必須使用即使在出現(xiàn)軟件故障或進行服務(wù)升級時,也能保持連續(xù)可用的操作系統(tǒng)。
戰(zhàn)略決策
實時操作系統(tǒng)能使復雜的應(yīng)用程序變得可預(yù)測而且可靠;實際上,實時操作系統(tǒng)實現(xiàn)的精確時間控制,就是通用操作系統(tǒng)無法提供的可靠功能。(如果基于通用操作系統(tǒng)的系統(tǒng)由于計時錯誤而無法正常運行,我們可以合理認為該系統(tǒng)不可靠。)選擇正確的實時操作系統(tǒng)本身仍然是一項復雜的任務(wù)。實時操作系統(tǒng)的底層架構(gòu)是重要標準,而其他因素也不例外。具體包括:
- 調(diào)度算法的靈活選擇——實時操作系統(tǒng)支持調(diào)度算法選擇(先入先出 [FIFO] 調(diào)度、循環(huán)調(diào)度、偶發(fā)調(diào)度等)嗎?開發(fā)人員能根據(jù)每個線程分配這些算法嗎?或者實時操作系統(tǒng)要求他針對系統(tǒng)中的所有線程分配一種算法嗎?
- 時間分區(qū)——實時操作系統(tǒng)支持能為進程提供有保證的 CPU 周期預(yù)算的時間分區(qū)嗎?這種保證簡化了對多個開發(fā)團隊或供應(yīng)商的子系統(tǒng)進行集成的工作。它們還能確保關(guān)鍵任務(wù)在系統(tǒng)遭到拒絕服務(wù) (DoS) 攻擊和其他惡意攻擊時,保持可用并滿足其最后期限的要求。
- 支持多核處理器——向多核處理器遷移的功能已成為各種高性能設(shè)計的基本要求。實時操作系統(tǒng)是否支持多重處理模式(對稱多重處理、不對稱多重處理、混合多重處理)的選擇,并幫助開發(fā)人員最大限度地利用多核硬件?允許開發(fā)人員診斷和優(yōu)化多核系統(tǒng)性能的系統(tǒng)跟蹤工具支持實時操作系統(tǒng)嗎?如果沒有能顯示資源競爭、線程的過度遷移和其他多核設(shè)計常見問題的工具,那么對多核系統(tǒng)進行優(yōu)化就會變得異常麻煩和費時。
- 遠程診斷工具——由于許多嵌入式系統(tǒng)都不允許有故障時間,因此實時操作系統(tǒng)的供應(yīng)商應(yīng)提供能在不中斷系統(tǒng)服務(wù)的情況下分析系統(tǒng)運行的診斷工具。尋找能提供運行分析工具(用于系統(tǒng)剖析、應(yīng)用程序剖析和內(nèi)存分析的)的供應(yīng)商。
- 開放的開發(fā)平臺——實時操作系統(tǒng)供應(yīng)商能否提供基于開放平臺(如 Eclipse)的開發(fā)環(huán)境,允許開發(fā)人員“插入”他們最喜歡的第三方工具以便進行建模、版本控制等工作?或者,開發(fā)環(huán)境是基于專有技術(shù)的嗎?
- 圖形用戶界面——實時操作系統(tǒng)使用基元圖形庫嗎?或者它提供了高級圖形處理功能(如多層界面、基于 Flash 的人機界面、多目標顯示、3D 加速渲染和真正的窗口系統(tǒng))嗎?開發(fā)人員能輕松地自定義圖形用戶界面的視覺效果嗎?圖形用戶界面能同時顯示和輸入多種語言(中文、朝鮮語、日語、英語、俄語等)嗎?2D(如 Flash)和 3D(如 OpenGL ES)應(yīng)用程序能輕松共享同一屏幕嗎?
- 標準應(yīng)用程序接口——實時操作系統(tǒng)限制開發(fā)人員使用專有應(yīng)用程序接口嗎?或者它提供了對標準應(yīng)用程序接口(如 POSIX 和 OpenGL ES)的認證支持,使各種運行環(huán)境之間的代碼移植變得更容易?實時操作系統(tǒng)還提供對應(yīng)用程序接口的綜合支持嗎?還是只支持一小部分已定義接口的子集?
- 源代碼——實時操作系統(tǒng)供應(yīng)商允許開發(fā)人員輕松訪問源代碼以簡化調(diào)試過程,并幫助他們根據(jù)項目的具體需求定制實時操作系統(tǒng)服務(wù)嗎?
- 面向數(shù)字媒體的中間件——對數(shù)字媒體的靈活支持已成為各種嵌入式系統(tǒng)(如車載收音機、醫(yī)療設(shè)備、工業(yè)控制系統(tǒng)、媒體服務(wù)器以及消費電子產(chǎn)品)的設(shè)計要求。系統(tǒng)可能需要處理多種媒體資源(如 USB 閃存、MP3 播放器、網(wǎng)絡(luò)流媒體、藍牙電話等),分辨多種數(shù)據(jù)格式(如 MP3、WMA、AAC、MPEG-2、MPEG-4 等)并支持各種數(shù)字版權(quán)管理 (DRM) 方案。通過為數(shù)字媒體提供設(shè)計精密的中間件,實時操作系統(tǒng)供應(yīng)商能避免連接多媒體資源、組織數(shù)據(jù)以及初始化適當?shù)臄?shù)據(jù)處理路徑所需的大量軟件工作。另外,設(shè)計完善的中間件解決方案還能靈活支持新的數(shù)據(jù)源(如下一代 iPod),無需修改用戶界面或其他軟件組件。
選擇實時操作系統(tǒng)是項目團隊的戰(zhàn)略性決策。如果實時系統(tǒng)供應(yīng)商針對以上問題給出了清楚的答案,那么您離現(xiàn)在和將來選擇到完全適用的實時操作系統(tǒng)又近了一步。
[1] Michael Barr“優(yōu)先級反轉(zhuǎn)簡介”《嵌入式系統(tǒng)編程》(Embedded Systems Programming),第 15 卷:2002 年 4 月第 4 版。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論