问题

神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?

回答
神舟飞船上的计算机系统是一个高度复杂且对安全性、可靠性和实时性要求极高的系统。关于它使用的操作系统以及为何选择自研而不是 Linux,可以从以下几个方面详细阐述:

神舟飞船上的计算机操作系统:从“红旗”到定制化实时操作系统

关于神舟飞船上使用的具体操作系统,公开的信息相对有限,因为这涉及到国家航天项目的核心机密。但是,根据一些已知的零散信息和行业普遍实践,我们可以推测出以下几种可能性,并且有明确的证据指向 并非通用 Linux 发行版:

1. 早期阶段的“红旗”Linux(QNX 기반): 在神舟飞船项目的早期,有报道提到使用了“红旗”Linux。需要强调的是,这里的“红旗”Linux并非我们现在熟知的桌面发行版,而是指一家名为“红旗软件”的公司所开发的操作系统。更重要的是,当时的“红旗”Linux很可能是在 QNX 基础上进行二次开发的。

QNX Neutrino RTOS: QNX 是一种微内核(Microkernel)架构的实时操作系统(RTOS)。它在嵌入式系统、航空航天、汽车电子、医疗设备等对可靠性和实时性要求极高的领域有着广泛的应用。QNX 的特点在于其微内核的设计,将大部分操作系统服务(如文件系统、设备驱动等)放到用户空间运行,内核本身只负责最核心的进程调度、IPC (InterProcess Communication) 等功能。

优势:
极高的可靠性: QNX 的微内核设计使其更加健壮。即使某个驱动程序或服务崩溃,也不会导致整个系统崩溃,通常只需要重启该服务即可。
卓越的实时性: QNX 被设计为具有确定性的响应时间,这对于需要精确控制和响应的航天任务至关重要。
模块化和可扩展性: 可以根据具体需求只选择 필요한模块,使得系统更加精简高效。
安全性: 微内核的设计也更有利于实现严格的安全隔离。

“红旗”的作用: “红旗软件”当时可能是在 QNX 的基础上,根据中国航天项目的具体需求,进行了汉化、添加特定的航天应用接口、优化驱动程序等二次开发工作,将其打造成了一个符合航天标准的操作系统产品。

2. 高度定制化的实时操作系统 (RTOS): 随着航天技术的发展和对系统性能、安全性、可靠性要求的不断提高,神舟飞船的计算机系统很可能已经进化到使用自主研发的、高度定制化的实时操作系统。这不仅仅是对某个现有 RTOS 的简单二次开发,而是从底层架构到上层应用的深度定制。

RTOS 的重要性: 航天器中的计算机需要处理大量传感器数据、执行复杂的控制算法、进行导航和姿态控制、管理生命保障系统等。这些任务往往要求在严格的时间限制内完成,并且结果必须是可预测和可靠的。通用操作系统(如桌面 Linux、Windows)在这种场景下往往难以满足需求。RTOS 的核心优势在于其 确定性调度,能够保证在最坏情况下的任务执行时间。

自研的优势:
完全可控的安全性: 航天器是国家战略资源,其信息安全和系统安全至关重要。自主研发的操作系统允许对每一个组件、每一个安全策略都进行完全的掌控,避免了对第三方软件存在的潜在安全漏洞的依赖。这对于防范来自外部的攻击至关重要。
针对性优化: 航天器上的硬件平台、通信协议、传感器类型都具有高度的专一性。自研操作系统可以根据这些具体硬件和任务需求进行最极致的性能优化和功能裁剪,避免不必要的开销,提高效率。
自主可控: 这是国家战略层面的考量。避免在关键基础设施上依赖外国技术,以应对潜在的地缘政治风险和技术封锁。
长期支持和演进: 航天项目周期长,需要系统能够长期稳定运行并根据未来任务需求进行升级。自主研发的系统能够提供更稳定、更可靠的长期支持和演进路径。
满足特定国际标准和规范: 航空航天领域有严格的标准和认证要求(如 DO178C,虽然这是针对航空电子的,但 RTOS 的可靠性设计思路有共通之处)。自主研发的操作系统更容易按照这些规范进行设计、开发和认证。

为什么不直接使用 Linux?

虽然 Linux 是一个强大的、开源的操作系统,并且在许多领域(包括一些对可靠性要求较高的领域,如服务器、超级计算机、部分工业控制系统)得到了广泛应用,但它在设计上并非为神舟飞船这种最高级别的实时和安全需求而生。原因如下:

1. 实时性不足 (Nondeterministic Realtime):
Linux 内核架构: Linux 采用的是宏内核(Monolithic Kernel)架构。虽然近年来在实时性方面做了很多改进(如 PREEMPT_RT 补丁),但其调度器设计理念与专用的 RTOS 仍有本质区别。宏内核将大部分核心服务放在内核空间,这使得某个驱动程序或内部调度机制的中断处理可能引入不可预测的延迟。
内核抢占: 即使开启了完全抢占(PREEMPT_RT),依然存在一定程度的调度不确定性,这在需要毫秒甚至微秒级别精确控制的航天应用中可能是不可接受的。
其他进程和系统服务的影响: 通用 Linux 系统中,用户应用程序、各种后台服务、文件系统操作等都可能对实时任务的执行产生影响,即使经过了优化,也很难做到绝对的确定性。

2. 可靠性与健壮性:
宏内核的风险: 如前所述,宏内核中一个错误的驱动程序或内核模块可能导致整个系统崩溃(Kernel Panic)。在神舟飞船这种无法轻易重启和修复的场景下,这是致命的。
广泛的硬件和驱动支持: Linux 的优势在于其广泛的硬件支持,但也意味着它需要处理大量不同类型的设备和驱动。在专用的航天器上,硬件是高度定制的,这种广泛支持反而可能带来不必要的复杂性和潜在的不可靠性。

