※ 引述《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