电竞比分网-中国电竞赛事及体育赛事平台

分享

5G、IoT 爆發(fā)前夕,我們必須了解的操作系統(tǒng)! | 碼書(shū)

 Tomsp360lib 2019-03-25

繼互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)之后,萬(wàn)物互聯(lián)的物聯(lián)網(wǎng)時(shí)代正襲面而來(lái)。而作為開(kāi)發(fā)者,想要入門(mén)物聯(lián)網(wǎng),首先需要對(duì)該領(lǐng)域的計(jì)算機(jī)及相關(guān)設(shè)備中唯一管理計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序之操作系統(tǒng)有一個(gè)全面的了解。

在本文中,我們將以 IoT OS 的基石嵌入式實(shí)時(shí)操作系統(tǒng)為核心,解讀物聯(lián)網(wǎng)時(shí)代那些不容錯(cuò)過(guò)的操作系統(tǒng)發(fā)展與應(yīng)用。

何為嵌入式系統(tǒng)操作系統(tǒng)?

嵌入式系統(tǒng)是一種完全嵌入在裝置或設(shè)備內(nèi)部為滿足特定需求而設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),生活中常見(jiàn)的嵌入式系統(tǒng)就有:電視機(jī)頂盒、路由器、電冰箱、微波爐與移動(dòng)電話等。它們都具有某種特定的功能:對(duì)于電視機(jī)頂盒而言,它用來(lái)播放網(wǎng)絡(luò)中的電視節(jié)目;同樣,路由器用于選擇最優(yōu)路徑并正確轉(zhuǎn)發(fā)網(wǎng)絡(luò)報(bào)文。這類系統(tǒng)專用性強(qiáng)、功能相對(duì)單一,通常只針對(duì)特定的外部輸入進(jìn)行處理,然后給出相應(yīng)的結(jié)果,這樣的特點(diǎn)使得嵌入式系統(tǒng)只需具備相匹配的少量硬件資源,就可完成所需的特定功能,因而能使成本得到有效的控制。

通用計(jì)算機(jī)系統(tǒng)則恰恰相反,它們并不針對(duì)特定的需求,而是盡可能地去滿足各種需求,甚至在構(gòu)造硬件系統(tǒng)時(shí)還會(huì)考慮未來(lái)幾年的需求變化。例如,在人們購(gòu)買(mǎi)電腦時(shí),在自身有限的資金情況下,都希望盡可能獲得更高端的性能,用于多媒體、游戲及工作等。

嵌入式系統(tǒng)硬件框圖

嵌入式系統(tǒng)的硬件設(shè)備由一些芯片及電路組成,包括主控芯片、電源管理、開(kāi)發(fā)調(diào)試時(shí)用到的JTAG接口,也可能包含一些數(shù)據(jù)采集模塊、通信模塊及音頻/視頻模塊等。

實(shí)時(shí)系統(tǒng)

系統(tǒng)的實(shí)時(shí)性指的是在固定的時(shí)間內(nèi)正確地對(duì)外部事件做出響應(yīng)。在這段“時(shí)間內(nèi)”,系統(tǒng)內(nèi)部會(huì)做一些處理,例如輸入數(shù)據(jù)的分析計(jì)算、加工處理等。而在這段時(shí)間之外,系統(tǒng)可能會(huì)空閑下來(lái),做一些空余的事。以一個(gè)手機(jī)終端為例:當(dāng)一個(gè)電話撥入的時(shí)候,系統(tǒng)應(yīng)當(dāng)及時(shí)發(fā)出振鈴、聲音提示以通知主人有來(lái)電,詢問(wèn)是否進(jìn)行接聽(tīng);而在非電話撥入的時(shí)候,人們可以用它進(jìn)行一些其他操作,例如聽(tīng)音樂(lè)、玩游戲等。

從上面的例子我們可以看出,實(shí)時(shí)系統(tǒng)是一種需求傾向性的系統(tǒng),對(duì)于實(shí)時(shí)的任務(wù)需要在第一時(shí)間內(nèi)做出回應(yīng),而對(duì)非實(shí)時(shí)任務(wù)則可以在實(shí)時(shí)事件到達(dá)時(shí)為之讓路——被搶占。所以也可以將實(shí)時(shí)系統(tǒng)看成是一個(gè)等級(jí)系統(tǒng),不同重要性的任務(wù)具有不同的優(yōu)先等級(jí):重要的任務(wù)能夠優(yōu)先被響應(yīng)執(zhí)行,非重要的任務(wù)可以適當(dāng)往后推遲。

