物聯網操作系統HelloX V1.85發佈公告

    經過HelloX開發團隊近半年的努力,在HelloX V1.83版本基礎上,增加許多功能特性,並對V1.83版本的一些特性進行了進一步優化之後,正式形成HelloX V1.85測試版本。經相對充分的測試和驗證之後,現正式發佈。相關代碼,已全部上載到github上(github.com/hellox-project/HelloX_OS),歡迎對HelloX感興趣的朋友下載測試和試用,並進一步反饋問題。

V1.85主要功能簡介

除繼續保持V1.83所有特性之外,V1.85版本主要對下列特性進行了支持或優化:

  1. 完整實現了進程功能。每一個應用程序,都可以爲進程形式運行,有自己獨立的地址空間(32位),可以在自己的地址空間內創建多個用戶線程實現併發。通過系統調用(system call)陷入內核,訪問內核功能。不同進程之間的數據和程序代碼嚴格隔離,最大限度的保證系統整體安全性;
  2. 對先前版本V1.83的網絡功能有較大幅度的優化。比如,實現了對Intel I217/I218/I211等千兆以太網的支持,網絡驅動更加豐富。進一步優化了網絡協議棧,使得不同網絡層次之間的數據拷貝降到最少。基於V1.85版本的網絡功能,定製了一款名爲“blackbox”的路由器,後面詳細介紹;
  3. 增加了更加豐富和完整的調試與診斷手段,包括日誌輸出功能,異常情況下的調試信息輸出功能,以及內存申請跟蹤等功能。當前的內核,已經很少出現異常情況。萬一出現異常,通過分析上述手段輸出的信息,可以快速定位問題。

    HelloX V1.85編譯後的可執行文件大小,包括內核,網絡功能,用戶命令行界面,文件系統,各類驅動程序等,在550K左右,比V1.83編譯後的鏡像尺寸降低不少,但是功能卻增加了許多。這主要是V1.85版本把很多原來嵌入到內核中的功能(比如ssh客戶端,telnet客戶端等)都作爲模塊應用程序,放到了用戶空間中執行。

V1.85進程功能介紹

進程功能是HelloX V1.85版本新引入的功能,主要目的是爲了對不同的應用程序進行徹底的隔離,創造一個安全穩定的執行環境。

大部分嵌入式的操作系統都不具備進程功能,在嵌入式領域,包括操作系統內核,應用程序,各種驅動程序,大多數情況都是一個解決方案廠商提供,不存在不信任的應用或驅動。而且引入進程之後,頻繁的進程間切換會降低系統整體性能,因此權衡下來,嵌入式操作系統一般都不實現進程功能。

但是HelloX定位於物聯網網關等複雜的應用場景,需要動態加載和執行第三方應用程序。如果不做安全隔離,程序之間就可以直接訪問對方數據,存在巨大安全隱患。同時第三方應用質量無法保證,在沒有地址空間隔離的情況下,一旦一個應用程序出問題,很大概率會導致整個系統崩潰。因此權衡下來,HelloX最終在V1.85版本中引入進程功能。

只是動態按需加載的第三方應用,纔會以進程形式運行。HelloX內核本身的功能,比如TCP/IP協議棧,USB驅動程序,文件系統,等等功能還是在內核中運行。因爲我們認爲這些功能是可信任的,而且都是系統必須功能(一項功能缺失,即使操作系統內核不受影響,也已經無法提供完整的功能),因此與內核分離意義不大。

