并非所有的操作系統(tǒng)都是平等構(gòu)建的。事實(shí)上,在多任務(wù)處理、開(kāi)銷、內(nèi)存使用等方面有很多不同。當(dāng)涉及到為設(shè)備選擇合適的系統(tǒng)時(shí),這一系列的選擇可能會(huì)使嵌入式開(kāi)發(fā)人員感到困難。
一種特別適合連接設(shè)備(至少是基本設(shè)備)的類型是裸機(jī)。正如裸機(jī)服務(wù)器一次只能承載一個(gè)租戶一樣,裸機(jī)環(huán)境完全專用于運(yùn)行單個(gè)應(yīng)用程序。這與同時(shí)運(yùn)行多個(gè)程序的常規(guī)操作系統(tǒng)形成了鮮明對(duì)比。
RTOS:處理復(fù)雜的調(diào)度
與同類產(chǎn)品相比,裸機(jī)的簡(jiǎn)單性尤為明顯。裸機(jī)系統(tǒng)的下一步是RTOS(實(shí)時(shí)操作系統(tǒng))。RTOS的設(shè)計(jì)相對(duì)簡(jiǎn)單,但與裸機(jī)不同,它可以同時(shí)啟動(dòng)和停止不同的進(jìn)程。另一方面,RTOS不如OS強(qiáng)大。最大的區(qū)別通常是內(nèi)存保護(hù)和虛擬化。
在高端操作系統(tǒng)中,應(yīng)用程序內(nèi)存是分開(kāi)的,操作系統(tǒng)確保一個(gè)進(jìn)程(正在運(yùn)行的應(yīng)用程序)不會(huì)損壞另一個(gè)進(jìn)程的內(nèi)存,這是通過(guò)虛擬化內(nèi)存來(lái)實(shí)現(xiàn)的,這使得操作系統(tǒng)可以在不使用時(shí)將未使用的內(nèi)存交換到磁盤上。RTOS中通常不存在高級(jí)內(nèi)存處理。
這種級(jí)別的高級(jí)資源管理(內(nèi)存、磁盤、網(wǎng)絡(luò)、CPU)在應(yīng)用于一般系統(tǒng)(如PC)時(shí)非常有用。但是,在小型嵌入式設(shè)備上,這是不同的,因?yàn)槟阃ǔ?duì)以下方面有很好的了解:
需要運(yùn)行多少個(gè)應(yīng)用程序/進(jìn)程
這些應(yīng)用程序/進(jìn)程需要什么內(nèi)存
確保這些過(guò)程不會(huì)相互干擾。
在某些領(lǐng)域,RTOS被物聯(lián)網(wǎng)應(yīng)用所青睞,因?yàn)樗梢蕴幚泶蠖鄶?shù)互聯(lián)網(wǎng)連接嵌入式系統(tǒng)所需的復(fù)雜調(diào)度。此外,將USB、TCP/IP和GUI組件集成到裸機(jī)系統(tǒng)中對(duì)于嵌入式開(kāi)發(fā)人員來(lái)說(shuō)非常耗時(shí)和復(fù)雜。
OS:在較重的方面
在RTOS之上的另一個(gè)步驟,或者更像是一個(gè)巨大的飛躍,是一個(gè)成熟的操作系統(tǒng)。此操作系統(tǒng)選項(xiàng)與裸機(jī)處于光譜的另一端。雖然裸機(jī)和RTSO有一些相似之處,例如減少了開(kāi)銷和有效的內(nèi)存使用,但裸機(jī)和操作系統(tǒng)實(shí)際上沒(méi)有相似之處。
你可能會(huì)認(rèn)為傳統(tǒng)的操作系統(tǒng)受到開(kāi)發(fā)者的反對(duì),對(duì)于簡(jiǎn)單的物聯(lián)網(wǎng)設(shè)備來(lái)說(shuō)太重了,但是,你錯(cuò)了。還有一個(gè)著名且廣泛使用的操作系統(tǒng)是Linux,它通常是嵌入式系統(tǒng)的固定設(shè)備。
決定什么適合你的物聯(lián)網(wǎng)設(shè)備將取決于使用情況。簡(jiǎn)單的傳感器和基本設(shè)備根本不需要高端操作系統(tǒng)的處理能力,而且可能會(huì)從精簡(jiǎn)的裸機(jī)方法中獲益。
另一個(gè)重要的注意事項(xiàng)是,盡管裸機(jī)開(kāi)發(fā)非常耗時(shí),但許多嵌入式開(kāi)發(fā)人員確實(shí)更愿意投入額外的工作。這是因?yàn)楣芾淼迷蕉啵憧刂剖虑榈哪芰驮綇?qiáng)。
當(dāng)然,并非所有的閃光都是金子,值得一提的是裸機(jī)環(huán)境的局限性。裸機(jī)的成本之一是性能損失,因?yàn)槟惚仨毻ㄟ^(guò)操作系統(tǒng)與硬件進(jìn)行通信,但跨平臺(tái)的所有硬件也需要統(tǒng)一,并且外觀相同。因此,某些功能可能會(huì)在操作系統(tǒng)驅(qū)動(dòng)程序中丟失。
同時(shí),對(duì)于物聯(lián)網(wǎng)設(shè)備來(lái)說(shuō),這一點(diǎn)尤為重要,互聯(lián)網(wǎng)通信的需求有時(shí)會(huì)促使開(kāi)發(fā)人員轉(zhuǎn)向RTOS而不是裸機(jī)。這是因?yàn)閕nternet通信要求單個(gè)應(yīng)用程序現(xiàn)在與TCP/IP通信堆棧進(jìn)行多路復(fù)用,TCP/IP通信堆棧有時(shí)需要自己的線程,在RTOS上處理起來(lái)可能更簡(jiǎn)單。
但總的來(lái)說(shuō),裸機(jī)確實(shí)為那些有基本需求的設(shè)備提供了理想的功能。由于缺乏開(kāi)銷、高效使用內(nèi)存以及對(duì)應(yīng)用程序硬件的完全控制,它成為當(dāng)今任何直接連接設(shè)備的競(jìng)爭(zhēng)者。