實(shí)時(shí)計(jì)算可以定義成這樣一類計(jì)算,即系統(tǒng)的正確性不僅取決于計(jì)算的邏輯結(jié)果,還依賴于產(chǎn)生結(jié)果的時(shí)間。有兩個(gè)關(guān)鍵點(diǎn),即正確地完成和在給定的時(shí)間內(nèi)完成,且兩者重要性是等同的。如果計(jì)算結(jié)果出錯(cuò),這將不是一個(gè)正確的系統(tǒng),而計(jì)算結(jié)果正確,但計(jì)算所耗費(fèi)的時(shí)間已經(jīng)偏離需求設(shè)定的時(shí)間,那么這也不是一個(gè)實(shí)時(shí)系統(tǒng)。下圖中描述了一個(gè)實(shí)時(shí)系統(tǒng)。

對(duì)于輸入的信號(hào)、事件,實(shí)時(shí)系統(tǒng)必須能夠在規(guī)定的時(shí)間內(nèi)得到正確的響應(yīng),而不管這些事件是單一事件、多重事件,還是同步信號(hào)或異步信號(hào)。

舉一個(gè)例子說(shuō)明:假設(shè)一顆子彈從20米外射向一個(gè)玻璃杯,子彈的速度是v米/秒,那么經(jīng)過(guò)t1=20/v秒后,子彈將擊碎玻璃杯。而如果有一個(gè)保護(hù)系統(tǒng)在檢測(cè)到子彈射出后,把玻璃杯拿走了,假設(shè)整個(gè)過(guò)程持續(xù)t2秒的時(shí)間,如果t2<t1,玻璃杯就不會(huì)被擊碎,那么就可以將這個(gè)系統(tǒng)看成是一個(gè)實(shí)時(shí)系統(tǒng)。

實(shí)時(shí)系統(tǒng)

和嵌入式系統(tǒng)類似,實(shí)時(shí)系統(tǒng)中也存在一定的計(jì)算單元,這些單元可對(duì)系統(tǒng)的環(huán)境及其內(nèi)部的應(yīng)用做出預(yù)計(jì),這也就是很多關(guān)于實(shí)時(shí)系統(tǒng)的書(shū)中所談及的可確定性,即系統(tǒng)可以在給定的時(shí)間(t秒)內(nèi)對(duì)一個(gè)給定事件做出響應(yīng)。多個(gè)事件、多個(gè)輸入的系統(tǒng)響應(yīng)的可確定性構(gòu)成了整個(gè)實(shí)時(shí)系統(tǒng)的可確定性(實(shí)時(shí)系統(tǒng)并不代表著對(duì)所有輸入事件具備實(shí)時(shí)響應(yīng),而是在指定的時(shí)間內(nèi)完成對(duì)事件的響應(yīng))。嵌入式系統(tǒng)的應(yīng)用領(lǐng)域十分廣泛,我們并不是要求所有的專用功能都具備實(shí)時(shí)性,只有當(dāng)系統(tǒng)對(duì)任務(wù)有嚴(yán)格時(shí)間限定時(shí),我們才關(guān)注它的實(shí)時(shí)性問(wèn)題。具體的例子包括實(shí)驗(yàn)控制、過(guò)程控制設(shè)備、機(jī)器人、空中交通管制、遠(yuǎn)程通信、軍事指揮與控制系統(tǒng)等。而對(duì)打印機(jī)這樣一個(gè)嵌入式應(yīng)用系統(tǒng),人們并沒(méi)有嚴(yán)格的時(shí)間限定,只有一個(gè)“盡可能快”的期望要求,因此,這樣的系統(tǒng)稱不上是實(shí)時(shí)系統(tǒng)。

軟實(shí)時(shí)與硬實(shí)時(shí)

正如上面所描述的,實(shí)時(shí)系統(tǒng)關(guān)注的不外乎兩點(diǎn),即時(shí)間的正確性和功能的正確性。事實(shí)上,衡量一個(gè)實(shí)時(shí)系統(tǒng)的正確性正是如此,就是要求系統(tǒng)能在給定的時(shí)間內(nèi)正確地完成相應(yīng)的任務(wù)。但現(xiàn)實(shí)中也存在這樣一種系統(tǒng),即在多數(shù)情況下,它能夠嚴(yán)格地在規(guī)定的時(shí)間內(nèi)完成任務(wù),但偶爾它也會(huì)稍微超出這個(gè)給定的時(shí)間范圍才能正確地完成任務(wù),我們通常把這種系統(tǒng)稱為軟實(shí)時(shí)系統(tǒng)。從系統(tǒng)對(duì)規(guī)定時(shí)間的敏感性的要求來(lái)看,實(shí)時(shí)系統(tǒng)可以分為硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)。

