※ 引述《inet (所有的相遇都有意義)》之銘言:
: 三大作業系統
: 微軟有Windows
: 頻果有iOS
: Google 有android
: 都是美製
: 看出來要稱霸市場沒有作業系統不行
: 為什麼只要美國做得出來?
這樣說來,標題應該改成「為什麼德國/日本/中國/...(其他G20列表)...沒做出
作業系統?」
其實第一行就可議,請問什麼叫做「三大作業系統」?用出貨量來計算嗎?還是
依據媒體的可見度呢?
從電子計算機問世以來,作業系統從來就不是單獨存在,是為了解決特定的工程
議題,人們多半不會直接接觸作業系統,而是透過其上的應用程式或 shell (這
不好翻譯,可理解為讓你輸入命令的文字介面或者圖形人機介面等等)。
如果真要算出貨量,上述三套作業系統還比不上 seL4,後者光在 2005 年到 2012
年之間就累積超過 15 億台裝置的出貨量 [1],而 seL4 源自哪裡?德國和澳大利亞,
更深入來看,seL4 在分類上隸屬於 L4 微核心 [2],這領域最頂尖的研究單位就在
澳大利亞,甚至美國軍方也採用 seL4 作為新一代無人作戰直升機裡頭的主要作業
系統 [3]。為什麼美國軍方採納自己國家以外的解決方案呢?原因無他,seL4 是世界
上第一個被證實功能和實作完全符合期望的高效能作業系統核心 [4]。
看到這裡,你大概會說:「原來澳洲不只有袋鼠和打工度假,還有世界一流的作業
系統呀?」
從 Wikipedia 的資料 [1] 顯示,L4 微核心的家族成員除了 seL4,還有好幾個實作,
其中不乏商業化應用的案例,包含兩個由台灣人參與的專案,如 codezero microkernel
和 F9 microkernel,後者則是源自台灣成功大學的課堂作業 (開發主力之一是一位大學
四年級的學生)。在電腦科學的研究排名來說,成功大學可能連二流都稱不上,但仍可
孕育出已透過 F9 microkernel,讓美國 Genesi 公司以此為根基,開發出 IoT 平台
裡頭的作業系統 [5]。該怎麼解釋呢?Because we can.
不過出貨量達到 15 億個單位的作業系統比比皆是,像是老字號的 Nucleus RTOS [6]
累積用於世界上超過 40 億個裝置中,遠超過原命題「三大」的出貨量總和,而
Nucleus RTOS 就由總部設立於德國的企業西門子所擁有。
在 Military & Aerospace [7] 列出的國防和航太工業訊息中,也可找到台灣廠商作為
重要供應商的訊息,而也有台灣人開發的作業系統核心在裡頭。之前網友說得很好,
光是 Ptt 八卦板的網友就有一堆具備開發作業系統的經驗。
依據工業技術研究的數據 [8],2008 年台灣在工具機的市場產值達到 1200 億元,佔
世界第 5 名,出口值則達 960 億元,為世界第 4 名,而台灣工具機供應商所採用的
作業系統,不乏自製的實作,像是來自工業技術研究院,也有台灣廠商在極為精簡的
人力投入下,開發出運用在前述高單價市場的 RTOS 核心。只會敲鍵盤的肥宅如我,
這幾年也做了兩套,遑論板上高手如雲的諸位。
開發作業系統可能也不會太難,至少對一位大三下學期才從 C 語言程式設計學起的
成大機械系學生來說 (喔,真的不需要動員到資訊工程系的學生),兩學期的訓練就
足以開發一套具體而微的作業系統 [9],甚至成為大學作業系統課程的教材。這方面
來看,我對台灣的教育還是深具信心。
若您對開發作業系統感興趣,在成功大學甚至有專門的課程 [10],歡迎參考指教。
台灣人王祐中博士在上個世紀就開創 Linux 為基礎的即時作業系統的重要里程碑,
絕對是當時的「三大」解決方案之一,他說過一席很棒的話,在此分享如下:
「寫一個作業系統是多麼美好的事,在有限的生命中千萬不要遺漏了它。」
[1] https://en.wikipedia.org/wiki/L4_microkernel_family
[2] microkernel 中文資訊請見拙作: https://hackmd.io/s/SJ55y7fR
[3] https://futurism.com/darpa-is-trying-to-develop-an-unhackable-drone-by-2018/
[4] 裡頭重要的特質就是形式化驗證,可參見拙作: https://hackmd.io/s/H1xxp3pF0
[5] https://genesi.company/solutions/embedded
[6] https://en.wikipedia.org/wiki/Nucleus_RTOS
[7] http://www.militaryaerospace.com/
[8] https://goo.gl/m6hXof
[9] http://wiki.csie.ncku.edu.tw/embedded/rtenv
[10] http://wiki.csie.ncku.edu.tw/sysprog/schedule