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