標籤:
中國航天用的SpaceOS主要內容是仿造美國風河系統公司的VxWorks653(653是產品名,並非版本號碼)。
先解釋為什麼用這個系統不用Linux:
航天器的記憶體和CPU都非常弱,弱到什麼程度呢:天宮一號的CPU是10MHz的,記憶體是2M,這種配置跑Linux比較費勁,雖然也並非不可能但要裁剪Linux核心確實太麻煩了。
而Linux的致命缺陷就是Linux不是一個硬即時作業系統。即時作業系統(RTOS)有一系列嚴格的定義:包括嚴格按照任務優先順序搶佔執行,快速的中斷響應,對關中斷的時間有非常嚴格的控制,Linux是一個民用的作業系統,其核心設計並沒有考慮到這些點,所以Linux不適用於航天領域。
實際上,Linux的主要應用還是在通用電腦和伺服器方面,在工業控制、自動化方面還有各種各樣的作業系統:ucos,nuclues,threadX,greenhill,VxWorks等等。
有人提到了RT-Linux,這個說的簡單點,就是底下是一層RTOS,上面是Linux,這種Linux複雜度太高,也不能裁剪的太小。
有人說到SpaceX公司用的是Linux,這沒錯,是火箭用的,SpaceX的龍號飛船用的是VxWorks系統。
另外,很多人聽了可能會難過的就是中國的國防軍工行業的自動化控制部分實際上也都是VxWorks稱霸的,雖然號稱自主智慧財產權,但實際上不是那麼回事。
家用系統多數情況下要求系統的均衡運行,比如,你可以同時玩遊戲,上網,聽音樂,但即時系統都是重要任務先執行,不重要的任務往後放,設計理念是不一樣的。
下面討論一下這個系統的規模問題,8000行應該說差不多正合適,一個核心、一個調度器、若干任務、中斷處理,甚至可能不包含動態記憶體分配,不要覺得連動態記憶體分配都沒有還算系統嗎?算,有的系統就是這麼設計的,要知道記憶體片段對於只有幾M記憶體的裝置來說是很可怕的。甚至有的系統裡是沒有中斷的,中斷處理是通過輪詢的方式實現,為的是系統狀態可以即時追蹤。
這麼小的系統需要的是精確可靠,有人說自己一個月就能寫8K行代碼,你要這麼說,我說我也可以寫出來,作業系統不是寫應用,需要考慮的設計細節非常多,而且一旦定型,修改又非常麻煩,而且需要大量的測試,NASA那邊是一個開發對應幾十個甚至上百的測試的比例,對於航天工業來說,可靠性是最重要的。
最後想說的就是,Linux/Unix/Windows這些都是通用作業系統,跟專用的作業系統差別很大,設計思路也完全不一樣,不要從通用作業系統的角度去看待它們。
-----------------------
漏掉一點:為什麼航天器的電腦配置都這麼差:
因為太空輻射、極端溫度的原因,電腦系統首先要求的是可靠性,高溫100多度,低溫零下100多度,這種溫度下一般家用電腦早就掛了,所以為了對應這個極端環境,主要的硬體都被設計成很耐用的狀態,這就使得電腦速度不是一個重要的指標。另外太空輻射會造成位翻轉,頻率越高越容易被幹擾,所以低頻是主流。
references:
http://www.zhihu.com/question/20328854
神舟飛船上的電腦使用什麼作業系統,為什麼是自研發不是 Linux?