來源出處 : http://linuxpilot.com/space-linux
地球的資源終會有耗盡的一天,為此各國都有投入資源開發太空科技。方向之一是活用Linux等開源軟體,將資源作最有效運用。在宇宙開發產業中,Linux扮演什麼角色?
轉用Linux的理由不外乎成本和安全。以國際太空站(ISS)為例,2013年5月負責管理ISS的United Space Alliance(USA),就披露ISS曾經感染病毒,因此將系統都更換為Linux。2014年1月,日本宇宙航空研究開發機構JAXA,就宣布將美日合作的太陽觀測衛星「日出」(SOLAR-B),以及磁氣圏尾部觀測衛星GEOTAIL的衛星管制功能,轉移至Linux平台上,藉此加強系統的靈活性和穩定性。
但這是否意味著Linux能在任何場景下使用呢?當然不是。例如美國的航天飛行器,採用的作業系統是Wind River公司開發的VxWorks 653,這也是中國航天飛行器系統SpaceOS的主要模仿對象。這些系統並沒有使用Linux,原因是航天飛行器的記憶體和CPU都非常的陽春。陽春到什麼程度呢?以中國天宮一號為例,其CPU速度是10MHz,記憶體只有2MB,這種配置跑Linux比較費勁,雖然也並非不可能,但如果要裁剪Linux核心才能用,就實在太麻煩了。
為什麼航天飛行器的電腦配置都這麼差?因為太空輻射、極端溫度等原因,系統首先要求的是可靠性,必須在高溫攝氏100多度、低溫攝氏零下100多度下也可正常運作。換了是一般家用電腦在這種溫度下早就掛了,所以為了對應這個極端環境,主要的硬體都被設計成很耐用的狀態,令「電腦的速度」從來都不是一個重要的指標。另外太空輻射會造成位元翻轉,頻率越高越容易被干擾,所以低頻的設計是主流
而Linux的「缺點」,就是它不是一個真正的實時作業系統。實時作業系統(RTOS)有一系列嚴格的定義,包括嚴格按照任務優先級別執行,快速的中斷回應等等,都有非常嚴格的控制。「實時」簡單的說,就是運行一個程式功能,像是進程切換的時間,是精確而且可估計的。作業系統必須能及時處理外界中斷、通訊等任務。如果不能及時回應導致數據丟失,對於一般系統而言可能問題不大,但對航天飛行器來說,嚴重的話甚至有可能造成人命傷亡。
家用系統多數情況下,要求的是系統的「均衡運行」。例如你可以同時玩遊戲、上網和聽音樂,但實時系統卻是「重要任務先執行,不重要的任務往後放」,設計理念是不一樣的。Linux的進程切換需要在核心進行,用戶狀態和核心狀態的切換,會耗費很多時間。有人會說Linux不是有個實時系統叫RT-Linux嗎?這個說得簡單一點,就是底下是一層RTOS,上面是 Linux 。這種 Linux 複雜度太高,也不能裁剪得太小。
例如嵌入式領域很流行的作業系統µC/OS-II,總共只有兩三千行程式碼,但是已經通過美國的行業認證,可以用在商業飛行器上,證明了其高效穩定性。這麼小的系統,需要的是精確可靠。作業系統需要考慮的設計細節非常多,一旦定型修改又非常麻煩,而且需要大量的測試,以NASA為例,每個新開發的功能要進行幾十個甚至上百個的測試。有人說SpaceX不是也有用Linux嗎?是的。但其飛行器上使用的,卻是VxWorks系統。事實上中國的國防軍工行業的自動化控制部分,也是VxWorks的天下。雖然號稱自主知識產權,但實際上仍然以美製系統為主流。
中國能不能寫出自己的通用作業系統呢?我覺得是可以的,只是在這個作業系統之上的應用軟體一定不夠多,最後沒人會去用。因此目前中國團隊做的作業系統,一般的目的都不是跟微軟競爭,而是滿足一些特殊需要。在基礎領域很多項目沒法做,是因為涉及專利,基礎理論專利在人家手裡。龍芯研發負責人胡偉武說過,技術問題其實不難解決,只要有錢,大可去Intel和AMD挖角。但如果開發軟體等配套服務跟不上,也是沒用的。中國錯過了電腦基礎理論發展的黃金階段,我們現在看到的,實際是幾十年前埋下的苦果。開源技術可以是合法地發展自家科技的契機,關鍵只在乎我們是否願意掌握。