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