当前位置: 华文问答 > 科学

登月探测器嫦娥使用什么操作系统,是 Linux 还是其它自主研发?

2014-01-22科学

多数都是嵌入式系统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的代码遍地都是。