HelloX V1.85的進程功能主要包含下列這些:

  1. 地址空間獨立和隔離。每個進程都有自己獨立的線性地址空間,在32位CPU上是4G大小(包括內核空間)。不同進程之間的地址空間完全獨立,相同的內存地址,對不同的進程來說,完全代表不同的內存位置。進程的現行地址空間又進一步分爲內核空間和用戶空間。其中用戶空間範圍爲1G到3G之間,用戶應用程序可以自由訪問這部分內存空間,前提是明確提出內存分配請求之後。內核空間被分爲了兩部分:0到1G之間,以及3G到4G之間。內核空間被映射到每一個進程中,應用程序代碼無法直接訪問,必須通過系統調用陷入內核態,才能訪問內核空間。但是在內核態,可以訪問用戶地址空間,內核做一系列檢查,防止出現問題。大部分通用操作系統都是按這個模型實現的;
  2. 內存保護。運行在用戶態的應用程序,只能訪問1G到3G之間的用戶空間,無法直接訪問內核空間。即使是用戶空間,也必須通過一個系統調用(VirtualAlloc),預先分配之後才能訪問,否則仍然會引發異常。不同進程之間的用戶空間則是完全隔離的,無法相互看到。但是HelloX內核也提供一個叫做VirtualMap的系統調用,可以把一塊公共的內存同時映射到兩個進程中,實現高效的進程間數據共享。內核代碼可以直接訪問用戶空間的內存,但是用戶空間的內存可能沒有被分配,這時候內核會進行檢查,確保這種情況不會發生;
  3. 應用程序動態加載。當前HelloX可以從外部存儲介質上動態增加PE格式的可執行文件,並創建一個進程運行它。在加載PE格式的應用程序時,HelloX會做一番詳盡的格式檢查,對於任何有疑問的應用程序,都會拒絕執行。一旦通過HelloX的檢查,一個新的進程就會被創建,並啓動運行。需要說明的是,從外部介質中加載應用程序,並對其進行檢查和運行,是在用戶態完成的。HelloX實現了一個叫做user agent的模塊,專門加載外部應用。內核做儘可能少的工作,把儘可能多的工作放在用戶態完成;
  4. 系統調用功能。系統調用功能是必須實現的,在實現了用戶態進程的前提下。用戶態的代碼無法直接訪問內核,必須通過系統調用來進入內核態,才能請求內核服務。系統調用利用了CPU的硬件機制,通過一個固定且統一的接口,進入內核態。在執行具體的內核代碼之前,系統調用的內核態部分代碼會對調用參數做詳細的檢查,確保這個請求是合法的。比如,對於用戶指定的內存地址,必須位於用戶空間內,且必須已分配。如果檢查失敗,則系統調用會失敗,同時進程會被認爲有惡意行爲而強制終止掉;
  5. 內核對象的隱藏。在HelloX的內核代碼中,都是通過內核對象的指針來訪問內核對象的。比如等待一個互斥體(Mutex)對象,傳遞給WaitForThisObject函數的參數,就是Mutex對象的指針。但是讓用戶態也通過指針訪問內核對象,則是非常危險的。雖然用戶態不能直接通過指針訪問內核對象,但是應用程序可以假造內核對象指針,來發起系統調用。這時候系統內核很難檢查這個指針是否是非法的,如果貿然去操作,很可能因爲這個內核對象不存在而導致非法操作。這就是大多數操作系統,包括HelloX,都是以handle(句柄)的方式來訪問內核對象的。每創建一個內核對象,HelloX內核會在進程的句柄表裏增加一項,並把該項的索引值返回給用戶態。用戶態通過這個索引值(句柄)來發起系統調用。收到用戶態的系統調用請求之後,內核會首先根據這個索引值查詢句柄表,看看是否有對應的內核對象存在。如果沒有,說明是一個非法的系統調用。如果有對應的內核對象,則進一步檢查內核對象的狀態,類型,等等。確認無誤之後纔會真正操作內核對象。

 

除此之外,還有很多支撐進程機制的功能,比如虛擬內存管理等,在此不做贅述。

與以前版本的原則一致,在HelloX V1.85版本的開發過程中,我們始終堅持“穩定可靠,不留問題死角,可直接應用”爲原則,所有代碼都經過了詳細深入的內部測試。

V1.85網絡功能簡介

網絡功能一直是HelloX操作系統的最重要功能。相比前一個版本,HelloX V1.85的網絡功能進一步增強,比如增加了對Intel系列網卡的支持,包括Intel 82547系列網卡,I211/212/217/218系列網卡,等等。同時對網絡協議棧的代碼做了進一步優化,大大減少了不同網絡模塊之間的報文複製次數。

我們定製了一款專門的硬件路由器,以對HelloX的功能進行測試和評估。由於這款路由器是黑色的,我們取代號爲“blackbox”。下圖是它的後面板:

這個專門的路由器提供兩個基於Intel I211芯片的千兆以太網接口,這兩個接口是對等的,可以通過配置,作爲WAN接口(連接運營商)或者LAN接口(連接本地交換機,或者WLAN AP)。通過串口(COM接口)進行配置管理,個人電腦可以通過類似超級終端的軟件,來控制blackbox,如上圖。

