當前位置: 華文問答 > 科學

登月探測器嫦娥使用什麽作業系統,是 Linux 還是其它自主研發?

2014-01-22科學

多數都是嵌入式系統RTOS,用Linux的不太多,Linux即時性不夠好,國內這方面不是百分百去確認,NASA的那邊用VxWorks的比較多。

中國國內的航母、衛星、飛機、坦克等軍工行業的自動化部份的作業系統的平台幾乎完全被VxWorks占領(某銷售高管的話,可信度認為較高),註意VxWorks只是提供平台,真正的上層軟體還需要各個廠商自己做二次開發。當然到實際裝置上可能看不到VxWorks的名字,因為VxWorks是WindRiver開發的,美國限制某些版本對華出售,所以一般是某某研究所買一套,改一改名字,叫做XXXWorks(VxWorks出售的時候可以買到源碼),再賣給軍工企業,也就是所謂的自主智慧財產權。

以上說的是控制部份,套用平台可能五花八門,要知道飛機/衛星上不可能只有一套控制系統的。

-----------補充的分割線-----------

解釋一下為什麽我認為是VxWorks不是Linux:

軍工航天領域對電腦系統的要求是穩定、高可靠性、體積不要太大、即時性高。

穩定 :就意味著內核程式碼不能經常改變,Linux版本變化太快,這一點就不符合要求。NASA用的程式碼是WindRiver十年前的程式碼。

高可靠性 :就是這個系統執行很長時間不能有bug,據說連續執行時間最長的是一款Unix(不是很確定),而Windows最長連續執行時間才1年多(這個數據較早,可能是WIN2K的數據)

體積不要太大 :因為要留出足夠的記憶體給其它任務,比如探測器的數據保存等工作,內核體積要足夠小,一個典型的Linux內核大概是幾M,Windows的內核檔NTOSKRNL.EXE也是幾M,這還只是映像的體積,執行時的記憶體就占的更大了。而VxWorks最小內核可以小到幾百K,執行記憶體也是幾MB就足夠了。有人會說DOS也可以這麽小,但是DOS是16位元系統,並且常見的只能在X86平台, VxWorks是跨平台 (MIPS/PPC/X86/ARM...),並且是完整的 32位元系統

即時性高 :即時性主要是指對中斷響應的速度,大多數套用作業系統對中斷的響應速度是極慢的,具體表現就是關中斷時間太長,如果有大量的中斷發生,會出現丟中斷的情況。VxWorks在這一點是最具有優勢的,它處理中斷采用的方式與其它OS不同,能保證關中斷的時間非常短。

VxWorks的航天版本裏是 沒有中斷 的,有些是只有一個時鐘中斷,這麽設計的好處就是系統任意時刻的狀態是可預知的,這樣的設計對於飛在天上的裝置來說很重要,如果出現bug,可以透過推測bug是如何發生的。但是我猜中國航天部門可能拿不到這個版本,因為這個是對華限制出口的。

我可以確定的說,中國的軍工航天部門不是從正規渠道得到的VxWorks,而是透過第三方的研究所、公司購買的。因為對華出口限制的原因,美國不會允許這類軟體出口。VxWorks一套很貴,大概是幾十萬到上百萬RMB之間(含開發套件workbench),買來以後會拿到 全部的文件和源碼 包括內核源碼 ,這一點與WINCE是不同的,WINCE的內核源碼有些是保密的。所以中國的研究所有能力改造VxWorks以適應中國的環境。

嫦娥號的硬體應該是一個主頻百M左右的CPU+幾十到上百M的記憶體,外加幾塊FLASH快閃記憶體,有人可能會覺得是不是配置太低了,對於航天系統,重要的是高可靠性,太空中的各種射線會幹擾CPU的正常執行,經常會發生位翻轉的情況,極端的高低溫也會影響硬體工作,一般民用的CPU是無法適應太空環境的。

----------------------------------------------------------------------

再補充,有人說了SpaceOS,我去查了一下,所有的新聞都指向了【中國航天報】的一篇報道,大家可以去百度,內容都是一樣的。另外有零散的報道說既能相容Windows又能相容Linux,內核只有8000行之類的,懂作業系統的肯定知道這是扯蛋的,或者就是記者不明白亂寫的。

有人說是虛擬機器之類的,這種說法就很搞笑了,天宮一號的主機計算頻率貌似在20MHz上下,這個頻率下想執行虛擬機器是不可能的,就算執行起來,上面啥都跑不了。

參照原文「2006年,SpaceOS1成功在軌執行。那時的作業系統功能簡單,只做到了多種資源的管理和任務排程,卻沒有任務間的通訊和動態記憶體管理等更為復雜的功能。」可見是一個很簡單的系統。

我不敢貿然說SpaceOS是抄的VxWorks,因為這東西必然是保密的,兩邊都是保密的,我也沒辦法聯系到航天五院做這個的人去核對一下內核程式碼是不是一樣的,但是VxWorks653確實能裁剪到那麽小,也能支持SPARC架構,據說天宮什麽的用的就是這個,VxWorks653也能關閉動態記憶體申請。但是RTOS就那麽幾種,threadX,ucos,nucleus(不要說Linux,Linux內核太大,即時性又差,不適合航天領域),SpaceOS敢說自己沒「借鑒」這些系統嗎?

有人說VxWorks不是開源的,搞不到,這麽說的人肯定沒用過VxWorks,買一個完整的license,會帶有完整的內核源碼,包括排程器、記憶體分配這些,653確實是不賣給中國,但搞到一份程式碼,只要有錢的話,並不困難,網上VxWorks551的程式碼遍地都是。