神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:天天跟电脑、手机的我们对操作系统自然不陌生。Windows、macOS、Linux、Android、iOS……,这些操作系统大部分人都耳熟能详。可是,你知道承担探索太空任务的那些航天器用的是什么操作系统吗?你知道火星探路者为什么差一点出师未捷身先死吗?科技作者Jacek Krywko为我们揭秘在太空中运行的操作系统。原文发表在arstechnica上,标题为:Definitely not Windows 95: What operating systems keep things running in space?篇幅关系,我们分两部分刊出,此为第二部分。
太空里运行的操作系统,绝对不是 Windows 95(上)
BepiColombo计划的艺术画,该项目为欧洲航天局与日本宇宙航空研究开发机构的联合项目,任务是将把两艘航天器带上水星的恶劣环境。
划重点:
欧洲航天局爱上了RTEMS,其中的“M”经历过多个含义
众筹卫星的SpaceChain OS的内核是中国的开源实时操作系统Sylix
过去十年,太空操作系统的情况似乎比较稳定。在美国,NASA基本上对将专有的VxWorks用于其最引人注目的计划感到满意。但是在欧盟这里,欧洲航空局拥有自己的干将。该航天局在开发开源RTEMS(实时多处理器系统)方面投入了大量资金,据欧洲航天局的Maria Hernek称,它具备了同样的功能,但却没有昂贵的许可费用。
RTEMS一开始并不是为飞行欧洲的飞船而开发的,其最初的目的其实是飞美国的导弹。RTOS的历史始于1988年美国陆军导弹司令部研究开发和工程中心进行的研究。陆军研究人员得出的结论是,采用专有的实时操作系统会导致许多问题。其中最值得注意的是,政府不掌握代码,所以没法以任何方式对其进行修改。此外,研究声称软件故障的责任似乎不太清楚,再加上那个时代的实时操作系统对于导弹系统来说有点太慢了。出于这种种原因,美国陆军决定开发自己的RTOS,也就是实时导弹系统(Real-Time Executive for Missile Systems)。其目标是RTOS要够快,能控制导弹,要由政府拥有,容易适用于不同的处理器系列,并且无需许可。
随着RTEMS慢慢形成气候,美国军方开始意识到其应用范畴也许远远超过了发射火箭而已。所以,这套系统的名称迅速演变为成了更通用的实时军事系统(Real-Time Executive for Military Systems)。从1995年5月4日开始,RTEMS作为开源发布了,所以无需再穿上制服,然后又变成了实时多处理器系统(Real-Time Executive for Multiprocessor Systems)。
欧洲航天局爱上它主要有两个原因。首先是RTEMS是重新开始设计的,所以可以轻松地移植到新的处理器系列上。因这样就使得它也可以部署在欧洲为欧洲航天局的太空发射任务开发的抗辐射的SPARC LEON芯片上。第二个原因是这套系统是高度可定制的。RTEMS跟VxWorks有着相同的工作原理,但赋予了程序员更大的自由度,因为实际上系统几乎所有内容都可以进行修改。欧洲航天局完全可以随意摆弄代码。
调度是RTEMS不同于VxWorks的可自定义领域之一。在VxWorks里面,程序员受制于基于优先级的抢占式调度程序之内,靠这种机制来处理具有不同优先级的任务,并在多个任务具有相同优先级时进行循环调度。这一点不能改变。WindRiver就是用这种方式开发的——要么接受,要么离开。RTEMS则提供了一种完全不同的做法。
当然,RTEMS也有基于优先级的调度程序,跟VxWorks中一样,也有256个优先级。而且它还有自己的循环调度方法。两者都用作单处理器平台默认的调度程序。但是在RTEMS里面,你就不需要选择某个选项,而可以采用众多调度机制中的一种。其中包括简单优先级调度程序(Simple Priority Scheduler),这是默认调度程序的精简版,可以在若干内存约束的情况下工作。同样的低俗存储器调度程序还有一个变体,是专门用来为有着多个处理器进行并行处理的对称多处理系统服务的。还有一个调度选项是最早到期优先调度程序(Earliest Deadline First Scheduler),顾名思义,这种调度程序优先考虑截止时间最早的任务。另外,如果你对RTEMS所有这些选项都不满意,也可以全部抛弃,自己写调度算法——RTEMS一样能用。
自从选择这套RTOS以来,欧洲航天局已投入大量时间和精力来让RTEMS达到B级的软件关键等级,这是该机构认可的第二高的软件可靠性级别。欧洲航天局使用B级状态来表示其故障会导致“严重”后果的软件。为此,欧洲航天局的测试人员必须执行RTEMS代码当中的每一行以及每一个决策点。唯一比这还要的关键级别是A级——也就是失败的后果是“灾难性的”的。(遗憾的是,欧洲航天局的文件并没有明确说明“关键”或“灾难性”的确切含义是什么,但你很容易想象国际空间站在布鲁塞尔坠毁的情形。)
Hernek说:“我记得我们上一次用VxWorks是用到哨兵1号航天器的一种仪器上。”。欧洲执行的所有其他现代太空飞行任务,包括最新的太阳轨道飞行器,搭载的均为RTEMS。
此时,VxWorks和RTEMS都已经用了有几十年了,而且在所做的事情上表现都非常出色。2004年,NASA的软件工程师Gregory Menke曾在一封电子邮件交流中讨论过实时操作系统,他说,就性能而言,RTEMS和VxWorks不分伯仲,甚至都无法分辨出两者之间有什么差别。所以,就像你能预料到的那样,欧洲航天局有时候也会用VxWorks ,而NASA又曾多次用过RTEMS。这两个重要的飞行操作系统甚至还在同一个航天器上并行运行过,各自管理不同的仪器。
但这并不意味着过去十年太空操作系统就是VxWorks和RTEMS一统天下了。有时,新的挑战者会出自最意想不到的地方,比方说比特币论坛的一篇帖子。
早在2013年的时候,比特币核心开发人员Jeff Garzik在Bitcoin Talk Forum上提出了一个卑微的想法:弄点比特币到太空上面如何?
Garzik说:“我正在研究怎么才能让比特币网络变得更又弹性。而且我又有业余的太空背景,因为我父亲就是在白沙导弹试验场工作的,他带我去看过航天飞机发射。” Garzik认为有两条可能的途径:按照他的说法,第一个途径是租用现有卫星的带宽,然后用来广播区块链数据。他承认:“但是从区块链社区的角度来看,单点故障太多了,存在很大的宕机风险。”
不过,第二条道路是利用正在进行的纳米卫星革命。Garzik设想在地球轨道上投放一圈的微型卫星,然后通过卫星链接来互相连接,该链路则存储和广播区块链数据。
Garzik 说:“我把它叫做SpaceChain。 SpaceChain会设计成由多颗卫星组成的自愈式网状网络,这种网络可以绕开硬件以及航天器故障。我们正在研究一种云计算模型,数量众多并且廉价,可靠这个来弥补软件故障。”
Garzik的想法很快被打造成SpaceChain基金会,后者很快就开始热火朝天地开发起可在所有这些卫星上运行的SpaceChain OS来。
SpaceChain OS曾经坐过猎鹰9号的便车
SpaceChain OS由两个关键组件组成。首先,有其一是基于开源Sylix内核的一个典型RTOS 。据Garzik称,这种Sylix OS在中国已经被广泛用于多种军事和太空应用。从某种程度上来说,这使得它跟RTEMS有些类似。请记住,虽然RTEMS现在是Real Time Executive for Multiprocessor Systems的缩写,但以前字母“M”代表的可是“导弹”的意思。Sylix也有着同样的背景故事。唯一的区别是原籍国的不同。
Garzik表示:“它曾经身经百战,这可不是双关语。该系统十分可靠,经受住了测试考验,能够支持最受欢迎的嵌入式太空处理器。而且它非常的精益,易于维护。 Linux内核大概有五百万行代码。Sylix要比它小五倍。”
SpaceChain OS的第二个关键组件是一种用于运行星座网络的区块链技术。这种区块链组件也让发射众筹卫星成为可能。其想法是,不同的公司、机构甚至个人都可以参与进来,为运行SpaceChain OS的卫星提供资助。Sylix这部分负责的是像RTEMS或VxWorks控制现代宇宙飞船的硬件那样控制航天器,而区块链组件部分则负责让多个利益相关者共享航天器资源。
Garzik 解释道:“其工作原理是这样的:要想给SpaceChain网络增加节点,首先需要走SpaceChain组织的认证流程,合格后会被添加到白名单。然后,你就可以向支付SpaceChain费用来建造卫星,也可以根据开源代码硬件规范、公共标准和公共协议(就像互联网的一样)来自己动手做。” Garzik说,之后,该组织需要发射卫星或者把发射留给SpaceChain,一旦航天器成功进入轨道,所有者需要支付注册费,以便接收区块链智能合约,新节点通过后者来跟网络的其他卫星进行身份验证。
这个计划似乎非常的宏伟,甚至还很梦幻,但是Garzik的愿景至少目前进展缓慢。SpaceChain已经在太空放置了多个比特币节点:2018年借助了CZ-4B Y34火箭,2019年搭的是SpaceX Falcon 9火箭的便车。他们的工作的确很吸引人,甚至吸引了来自欧洲航天局的投资。
所以,太空上面跑的操作系统不是这个PS得很差劲的Windows 95。
开发新的太空操作系统无疑是个令人兴奋的想法。但是到目前为止,那些往小行星带飞过点什么的人似乎对SpaceChain的想法多少有些怀疑。
欧洲航天局的Hernek说:“只要提供不了我们真正需要而RTEMS没有的任何新功能, SpaceChain OS就没法取代RTEMS。”
据她介绍,欧洲航天局想要在自己的航天器上实现的任何新软件产品都需要经过相当长的测试和认证。这就是为什么欧洲航天局、NASA等航天机构的人往往会设法重用现有的资源,因为这可以缩短整个开发过程。
Hernek表示:“瞧,我们不会因为有趣就去玩新的太空软件。要做的话我们总会有充分的理由。要么是我们现有的软件解决不了我们的问题,要么就是会一些问题或类似的东西的出现。”
除此以外,可以肯定的是,那些成熟的操作系统正在慢慢接近Garzik谈到的那个长远目标。只不过他们是用一种渐进性的修改来做到这一点。在最新版的VxWorks 7里,Wind River已经引入了若干的新功能,其主要目的就是让开发过程更加轻松快捷。整个系统高度模块化,开发人员可以尝试利用多个版本的关键组件,比方说文件系统,然后看看哪个能解决他们的问题。不再需要像macOS那样等待整套系统的下一次更新了。该公司还增加了对高级图形用户界面的支持,VxWorks现在可以支持触摸屏和其他用户友好型的显示器了(这些显示器也许会出现在未来的宇宙飞船上面)。RTEMS也已经实现了类似的功能。
不过,Hernek承认,SpaceChain那个同时向多个用户提供卫星的想法非常诱人。Hernek说:“他们说我们没有多用户功能是对的。我们目前顶多只能管理双用户系统。” 不过,按照Hernek的说法,欧洲航天局目前正在尝试通过对飞控软件进行分区来解决这个问题。她说:“我们一直在试验用一部分的IMA(集成模块化航空电子系统,可让多个航空器在支持不同应用的分布式网络中工作)来解决这个问题。第四代喷气式战斗机用的就是这种系统。”
随着近几年来太空发射的理由越来越充足,现代太空操作系统的能力也在不断扩大,在这种情况下,哪怕是行业巨头也会感受到互联网论坛催生的后浪的迫力,要不断学习新的技巧。Hernek和她所在的欧洲航天局团队仍然是个很好的例子。她们目前正在开发各种软件产品,好让航天器能实现这种多用户类型的体系结构。
“当然,看看SpaceChain OS打算怎么解决这个问题会很有趣。不过,目前我们有来可以进行分区的IMA。我们已经在路上了。”
译者:boxi