下圖是blackbox的後端面板圖:

在後面板上提供若干個USB接口,可以插U盤和用於其它硬件擴展,當前HelloX V1.85版通過USB盤啓動blackbox。還有其它的一些接口,比如DP,HDMI等,用於連接顯示器。但是大多數情況下,通過COM接口調試就足夠了,沒必要接顯示器。這款路由器基於Intel的賽揚處理器(J900),配備2G內存,除用於網絡報文處理外,還可以作爲物聯網網關,運行第三方應用程序。比如可以開發控制智能家電的應用程序,運行在上面。

由於大多數的WiFi芯片都不開源,因此blackbox當前並不提供WLAN AP功能。需要外接一個二層AP設備,提供WLAN信號接入。Blackbox的功耗很低,沒有內置風扇,完全依賴於外置的散熱片完成散熱,不但可以長期運行,還大大降低噪音。Blackbox的總體成本在500元人民幣左右,如果批量定製,成本還可以進一步降低。但是與基於SoC的家用路由器相比,blackbox還是沒有功耗和成本優勢。但blackbox的計算能力,則是傳統家用路由器無法比擬的,這也是它作爲物聯網網關的重要優勢。

在我的測試中,blackbox連續運行一個星期,沒有出現任何問題。可以隨便拔插網線,在連接運營商的PPPOE session中斷的情況下,也可以重新撥號建立連接。同時在線的終端數量超過了10個,每個終端都能獲得良好的性能,大大超過傳統的家用路由器。

在測試過程中,隨着越來越多的物聯網設備接入到HelloX網關,我個人越來越體會到物聯網操作系統的真實和價值,越來越感受到物聯網網關的重要性。設想一下,物聯網網關可以看到所有物聯網設備的通信模式,包括報文的平均長度,發送間隔,帶寬,時間分佈,MAC地址,通信協議類型,等等信息。通過這些信息,即使不對IP報文做深度分析(這樣做是不符合法律規定的),也可以通過大數據或者AI技術識別出設備類型和設備能力,從而有目的的與物聯網設備進行協同。單個物聯網網關,是一個本地網絡的控制中心,而所有的物聯網網關組成的大的網絡,則是整個世界的控制中心。HelloX將聚焦物聯網網關方向,做深入的技術耕耘,爲人類建立安全,可靠,智能的物聯網數字中心。

進一步的開發方向

作爲物聯網操作系統,HelloX將始終聚焦物聯網領域的應用,爲物聯網量身定製一套最優的系統軟件解決方案。我們認爲,只有一個內核的支撐,是遠遠不夠的。物聯網和智能硬件的有效發展和壯大,需要更多技術的支持,比如人工智能,分佈式計算,機器學習,等等。但一個穩定可靠和可擴展的物聯網操作系統,是這些技術的最好生存土壤。

同時我們認爲,物聯網中的一個關鍵組件將會是物聯網接入網關。不論是哪種應用場景,物聯網網關將是物聯網世界連接用戶或者真實世界的最核心角色。因此,後續HelloX會首先瞄準這一個物聯網應用場景,進行深入耕耘。物聯網網關首先是一個更安全和高效的寬帶接入網關,同時具備支撐物聯網應用的能力。下圖示意了我們對物聯網網關的理解:

物聯網網關並不是孤立存在的,而是需要AI平臺,大數據平臺,物聯網設備管理平臺等一系列後端平臺的支撐,共同組成一個面向物與物互聯和協同的數字神經。我們的目標,就是構築這樣一套數字神經。

俗語有云:“難事必做於易,大事必做於細”。HelloX操作系統當前的主要應用目標,定位於物聯網網關,但是要真正做出特色,做出價值,還是要從一些具體的功能入手,來打開缺口。經過與行業內一些人士交流之後,我們決定,HelloX的下一個版本將在下列功能領域進行進一步增強和開發:

  1. Ready for 5G

