嵌入式作業系統
嵌入式作業系統,是執行於一個根本不被當成電腦的裝置內部的軟體——微波爐、恆溫器、智慧手錶、無人機、工廠裡的感測器、汽車鑰匙。這台電腦被嵌入在一個更大的產品之中,去做一件聚焦的工作。把計算機的腦袋與筆電的腦袋相比:計算機的需求狹窄而固定,所以它的作業系統可以極小、節儉,並完全為任務量身打造,而非一套想包辦一切的龐大通用系統。
其決定性的限制是佔用空間(footprint)與資源。這類系統往往只有數 KB 到幾 MB 的記憶體、一顆緩慢的低功耗處理器、沒有磁碟,有時連螢幕都沒有,所以作業系統必須非常小巧精簡。許多嵌入式作業系統以一個函式庫的形式出貨,讓你直接和應用程式連結在一起,使用者模式與核心模式之間沒有分隔,也完全沒有虛擬記憶體,因為硬體可能根本沒有記憶體管理單元。許多嵌入式系統同時也是即時的,因為裝置必須準時對實體事件做出反應。物聯網(Internet of Things, IoT)——數十億個連網的小裝置——讓這個類別變得龐大,也帶來了一個棘手難題:如何讓這些微小、長壽、難以更新的裝置保持安全。
誠實的釐清是:嵌入式與即時有所重疊,但並非同一個觀念。嵌入式講的是系統位於何處、有多小(在一個受限的裝置裡);即時講的是時序保證。許多嵌入式系統同時是即時的,但一個沒有硬性期限的簡單嵌入式小裝置仍是嵌入式的,而即時系統原則上也可以跑在大型硬體上。共同的主題是用極少的資源做更多的事,並被信任能無人看顧地運行數年。
一台智慧恆溫器可能只有 256 KB 記憶體、沒有磁碟。它的嵌入式作業系統與應用程式連結成一個小小的映像,可在不到一秒內開機,讀取溫度感測器、驅動顯示器、與 Wi-Fi 交談,除此之外什麼都不做——既沒有空間、也不需要一套完整的桌面作業系統。
一件聚焦的工作、極小的記憶體:作業系統被縮小到剛好塞進裝置。
嵌入式不自動等於即時,反之亦然。嵌入式講的是小巧、內建於裝置;即時講的是保證的時序。許多裝置兩者兼具,但這兩個性質是各自獨立的。