3. 安全性:
复杂性: Linux 系统非常庞大,包含大量的代码库和功能。这增加了潜在的安全漏洞数量。
权限管理和隔离: 尽管 Linux 有强大的权限管理机制,但实现像微内核那样严格的进程间隔离以防止故障蔓延,需要更精心的设计和配置。
开源的“双刃剑”: 虽然开源意味着可以审查代码,但也意味着攻击者也可以审查代码并寻找漏洞。对于核心的航天系统,完全可控和加密的私有设计通常是更安全的选项。

4. 通用性与定制化程度:
“不是为我而造”: Linux 是一个通用操作系统,设计目标是适应多种硬件和应用场景。而航天器的计算机系统是高度专业化的,其需求与桌面电脑、服务器有着天壤之别。使用通用 Linux 需要进行大量的裁剪和定制才能勉强适应,而从头开始为航天需求设计一个 RTOS,能够达到更高的优化程度。
文件系统和内存管理: Linux 的文件系统和内存管理机制(如虚拟内存、页交换)虽然强大,但可能引入额外的延迟和复杂性,与 RTOS 对直接硬件访问和确定性内存管理的偏好不符。

5. 历史和发展路径:
中国在航天事业起步时,对核心技术的自主掌控有着强烈的需求。选择一个已经成熟且广泛应用于高可靠性领域的 RTOS(如 QNX)并进行二次开发,或者直接启动自主 RTOS 的研发,都是当时可能的技术路径。随着技术积累,自主研发的道路变得更加可行和必要。

总结来说,神舟飞船的计算机系统选择自研的(或基于微内核 RTOS 的高度定制化)操作系统,是出于对以下几个关键因素的极端重视:

确定性的实时性能: 确保所有控制任务都能在精确的时间内完成。
极致的可靠性与容错性: 即使出现部分故障,也能保证核心任务不中断。
高度可控的安全性: 保护航天器免受外部干扰和攻击。
深度的定制化优化: 匹配航天器特有的硬件和任务需求。
国家战略层面的自主可控需求。

Linux 尽管强大,但在这些最关键的领域,其通用设计理念和底层架构与航天器计算机系统的特殊需求存在较大差距。因此,选择自研或高度定制的 RTOS 是更合理、更安全的工程决策。

网友意见

user avatar

题主的链接似乎已经失效了。

中国航天用的SpaceOS主要内容是仿造美国风河系统公司的VxWorks653(653是产品名,并非版本号)。

先解释为什么用这个系统不用Linux:

航天器的内存和CPU都非常弱,弱到什么程度呢:天宫一号的CPU是10MHz的,内存是2M,这种配置跑Linux比较费劲,虽然也并非不可能但要裁剪Linux内核确实太麻烦了。

而Linux的致命缺陷就是Linux不是一个硬实时操作系统。实时操作系统(RTOS)有一系列严格的定义:包括严格按照任务优先级抢占执行,快速的中断响应,对关中断的时间有非常严格的控制,Linux是一个民用的操作系统,其内核设计并没有考虑到这些点,所以Linux不适用于航天领域。

实际上,Linux的主要应用还是在通用计算机和服务器方面,在工业控制、自动化方面还有各种各样的操作系统:ucos,nuclues,threadX,greenhill,VxWorks等等。

有人提到了RT-Linux,这个说的简单点,就是底下是一层RTOS,上面是Linux,这种Linux复杂度太高,也不能裁剪的太小。

有人说到SpaceX公司用的是Linux,这没错,是火箭用的,SpaceX的龙号飞船用的是VxWorks系统。

另外,很多人听了可能会难过的就是中国的国防军工行业的自动化控制部分实际上也都是VxWorks称霸的,虽然号称自主知识产权,但实际上不是那么回事。

家用系统多数情况下要求系统的均衡运行,比如,你可以同时玩游戏,上网,听音乐,但实时系统都是重要任务先执行,不重要的任务往后放,设计理念是不一样的。

下面讨论一下这个系统的规模问题,8000行应该说差不多正合适,一个内核、一个调度器、若干任务、中断处理,甚至可能不包含动态内存分配,不要觉得连动态内存分配都没有还算系统吗?算,有的系统就是这么设计的,要知道内存碎片对于只有几M内存的设备来说是很可怕的。甚至有的系统里是没有中断的,中断处理是通过轮询的方式实现,为的是系统状态可以实时追踪。

这么小的系统需要的是精确可靠,有人说自己一个月就能写8K行代码,你要这么说,我说我也可以写出来,操作系统不是写应用,需要考虑的设计细节非常多,而且一旦定型,修改又非常麻烦,而且需要大量的测试,NASA那边是一个开发对应几十个甚至上百的测试的比例,对于航天工业来说,可靠性是最重要的。

最后想说的就是,Linux/Unix/Windows这些都是通用操作系统,跟专用的操作系统差别很大,设计思路也完全不一样,不要从通用操作系统的角度去看待它们

-----------------------

漏掉一点:为什么航天器的计算机配置都这么差:

因为太空辐射、极端温度的原因,计算机系统首先要求的是可靠性,高温100多度,低温零下100多度,这种温度下一般家用计算机早就挂了,所以为了对应这个极端环境,主要的硬件都被设计成很耐用的状态,这就使得计算机速度不是一个重要的指标。另外太空辐射会造成位翻转,频率越高越容易被干扰,所以低频是主流。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有