現在5G的發展如火如荼,5G必將替代現在廣泛部署的3/4G網絡,成爲通信的主流。與3/4G主要面向個人用戶(2C)不同,5G提供eMBB,uRLLC,mMTC等不同類型的通信支持,同時面向個人和行業應用(2B)。5G不僅僅對運營商網絡是一個全新的技術,同時對芯片,終端,軟件,網絡,數據中心等都提出了新的要求。舉例來說,5G支持的網絡切片技術(Network Slicing),就對傳統的TCP/IP協議棧提出新的要求,因爲在切片環境下,一個終端可能會同時獲得多個IP地址,而且這多個IP地址還可能是重疊的。這樣就要求IP協議棧支持多實例(Multiple Instance),這多個協議棧實例再與不同的5G應用(或者多個虛擬終端)綁定,實現真正的差異化通信服務。

HelloX的體系架構滿足這種需求,後續版本將開發一個閉源的面向5G的網絡通信子系統。閉源的目的是保證安全,而且只是對部分最核心的代碼閉源,HelloX內核,設備驅動等代碼,仍然按照原有方式開源。

構築面向未來的網絡協議棧

未來將對HelloX的網絡協議棧做進一步增強和重構,開發一個業界獨創,面向未來的網絡協議棧。主要包括下列方面:

  1. 同時支持IPv6和IPv4協議,能夠按照用戶的需求,同時高效處理這兩種IP協議。我們要設計一種全新的協議架構,設計一套通用的數據結構,同時爲IPv4和IPv6兩種協議所用,而不是像現在的大多數實現一樣,IPv4和IPv6相互隔離,沒有交互;
  2. 進一步增強網絡的安全,充分吸收新的網絡架構和技術,比如SDN等,來做到最大限度的安全。我們認爲,未來的網絡安全,怎麼強調都不過分。而一個自主和全新的網絡架構,可以甩掉長期積累的包袱,輕裝上陣,滿足未來網絡和信息系統的需要;
  3. 在支撐網絡的基礎算法和數據結構有創新,滿足未來網絡的性能需要。比如融合IPv4和IPv6的路由查找算法,網絡報文DPI深度解析算法等等,以期達到業界頂尖水平。

總之,我們的定位是,下一個版本的HelloX,其網絡協議棧的安全,效率,架構等方面,將達到業界頂第一的水平。

基於JavaScript,構築一套全新的物聯網開發框架

現在有很多物聯網開發框架,比如IoTivity,三星主導的IoT.js等。這些框架都是基於企業開發框架來衍生或者設計的,我們認爲並不能很好的適應物聯網的本質特徵,無法對物聯網的發展啓動助推作用。

我們計劃,基於JavaScript語言,構築一套全新的,分三個層級的物聯網開發框架。通過充分的抽象和模型建立,形成一套基礎的物聯網模型庫。基於這一套基礎模型庫,進一步派生出二級面向具體行業的模型庫,可以成爲Tier 2模型庫。進一步地,基於Tier 2模型庫,進一步派生出某個行業內的物聯網模型。這樣某個行業內的具體應用,就可以快速和直接地引用這些行業特定模型,或者對這些模型進行派生和擴展,快速高效的開發出獨立於運行硬件和運行軟件環境的物聯網應用。

總之,我們的定位很高,但不是盲目定位,而是基於已有HelloX的代碼和成果,以及前期探索的基礎上,做出的可以預期達到的定位。這些功能和特性開發完畢之後,將會極大增強HelloX的競爭力,相信能夠達到物聯網操作系統領域業界第一的位置。

歡迎有志於物聯網和系統軟件開發的人士加入加入我們,進一步開發和優化HelloX操作系統。相信在我們的共同努力下,必然能夠做出面向未來的基礎軟件平臺和核心軟件部件,有效促進物聯網和信息化的發展水平,進一步提升人們的生活水準,爲人類的發展做出貢獻。

對於參與其中的朋友們來說,您的開發成果和代碼輸出,可以共同積累在一個相同的平臺上,永遠沉澱下來。如果我們做成了,您將“青史留名“。即使做不成,通過這個過程,您也可以對自身的專業技能和行業理解有一個系統的梳理和提升,必然有助於您職業的發展。打一個更加通俗的比方,相比每天拿着手機刷半天花邊新聞,看半天視頻,然後自責的關上手機,感嘆一天又快過去了,您是不是更願意做一些與自身專業相關且有持續積累和持續產出的事情呢?相信這樣會更充實和有意義。:-)

更具體的細節,歡迎加入QQ羣討論:38467832

對HelloX和物聯網操作系統的進一步信息,請關注blog:blog.csdn.net/hellochina15

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章