物聯網操作系統的研究與實踐
潘愛民? (杭州指令集智能科技有限公司CEO,浙江?杭州?310012)
本文引用地址:http://www.j9360.com/article/201908/403609.htm摘要:物聯網相關的系統技術是當前的一個熱點,既有基于云計算的物聯網平臺技術,也有物聯網設備 采用的操作系統技術,還有邊緣計算所用到的系統軟件技術等。本文首先闡述了在物聯網場景中所需要的系統軟件,并回顧了物聯網設備常用的操作系統,然后提出了本文對于物聯網操作系統的定義,它是特指在物聯網設備的使用場景中,能夠將各種物聯網設備集合起來發揮作用、管理此場景中軟硬件資源的系統軟件。最后介紹了一個工業界實踐中的物聯網操作系統—指令集智能操作系統。
1 操作系統的演進
操作系統經過了幾代的發展,從最早期的多任務操作系統,如Multics和UNIX,到適用于個人電腦的多處理器操作系統,如Linux和Windows,再到最近10多年廣泛流行的移動操作系統,如iOS和Android,其核心技術已經非常成熟,軟件復雜度也達到了上億行代碼的規模。操作系統的每一次大發展必定跟計算機硬件的發展密切相關。隨著物聯網(IoT)時代的到來,操作系統也必將迎來新的發展。
表1 總結了每一代操作系統的特征。
2 物聯網需要什么樣的基礎軟件
物聯網的核心是各種物體連接到互聯網:互聯網仍然是基礎,物聯網并沒有再造出一個獨立的網絡,但是對互聯網進行了擴展和延伸,允許各種物體通過互聯網交換信息和通信。大量的物體都連接到了網絡,最直接的效果是,這些物體都可以被遠程操控,例如,物體的狀態顯示在任何一個屏幕上,物體上的開關可以由遠端的軟件來控制。譬如,在圖1中,體重計是一個物聯網設備,它能夠連接到后臺服務器,上報數據和狀態,遠程用戶可以通過連接服務器來獲得體重計的數據和狀態。
在這樣的環境下,我們可以看到有三個地方需要軟件:一是體重計上的軟件;二是服務器上的軟件,完成體重計設備的狀態監測以及數據記錄和報告;三是客戶端的軟件,顯示所需要的信息或者接受用戶的指令。
首先,體重計需要一個操作系統來完成基本硬件的能力,包括連接網絡的能力。這樣的系統很成熟,門檻也不高,對于體重計,用一個單片機(MCU)就可以讓它工作起來,或者也可以用一個嵌入式系統,功能更強大。其次,在后臺服務器需要一個服務軟件,一方面與體重計進行連接與通信,另一方面也允許遠程用戶連接上來并指定相應的體重計設備,以便查看信息或者對它進行控制。客戶端的功能通常用瀏覽器來完成,不需要額外安裝軟件;也可以用移動應用或者各種形態的小程序的形式來跟服務器通信。
幾乎每一種物聯網設備,為了讓它們以聯網的方式工作起來,都需要像體重計這樣的軟件架構。概括起來,物聯網設備的軟件分如下兩部分(如圖2)。
? 在設備硬件上,用一個軟件程序讓設備工作起來,并且具備連接網絡的能力;
? 需要有一個服務軟件能夠為這個設備提供各種便利的服務。
在某些特定情況下,可以把以上兩方面的軟件功能都放在設備上完成,這樣就不需要后臺服務器,因而客戶端可以直接連接設備。但這通常僅限于一些計算和存儲能力較強的設備,并且對部署方式也有要求(比如智能路由器)。本文不討論這樣的設備實例和軟件架構。
操作系統的意義在于,對硬件的基本功能進行抽象,從而做到各種應用軟件無需直接跟硬件打交道就可以操控硬件。針對如圖2所示的軟件劃分,我們可以抽象出下面的操作系統來協同工作。
? 物聯網設備操作系統。這是運行在設備上的軟件,常見的是嵌入式操作系統,用恰當的軟件把設備驅動起來,讓它們正常地工作;
? 物聯網操作系統。這是工作在設備之外的服務器上的軟件,它提供了設備功能之外的擴展或延伸能力,譬如遠程訪問能力、歷史數據記錄和分析能力、多個設備的協同功能,等等。
物聯網設備操作系統很容易理解,有大量的教科書或專著來詳細講解現代操作系統的軟件結構和相應 的資源調度算法[1]。物聯網操作系統是一個相對比較新的概念,但事實上又廣泛存在著大量的軟件在完成這些功能。很多設備廠商需要搭建一個后臺服務系統,甚至還有不少廠商開發了客戶端移動APP。這就是典型的、在操作系統缺位的情況下,硬件廠商不得不自己研發軟件系統的情形。而理想的情況是:存在通用的物聯網操作系統,可以讓設備廠商專注于設備 研發,設備廠商只需開發驅動軟件以及簡單的應用軟件就可以讓設備用起來。
3 物聯網設備操作系統
物聯網設備所在的硬件環境往往有以下特點。
? 連接。這是物聯網設備的必要功能,以特定的方式連接到計算機網絡,進而連接到互聯網。常 見的接入協議有Zigbee、藍牙、Wi-Fi、NB-IoT或RoLa等。
? 低功耗。這些設備需要長時間(幾個月,甚至幾年)運行,對電量的消耗有苛刻的要求,通常只能靠電池供電。
? 安全。設備要能報告自己的狀態,并且有一定糾錯和保密的能力,還要避免被仿冒和入侵。
? 標準。每一種設備都隸屬于特定的行業,而成熟的行業往往已經形成了相應的工業標準,最起碼也有事實上的參考標準。
運行在物聯網設備上的操作系統往往有多種選擇,取決于設備本身的計算和存儲能力,一般地,可分為微控制器(MCU)和中央處理器兩大類。典型的有以下一些操作系統。
? ARM Mbed OS[2]。Arm公司專門針對IoT設備的開源操作系統,主要支持Cortex-M微處理器。
? FreeRTOS[3]。針對嵌入式設備的開源實時操作系統,支持眾多的微處理器。FreeRTOS有三個商業性質的衍生版本:SafeRTOS、Amazon RTOS及 OpenRTOS。
? RT-Thread[4]。類似于FreeRTOS的設備側實時操作系統,支持大量的微處理器架構。這是難得的國內成長起來的操作系統,且經營了良好的社區氛圍。
? LiteOS[5]。是華為研發的輕量級開源實時操作系統,在設計上支持Arm、x86和RISC-V微處理器。
? Zephyr[6]。是Linux基金會的一個項目,針對資源受限和嵌入設備的實時操作系統,支持多種主流的微處理器架構。
? 嵌入式Linux。是Linux操作系統的一個剪裁版本,它繼承了Linux的優勢和大量的社區資源,又具有嵌入式操作系統的特性。OpenWRT是嵌入式Linux 的一個發行版,廣泛應用于諸如智能路由器、智能家居等設備。
? Android Things[7]。Google針對物聯網設備的開源操作系統,它是在Android基礎上進行剪裁形成的,對系統資源的要求比Android低很多。
? VxWorks[8]。是一個老牌的實時操作系統,支持眾多處理器架構,廣泛應用于軍事、航空、航天等高精和對實時性要求極高的領域,最經典的莫過于NASA 的火星探測車上裝載了VxWorks操作系統(如圖3)。
以上列舉的設備操作系統,除了VxWorks外,代碼都是開源的,并且有相應的開發者工具和社區,背后有商業公司在支持。可以說,這些實時操作系統為物聯網時代設備的繁榮提供了最核心的軟件支撐,它們一方面吸收了操作系統領域的研究成果,另一方面也針對嵌入式設備或物聯網設備進行了優化和剪裁。
順便提一下,很多文獻資料把設備操作系統稱為物聯網操作系統[9-11],甚至提出未來可否有一個統一的物聯網操作系統。筆者認為,由于物聯網設備的多樣性和差異性,用一個系統來統一驅動各種設備是不合理的,也是不現實的,但是這種努力會對設備操作系統的架構演進有幫助,使架構更靈活,在不同計算能力的設備上有更好的伸縮性,并且可沉淀出高質量的可復用軟件模塊(譬如連接協議、渲染引擎、執行引擎等)。
4 物聯網操作系統
設備操作系統解決的是設備怎么聯網、如何更方 便地聯網的問題,但沒有解決聯網之后做什么以及如何做的問題。從長遠發展來看,后者無疑更為重要。這就是前文提到的物聯網操作系統,它特指在物聯網設備的使用場景中,能夠將各種物聯網設備集合起來發揮作用,并管理此場景中軟硬件資源的系統軟件。
我們來看一些場景(如圖4)。
? 一組智能燈的協同。單個智能燈可以具備開、關、調節燈光等基本功能,若跟具體場景結合起來, 可以讓這種聯網控制能力具有更大的價值。譬如,在家庭場景,可以根據生活習性和作息時間進行自動調節;在野外路燈場景,可以根據戶外光線做到自適應環境;等等。
? 酒店房間智能化。目前越來越多的酒店配備了智能設備,包括電視、燈控、空調、鏡子,甚至窗簾、馬桶等。單個設備若獨立工作,聯網的價值只是取代了遙控器或者墻面開關,而智能化真正的目標是為住客提供舒適、貼心的室內環境。
? 建筑體的健康檢測。拿橋梁來舉例,一座大橋的檢測系統會有大量的傳感器來采集數據,然后再通過專業的模型來分析橋梁的健康狀況。單個傳感器只反映一個局部狀態,所有傳感器集合起來進行分析可以獲得關于橋梁的健康評價。
以上列舉的這些場景都需要數量眾多的物聯網設備協同起來發揮作用,不同的場景目前有各自獨立的解決辦法。有的開發專門的應用系統來解決場景中的設備協同工作需求,例如橋梁檢測系統、燈光控制系統等。還有一種解決辦法是用云服務平臺來連接所有的設備,然后利用云服務平臺的功能來開發相應的場景智能系統。例如,針對智能家居的場景,可以通過云服務平臺來實現設備之間的協同。有些智能音箱廠商通過這種方式來實現語音控制電器。
這就回到本節開始提到的問題:物聯網設備連接以后做什么和如何做的問題。本質上,這需要一個軟件系統,我們根據對各種場景進行抽象,按照兩層架構來實現這樣的軟件系統:最基礎的一層軟件是通用的,可適用于各種物聯網場景,包括設備連接和管理、數據采集和處理等;另一層是應用軟件,用于實現各個場景中需要的功能邏輯。前者正是物聯網操作系統,后者是物聯網操作系統之上的應用軟件。這與本文第二節講到的軟件劃分是一致的,如圖5所示。
物聯網操作系統承載的是通用的能力,包括但不限于以下功能。
? 設備接入。使得各種不同類型的設備通過局部的模塊(驅動程序)連接到操作系統中,從而操作系統可以獲取設備的狀態信息。
? 反向控制設備。操作系統可以向設備發送命令,達到控制設備的目的。
? 設備管理。對于連接到一個操作系統上的設備進行管理,包括查看它們的狀態、設置報警條件、設置位置、診斷驅動程序,等等。
? 數據采集。采集來自于物聯網設備的數據,可定制表結構和數據目錄。作為系統完整性,也要有擴展能力,可接受外部的數據。
? 數據分析和檢索。操作系統提供功能對采集到的數據進行分析,并更新指標值。指標是一個業務相關的衡量單位或特征,有名稱和值。指標的計算既可以實時完成,也可以定時完成,或者通過事件或應用層命令來觸發。操作系統也提供數據檢索的能力,方便應用層引用或者搜索數據。
? 數據展示。操作系統提供常見的數據展示能力,包括結構化和非結構化數據的圖形化顯示,各種指標的統計圖表等。
? 日志。日志是一個操作系統的基本能力,在物聯網場景中尤為重要。完善的日志能力可便于診斷各個物聯網設備的異常情形。
? 算法。操作系統提供一個基礎的算法庫,包括統計分析算法、AI算法等,便于應用程序實現各種業務邏輯。在物聯網場景中,這相當于一個數據武器庫。
? 系統服務。操作系統以系統服務的形式將能力提供給上層應用程序,系統服務的集合涵蓋各種基礎的功能,并且理想情況下,允許應用廠商擴展定義更多系統服務。
? 安全性。作為物聯網操作系統,涉及各個物聯網設備連接到系統中,安全性尤為重要,包括系統安全、設備安全、數據安全以及無線安全。
? 擴展功能。物聯網操作系統的擴展性體現在多個方面:提供接入規范,允許非原生支持的設備也能夠接入進來;系統服務可以擴展;數據采集格式可定制;數據處理和展示可擴展;算法庫可以擴展,等等。
? 開發工具。需要應用程序樣例和相應的開發工具,來幫助應用程序開發者理解和學習物聯網操作系統。
圖6顯示了物聯網操作系統的基礎模塊。
對于一個具體的物聯網場景,僅僅以上的通用功能往往不足以支撐這個場景中的基本需求,譬如,辦公室環境還需要門禁和無線投屏的能力,酒店環境需要智能燈光調節、服務呼叫等功能。因此,物聯網操作系統的定制和擴展能力非常重要,針對特定類型的場景,可以在基礎系統之上疊加擴展包,形成針對場景的智能操作系統(比如智慧辦公操作系統、智慧酒店操作系統等)。
而從物聯網操作系統的角度,它存在的價值是:將設備與服務軟件解除了耦合,不同類型或不同數量 的設備可以動態鏈接進來,即使在不重新安裝或啟動操作系統的情況下,也能適應設備增刪的變化。對于 截然不同功能的場景,可以使用同一個操作系統來提供基礎服務。另一方面,從物聯網應用的角度,應用開發可基于統一的一層服務,再輔助以操作系統的開發工具,可以極大地提高開發效率。
5 指令集智能操作系統
杭州指令集智能科技有限公司提出了商業智能操作系統(BI-OS,Business Intelligence Operating System)來實現物聯網設備的互聯互通,完全符合上 一節介紹的物聯網操作系統的要求。圖7顯示了BI-OS 的總體技術架構[12]。
BI-OS運行系統分五層,由底向上分別是設備子 系統、設備層、數據層、服務層,以及應用層。其中設備子系統是由設備廠商提供的,本質上是運行物聯網設備操作系統的那個設備側軟件;應用層是指建立在BI-OS上的應用軟件,它們調用BI-OS所提供的系統服務,來滿足客戶的需求。而中間的三層是BI-OS的核心。
? 設備層:利用智能數字網關技術,將各種物聯網設備采集的數據上傳到數據層,與其他數據進行融合計算。
? 數據層:這一層包括數據中心、計算中心和算法模型庫。
? 服務層:將不同場景中應用共有的基礎性和關鍵性的服務進行抽象,統一在服務層夯實。
BI-OS作為一個通用的物聯網操作系統,可以應用到各種商業場景中。一個典型的商業場景是智慧樓宇,通過BI-OS將一個大樓內的所有聯網設備連接到一個系統中,這樣不僅做到更高效的自動化管理,而且隨著大樓運營一段時間,數據累積起來,可以優化運營策略(譬如節省能耗、人流引導、堵住安全缺陷,等等)。
參考文獻
[1] 何小慶.嵌入式操作系統風云錄:歷史演進與物聯網未來[M].北京:機械工業出版社,2016.
[2] ARM Mbed OS[EB/OL].https://www.mbed.com.
[3] FreeRTOS[EB/OL].https://freertos.org/.
[4] RT-Thread[EB/OL].https://www.rt-thread.org/.
[5] LiteOS[EB/OL].https://www.huawei.com/minisite/liteos/cn/index.html.
[6] Zephyr[EB/OL].https://www.zephyrproject.org/.
[7] Android Things[EB/OL].https://developer.android.com/things/.
[8] VxWorks[EB/OL].https://www.windriver.com/products/vxworks/.
[9] 虞保忠, 郝繼鋒.物聯網操作系統技術研究[J]. 航空計算技術, 2017(3).
[10] 何小慶.物聯網操作系統研究與思考[J]. 電子產品世界, 2018(1):27-31.
[11] 彭安妮, 周威, 賈巖,等.物聯網操作系統安全研究綜述[J]. 通信學報, 2018.
[12] 指令集商業智能操作系統[EB/OL].http://www.isyscore.com.
作者簡介:
潘愛民(1970-),男,博士,主要研究方向:移動操作系統、信息安全、大數據、移動互聯網和 物聯網技術。
(注:本文來源于科技期刊《電子產品世界》2019年第8期第35頁,歡迎您寫論文時引用,并注明出處。)
評論