RTOS的必備特性
用于嵌入式環(huán)境的操作系統(tǒng)RTOS與桌面操作系統(tǒng)有很多本質(zhì)的不同。這些不同的特性導(dǎo)致產(chǎn)品開發(fā)的不同結(jié)果。
嵌入式環(huán)境給人的第一印象就是占用空間小。所以,普通的Linux或者Windows操作系統(tǒng)要變成嵌入式操作系統(tǒng),首先就是要進行裁剪。然而,與桌面環(huán)境相比,嵌入式環(huán)境對于操作系統(tǒng)系統(tǒng)要求不僅僅是“小”,二者在設(shè)計要求上有著本質(zhì)的不同。這些不同主要體現(xiàn)在可裁剪性、實時性和可靠性等三個方面。
隨機應(yīng)變――可裁剪性
從硬件環(huán)境來看,桌面操作系統(tǒng)具有標準化的CPU、存儲和I/O架構(gòu),而嵌入式環(huán)境中的RTOS的硬件環(huán)境只有標準化的CPU,沒有標準化的存儲、I/O和顯示器架構(gòu)。
從應(yīng)用環(huán)境來看,桌面操作系統(tǒng)面向復(fù)雜多變的應(yīng)用,而RTOS面向單一設(shè)備的單一應(yīng)用。
從開發(fā)界面來看,桌面操作系統(tǒng)試圖給開發(fā)人員提供一個“黑箱”,讓開發(fā)人員通過一系列標準的系統(tǒng)調(diào)用來使用操作系統(tǒng)中的功能,而嵌入式試圖為開發(fā)人員提供一個“白箱”,讓開發(fā)人員可以自主控制系統(tǒng)的所有資源。
總之,桌面操作系統(tǒng)的研究開發(fā)指導(dǎo)思想是盡可能在不改變自身的前提下具有廣泛的適應(yīng)性。也就是說:不論應(yīng)用環(huán)境怎么變化,最好都不要對自身內(nèi)部產(chǎn)生什么影響,也不要求自身做太多的變化。反過來,應(yīng)用于嵌入式環(huán)境的RTOS,在研發(fā)的時候就必須立足于改變自身、開放自身,讓開發(fā)人員可以根據(jù)硬件環(huán)境和應(yīng)用環(huán)境的不同而對操作系統(tǒng)進行靈活的裁剪和配置,因為對于任何一個具體的嵌入式設(shè)備,它的功能是確定的,因此只要從原有操作系統(tǒng)中把這個特定應(yīng)用所需的功能拿進來即可。
應(yīng)當指出的是:如果一個操作系統(tǒng)平臺只能依靠手工的方式去掉一些代碼,這根本就不是可裁剪性。所謂可裁剪性是在軟件工程階段利用軟件配置方法實現(xiàn)軟件構(gòu)件的“即插即用”。
可裁剪性帶給用戶的一個最直接的好處是硬件成本降低,這對于成本敏感的應(yīng)用,如消費電子類設(shè)備,具有重要的現(xiàn)實意義。由于設(shè)備中只包含應(yīng)用程序用到的那部分操作系統(tǒng)功能,這就使得系統(tǒng)變得簡單、易把握,從而提高系統(tǒng)的可靠性。
精確到位――實時性
許多人都把實時性理解為速度快。那么,速度快到什么程度才算是達到實時性呢?其實,所謂實時性,其核心含義在于確定性,而不是單純的速度快。也就是說,RTOS所要求的是在規(guī)定的時間內(nèi)做完應(yīng)該做的事情,并且操作系統(tǒng)的行為(執(zhí)行線索)是確定的,這是寫出高可靠性程序的基礎(chǔ)。如果完成同樣的動作,有的時候快,有的時候慢,且執(zhí)行線索千差萬別,程序員無法把握,可靠性就無從保證。
嵌入式系統(tǒng)為什么對實時性要求那么高呢?因為嵌入式系統(tǒng)主要是對儀器設(shè)備的動作進行監(jiān)測控制的,而一般的桌面操作系統(tǒng)基本上是根據(jù)人在鍵盤和鼠標發(fā)出的命令進行工作。相對而言,儀器設(shè)備的動作具有嚴格的、機械的時序要求,而人的動作和反應(yīng)在時序上并不那么嚴格。比如,用于控制火箭發(fā)動機的嵌入式系統(tǒng),它所發(fā)出的指令不僅要速度快,而且多個發(fā)動機之間的時序要求非常嚴格,否則就會差之毫厘、謬之千里。在這樣的應(yīng)用環(huán)境中,非實時的普通操作系統(tǒng)無論如何是無法適應(yīng)的。
如果我們所開發(fā)的設(shè)備并不是像航空航天器那樣生命攸關(guān)或者生產(chǎn)控制那樣的關(guān)鍵任務(wù)系統(tǒng),而是像消費電子類那樣,即使出現(xiàn)錯誤也不會造成災(zāi)難性后果的設(shè)備,那么實時性(嚴格地講是確定性)是否還具有現(xiàn)實意義呢?答案是肯定的!設(shè)備的高可靠性可以有效地降低維護成本;軟件運行效率高也會降低對CPU的要求,從而降低硬件成本。對于消費電子產(chǎn)品這類價格十分敏感的產(chǎn)品,實時性、可靠性仍然是非常值得重視的問題。
堅如磐石DD可靠性
桌面操作系統(tǒng)與RTOS相比,另一個差別就是對于穩(wěn)定性、可靠性方面的設(shè)計思路。一方面,桌面操作系統(tǒng)比較龐大、復(fù)雜,而RTOS比較小巧、簡捷,而“越簡單、越可靠,越復(fù)雜、故障概率越大”這又是一個常理。另一方面,更重要的是:桌面操作環(huán)境與嵌入式環(huán)境在設(shè)計思路上有一個重大的不同――桌面環(huán)境假定應(yīng)用軟件與操作系統(tǒng)相比而言可以是不可靠的,而嵌入式環(huán)境假定應(yīng)用軟件與操作系統(tǒng)一樣可靠。
運行于嵌入式環(huán)境中的RTOS要求應(yīng)用軟件具有與操作系統(tǒng)同樣的可靠性,這種設(shè)計思路對應(yīng)用開發(fā)人員提出了更高的要求,同時也要求操作系統(tǒng)自身足夠開放。
著名的“木桶原理”告訴我們,局部的不足會導(dǎo)致整體的缺陷。要保證系統(tǒng)的可靠性,必須保證系統(tǒng)中每一個部分都是可靠的,任何部分的不可靠都會導(dǎo)致系統(tǒng)整體的不可靠。大多數(shù)桌面系統(tǒng)都是上千萬行代碼的龐大而復(fù)雜的系統(tǒng),即使有源代碼程序員也難以把握。而且對開發(fā)人員來說,桌面系統(tǒng)龐雜的細節(jié)是隱蔽在一個個的固定的接口下的,是一個黑箱,很難把握具體執(zhí)行的線索。即便其內(nèi)核是足夠可靠的,但它的應(yīng)用環(huán)境復(fù)雜多樣、千差萬別,其中常常有一些應(yīng)用并不是那么穩(wěn)定可靠,從而破壞了整體系統(tǒng)的可靠性。相反,RTOS對軟件開發(fā)人員來說是完全開放的,是一個白箱,允許開發(fā)人員非常清楚地了解和掌握操作系統(tǒng)內(nèi)部情況,對存儲器中的每一位和每一個I/O接口進行操作控制,從而可以設(shè)計出高效穩(wěn)定的應(yīng)用軟件。
評論