硬實(shí)時(shí)系統(tǒng)嚴(yán)格限定在規(guī)定的時(shí)間內(nèi)完成任務(wù),否則就可能導(dǎo)致災(zāi)難的發(fā)生,例如導(dǎo)彈攔截系統(tǒng),汽車引擎系統(tǒng)等,當(dāng)這些系統(tǒng)不能滿足規(guī)定的響應(yīng)時(shí)間時(shí),即使只是偶爾,也將導(dǎo)致車毀人亡等重大災(zāi)難的發(fā)生。

軟實(shí)時(shí)系統(tǒng),可以允許偶爾出現(xiàn)一定的時(shí)間偏差,但是隨著時(shí)間的偏移,整個(gè)系統(tǒng)的正確性也會(huì)隨之下降,例如可以將一個(gè)DVD播放系統(tǒng)看成一個(gè)軟實(shí)時(shí)系統(tǒng),允許它偶爾出現(xiàn)畫(huà)面或聲音延遲。

下圖繪制了這三種系統(tǒng)(非實(shí)時(shí)系統(tǒng)、軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng))的時(shí)效關(guān)系。

時(shí)間與效用的關(guān)系

從上圖中我們可以看出,當(dāng)事件觸發(fā),在時(shí)間t內(nèi)完成,則三類系統(tǒng)的效用是相同的。但是當(dāng)完成時(shí)間超出時(shí)間t時(shí),則效用發(fā)生了變化。

  • 非實(shí)時(shí)系統(tǒng):超過(guò)規(guī)定的時(shí)間t后,其效用緩慢下降。

  • 軟實(shí)時(shí)系統(tǒng):超過(guò)規(guī)定的時(shí)間t后,其效用迅速下降。

  • 硬實(shí)時(shí)系統(tǒng):超過(guò)規(guī)定的時(shí)間t后,其效用立即歸零。

嵌入式實(shí)時(shí)操作系統(tǒng)

在嵌入式設(shè)備中,除嵌入式操作系統(tǒng)之外,還有裸機(jī)程序,在主函數(shù)中編寫(xiě)一個(gè)大循環(huán),循環(huán)中是各個(gè)任務(wù)的功能實(shí)現(xiàn),而所有的任務(wù)都是平級(jí)順序執(zhí)行,下一個(gè)任務(wù)必須等待上一個(gè)任務(wù)運(yùn)行完畢才能開(kāi)始運(yùn)行,這個(gè)運(yùn)行著的大循環(huán)我們稱之為后臺(tái)程序。中斷可以打斷系統(tǒng)當(dāng)前的后臺(tái)任務(wù)優(yōu)先執(zhí)行,等中斷處理完畢,再回到原先后臺(tái)被中斷處繼續(xù)執(zhí)行后臺(tái)程序,中斷處理程序稱為前臺(tái)程序。下圖所示是一個(gè)前后臺(tái)系統(tǒng)。

前后臺(tái)系統(tǒng)

這樣的前后臺(tái)系統(tǒng)在實(shí)時(shí)性處理方面存在缺陷,例如任務(wù)1是重要任務(wù),需要能夠得到及時(shí)響應(yīng),在運(yùn)行任務(wù)4的時(shí)候,產(chǎn)生中斷,執(zhí)行任務(wù)1的條件被滿足,最理想的快速響應(yīng)方式是任務(wù)1立即被投入運(yùn)行,但是在前后臺(tái)程序中做不到,因?yàn)槿蝿?wù)是被順序執(zhí)行的,即使任務(wù)1焦急萬(wàn)分,也必須等待任務(wù)4處理完畢后才能被運(yùn)行。

嵌入式實(shí)時(shí)操作系統(tǒng)被設(shè)計(jì)成為一個(gè)搶占式系統(tǒng),能夠解決上述的實(shí)時(shí)性問(wèn)題,它把任務(wù)分為不同的優(yōu)先級(jí),當(dāng)運(yùn)行條件被滿足時(shí),高優(yōu)先級(jí)任務(wù)可以打斷低優(yōu)先級(jí)任務(wù)優(yōu)先運(yùn)行,從而極大地提高了系統(tǒng)實(shí)時(shí)性。實(shí)時(shí)操作系統(tǒng)執(zhí)行任務(wù)示意圖如下圖所示。

實(shí)時(shí)操作系統(tǒng)

