转载

宇宙开发产业的Linux

  地球的资源终会有耗尽的一天,为此各国都有投入资源开发太空科技。方向之一是活用 Linux 等开源软件,将资源作最有效运用。在宇宙开发产业中,Linux 扮演什么角色?

  转用 Linux 的理由不外乎成本和安全。以国际太空站(ISS)为例,2013 年 5 月负责管理 ISS 的 United Space Alliance (USA),就披露 ISS 曾经感染病毒,因此将系统都更换为 Linux。2014 年 1 月,日本宇宙航空研究开发机构 JAXA,就宣布将美日合作的太阳观测卫星“日出”(SOLAR-B),以及磁气圏尾部观测卫星 GEOTAIL 的卫星管制功能,转移至 Linux 平台上,借此加强系统的灵活性和稳定性。

宇宙开发产业的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 挖角。但如果开发软件等配套服务跟不上,也是没用的。中国错过了电脑基础理论发展的黄金阶段,我们现在看到的,实际是几十年前埋下的苦果。开源技术可以是合法地发展自家科技的契机,关键只在乎我们是否愿意掌握。

正文到此结束
Loading...