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

對一些設備上的系統比較好奇,比如航空母艦啊,衛星啊,飛機啊之類的。


多數都是嵌入式系統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的代碼遍地都是。


跟大家說的一樣,貌似確實是Vxworks,搜到一個中科院電子所招人的鏈接。哈哈哈。。。(公司簡介有提到嫦娥三號)http://zhichang.renren.com/detail/job/2698403?login_state=qq


貼個美國「好奇號」火星探測器的軟硬體配置,供大家參考。嫦娥三號估計也差不許多。

好奇號」火星探測器的硬體及軟體:

硬體

2004年勇氣號(Spirit, MER-A)和機遇號(Opportunity,MER-B)火星探測器著陸火星,它們配備了3MB EEPROM、128MB內存、256MB快閃記憶體。好奇號(Curiosity)有哪些變化呢?

好奇號的Rover Compute Element包含兩套完全相同的計算系統,其中一套作為備用,當第一套計算系統出現故障時自動啟用。這個新的計算系統採用256K EEPROM、256MB內存、2GB快閃記憶體,CPU為BAE RAD750(1040萬晶體管,核心頻率110到200 MHz),基於IBM的PowerPC 750設計而來,速度達到400 MIPS(勇氣號和機遇號為35 MIPS),可以承受-55和70度氣溫變化以及1000gray的輻射水平。

RAD750

軟體

在軟體方面,NASA不敢冒險,採用的是一款成熟的、具有27年之久的VxWoks操作系統。VxWoks由Wind River Systems(已被Intel收購)開發,是在大量嵌入式系統中採用的實時操作系統,之前的火星探測器(旅居者、勇氣號、機遇號)、火星偵察軌道器、SpaceX Dragon太空飛船採用的都是VxWorks。此外,VxWorks還廣泛應用於BMW iDrive、美軍戰鬥機、阿帕奇直升機、Apple Airport Extreme和Linksys WRT54G路由。

其實,說VxWorks已經27年之老有些過分,它於1985年發布,但是在進行持續開發,去年已經是6.9版本了。為什麼好奇號要使用VxWorks?因為它非常可靠,而且包含成熟的開發工具鏈,據推測,其底層調度和中斷系統適用於處理EDL(進入、降落和著陸,即「恐怖七分鐘」)這樣的實時任務。

好奇號更多配置:

儀器

好奇號就是一台有輪子的科學實驗室,它有17台相機,全部配備1600×1200(200萬像素)CCD感測器。MastCam可將高清晰度的火星景觀以720p 10 fps視頻真彩色傳輸。它還有手臂成像儀,是一個機械臂,可以採集火星土壤和岩石並提供顯微圖像。科學的角度來看,可能最重要的是ChemCam相機,它能向火星岩石或土壤發射激光,使其表面薄層汽化,而後分析汽化後的成分。它包含一個可以確認受激原子類型的光譜儀和一個可以捕捉激光照射區域詳細圖像的望遠鏡,其激光器位於好奇號桅杆上。好奇號還有火星手持透鏡成像儀功能相當於一個超級放大鏡,位於好奇號機械臂末端,可以拍攝火星表面岩石、土壤的詳細圖像,其精細度可以達到拍攝出一根頭髮絲的水平。這台儀器相當於科學家的一個高科技手持透鏡,可以對準他們希望對準的任何地方。桅杆相機安裝在好奇號主車身上方的桅杆上,由兩個彩色相機組成,是好奇號的主要成像工具。它相當於好奇號的左、右眼,可以拍攝火星表面的三維圖像。

動態中子反照率探測器安裝在好奇號主車身背部附近,用於尋找火星地下的水冰以及晶體結構中含有水分子的礦物。這台儀器可向火星地表發射中子束,然後記錄中子束的散射速度。氫原子可以延緩中子的速度,如果大量中子速度遲緩,便說明地下可能存在水或者冰。這一由俄羅斯航天署提供的探測器能夠發現火星地表下50厘米以內的氫原子。

通訊

好奇號火星車的動力是由一台多任務放射性同位素熱電發生器(MMRTG)提供的,這台設備由美國能源部提供。這台發電機本質上是一塊核電池,它可以將熱能轉化為電能。好奇號的核燃料電池設計壽命長達14年,這個核電池支持好奇號將數據從250萬英里遠的地方傳回,好奇號可以直接通過X波段(8GHz)與地球的深空網(DSN)聯繫,也可以使用UHF(300MHz-3GHz)天線通過火星奧德賽號和火星勘測軌道飛行器與地球聯絡。


龍芯已經隨北斗衛星上天了. 就算登月探測器嫦娥是用"龍芯+Linux"也不出奇. 沒必要把嵌入式實時操作系統說得那麼神乎其神. 無人機使用Linux作為操作系統,也沒見要失控了,是吧. Linux作為一款搶佔式多任務操作系統,上下文切換和中斷在所難免. 但可以給任務進程設置運行優先順序(nice/renice)和進行CPU核心親緣性綁定(taskset). 就算髮生上下文切換,那也是微秒級別的耗時,還是很快的,只是相對沒有那麼"實時"而已.

nice - run a program with modified scheduling priority
renice - alter priority of running processes
taskset - retrieve or set a process"s CPU affinity

我在Ubuntu上用PHP測試了1次上下文切換消耗的時間,不知道對不對,方法如下:

&

1次上下文切換耗時 = ( 1.092894077301(總耗時) - 1(睡眠耗時) - 0.000014066696166992(無usleep時腳本耗時) ) / 1000次 = 0.00009288 秒/次 = 92.88 微秒/次 (接近萬分之一秒)

vmstat 1 中也確實看到了上下文切換(cs)增加了1000多.

也就是說,如果相差萬分之一秒會導致的嚴重的錯誤,這時就不適合使用Linux了.


軍工航天口,實時操作系統一般都用風河公司的Vxworks,但可能會禁運的,不過在天朝總有辦法的。


我猜,也許是μc-os II


這類航天儀器的特點就是不能重啟、停機,不能出故障,而且因為對硬體要求嚴苛,硬體的造價都很高,能用的硬體資源也不多。
這類航天器的操作系統應該為實時操作系統,就是你按下一個按鈕,系統就必須有反應,Linux設計為一個分式操作系統,其kernel大概為4MB,對於這類硬體的造價來講大了,而且多數功能用不上,把它改成實時操作也是一種方案,但其難度不亞於重寫一套操作系統,而改寫類UNIX的實時操作系統Vxworks的方案顯然更好。他們也是這樣想的


由於為了對抗高能粒子等原因,計算機的頻率會很低,製程尺寸也很大,所以速度慢,空間小。不能跑標準版的系統。


國內上天的星類產品至今沒有Linux。
有RTEMS,VXWORKS,ucos.


rtems


按說這種應用非VxWorks莫屬了,可靠性方面其他RTOS難以企及,但是據專家說用的是RTEMS,這是一套開源RTOS,可靠性也是非常高的。


好像叫SpaceWorks,源碼移植自某版本的
VxWorks.據說只是一個硬體操作OS


基本就是實時操作系統。就那麼幾種,再多沒有,沒有錢也用不了,關心也沒有意義


70


為什麼不會是μCOS?好像國外也有用它做航天應用的。


推薦閱讀:

TAG:操作系統 | Linux | 航天 | 軍事工業 | 嫦娥三號 |