當(dāng)然,嵌入式實(shí)時(shí)操作系統(tǒng)相比前后臺(tái)程序,不僅有實(shí)時(shí)性方面的進(jìn)步,它在多任務(wù)管理、任務(wù)間通信、內(nèi)存管理、定時(shí)器管理、設(shè)備管理等方面,也提供了一套完整的機(jī)制,極大程度上便利了嵌入式應(yīng)用程序的開(kāi)發(fā)、管理和維護(hù)。如果要和桌面操作系統(tǒng)進(jìn)行類比,那么前后臺(tái)程序開(kāi)發(fā)好比直接使用BIOS進(jìn)行開(kāi)發(fā),而使用嵌入式實(shí)時(shí)操作系統(tǒng)好比在Windows上進(jìn)行應(yīng)用開(kāi)發(fā)。

總體來(lái)說(shuō),嵌入式操作系統(tǒng)是應(yīng)用于嵌入式系統(tǒng)的軟件,用來(lái)對(duì)接嵌入式底層硬件與上層應(yīng)用軟件,操作系統(tǒng)將底層驅(qū)動(dòng)封裝起來(lái)為開(kāi)發(fā)者提供功能接口,極大地提高了應(yīng)用程序的開(kāi)發(fā)效率。

主流嵌入式實(shí)時(shí)操作系統(tǒng)

uC/OS是美國(guó)的一款RTOS,發(fā)布于1992年。2001年,北航的邵貝貝教授第一次將有關(guān)uC/OS的書(shū)籍翻譯成中文,該書(shū)出版后獲得了大量好評(píng),當(dāng)時(shí)該書(shū)遇上了“嵌入式系統(tǒng)開(kāi)發(fā)”風(fēng)口,大量的高校學(xué)生開(kāi)始學(xué)習(xí)嵌入式系統(tǒng),將該書(shū)作為學(xué)習(xí)嵌入式操作系統(tǒng)的入門(mén)書(shū)籍,將學(xué)習(xí)的內(nèi)容帶入各類項(xiàng)目和產(chǎn)品后,它的特點(diǎn)才漸漸嶄露頭角。在2010年以前,uC/OS一直是國(guó)內(nèi)大多企業(yè)的首選RTOS。2010年以后,開(kāi)源免費(fèi)的RTOS開(kāi)始流行,而uC/OS本身的商業(yè)收費(fèi)策略一直未能及時(shí)調(diào)整,導(dǎo)致很多廠商轉(zhuǎn)而選擇開(kāi)源免費(fèi)的操作系統(tǒng),如FreeRTOS、RT-Thread。

FreeRTOS誕生于2003年,按照開(kāi)源、免費(fèi)的策略發(fā)布,可用于任何商業(yè)和非商業(yè)場(chǎng)合。2004年,英國(guó)的ARM公司推出第一款基于ARMv7-M架構(gòu)的Cortex-M3 IP核,主打高性價(jià)比的MCU市場(chǎng),隨后美國(guó)德州儀器公司推出了第一款基于Cortex-M3內(nèi)核的MCU,接下來(lái)意法半導(dǎo)體、恩智浦、飛思卡爾、愛(ài)特梅爾等歐美廠商相繼推出了基于Cortex-M內(nèi)核的MCU,出于性價(jià)比的考慮,這些廠商都選擇了FreeRTOS作為芯片默認(rèn)使用的嵌入式操作系統(tǒng),趁著這波熱潮,F(xiàn)reeRTOS迅速崛起,在國(guó)內(nèi)外流行開(kāi)來(lái)。

RT-Thread是國(guó)內(nèi)的一款嵌入式實(shí)時(shí)操作系統(tǒng),誕生于2006年,許可證類似FreeRTOS,以開(kāi)源、免費(fèi)的方式進(jìn)行發(fā)布。與FreeRTOS和uC/OS不同的是,RT-Thread自創(chuàng)建之初的定位就不僅是一個(gè)RTOS內(nèi)核,而是包含網(wǎng)絡(luò)、文件系統(tǒng)、GUI界面等組件的中間件平臺(tái),它秉承開(kāi)源、免費(fèi)的思想,積聚吸收社區(qū)的力量來(lái)不斷發(fā)展壯大。經(jīng)過(guò)十多年的積淀,RT-Thread已經(jīng)成為一款知名度較高、口碑極佳、高度穩(wěn)定可靠的實(shí)時(shí)操作系統(tǒng)。RT-Thread支持市面上所有的主流編譯工具,如IAR、GCC、Keil等;在硬件支持方面,它完成了超過(guò)50款MCU芯片和所有主流CPU架構(gòu)上的移植工作,包括ARM、MIPS、C-Sky、Xtensa、Andes與RISC-V等。在行業(yè)應(yīng)用上,因?yàn)镽T-Thread的高可靠性和組件豐富等特點(diǎn),它被廣泛應(yīng)用于安防、醫(yī)療、新能源、車載、北斗導(dǎo)航以及消費(fèi)電子等眾多行業(yè)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多