(转)50年前的程序员们,拯救了阿波罗号登月飞船

原创
小哥 2年前 (2023-05-25) 阅读数 75 #大杂烩

作者:Joe Kutner

译者:核可乐

编辑:张晓楠

相信很多人对阿波罗都有疑问 11 USS的故事已经很熟悉了,但这些故事通常以宇航员为主角。这一次,恰好是阿波罗登月了 50 在周年纪念日,我们将重述这个故事,重点是计算机。留 50 在多年前惊心动魄的阿波罗登月中,可以说软件和程序员是幕后的英雄。

尽管阿姆斯特朗凭借人类第一次踏上月球而成为永恒的英雄,但马萨诸塞州剑桥的一群软件工程师也为解决阿波罗计划做出了巨大贡献。 11 登录序列中触发的两个警报经历了一个几乎疯狂的调试阶段。如果不能及时提供答案,那么负责在几个小时内将宇航员送回地球的登月舱(LM)根本无法按计划启动。

当时是 50 年前的 1969 这代表着一个前所未有的新问题——不仅因为警报发生在月球上,还因为软件本身的概念才刚刚诞生。软件工程一词是在阿波罗计划期间创造的。刚刚赢得冠军的软件工程师突然不得不面对世界上最紧迫的技术挑战之一。

阿波罗计划中的软件开发人员无疑是一群先驱者,他们利用现代计算机中常见的各种技术来 50 几年前,我完成了一个又一个革命性的编程任务。我们可以说,用于运行阿波罗向导的计算机(AGC该软件代表了当前计算机基础科学的缩影。通过了解它的书写方法和工作原理,我们将能够更好地了解我们面前的计算设备。

整个阿波罗计划成功的背后,不止 30 一万名技术人员的努力花费了八年时间 250 数十亿美元的奉献,一个国家的骄傲,完全取决于几行计算机代码——这些代码包括 14.5 万兴.今天它运行 Facebook 需要大约 6200 10000行代码,谷歌需要超过。 20 十亿行代码。

在深入研究具体的技术细节之前,让我们来看看这些软件工程先驱是如何 1969 年 7 月 20 那天你遇到了什么样的危机。

登月的惊心动魄时刻

相信很多朋友都对阿波罗感兴趣 11 USS的故事已经很熟悉了,但这些故事通常以宇航员为主角。这一次,我们将重述这个故事,重点是计算机。

一切始于 1969 年 7 月 20 休斯顿时间下午,德克萨斯州 5 重点刚刚过去。当时,阿姆斯特朗和奥尔德林都已经爬上了登月舱(LM),从命令模块(CM)成功拆下并打开飞机制导计算机:这是一台重达 70 一台磅机器包含的集成电路比当时地球上的所有集成电路都要多。

图片来源: NASA

阿波罗巫师计算机位于登月舱中阿姆斯特朗和奥尔德林的座位之间。宇航员可以使用数字键盘输入命令来校准他们的计算机,然后踏上前往月球表面的伟大旅程。

Ralph Ragan(左)和 Eldon Hall 负责领导麻省理工学院实验室的阿波罗项目。在照片中,他们正在阿波罗模拟控制器前检查向导计算机的组件。图片来源:DRAPER。

与同时代的其他机器不同,这款小型计算机不仅可以同时处理许多任务,还可以在出现多个任务时选择首先处理哪些任务。

阿波罗计划配备了两台这样的计算机,一台在指挥舱,一台在月球着陆器上。两台机器运行几乎相同的软件。不过,为了安全着陆,月球着陆器还部署了额外的代码。

下午 5:05

当奥尔德林在阿波罗巫师计算机上选择程序时 P63 启动飞机的动力下降点火(PDI)在序列时,下降过程开始。几分钟后,计算机将运行一个名为 BURNBABY 该子程序用于点燃下降发动机,利用计算机轨道计算控制其推力,并将登月舱引导到月球表面。

图片来源: NASA

从那时起,奥尔德林的工作就是观察计算机显示信息,并确保它报告的数据与其他数据源一致。阿姆斯特朗看着登月舱的窗外,努力寻找他已经记住了无数次但实际上是第一次看到的月球表面特征。

在 PDI 启动几分钟后,阿姆斯特朗发现了一个名为 Maskelyne W. 火山口,但问题是它比正常时间更早 3 秒进入了他的视野。这是一个相当危险的信号,表明着陆过程已经偏离了完美状态。

在阿姆斯特朗将观测结果报告给地面控制站后,吉恩··克兰兹立即问地面团队,“你想继续下降吗?

“FIDO: Go”

“Guidance: Go”

“EECOM: Go”

“Surgeon: Go”

克兰兹,马上给查理·杜克发出了“没问题”的指示。杜克是地面上唯一被授权与宇航员直接沟通的人,他向宇航员传达了信息:“继续保持功率下降

下午 5:09

登月舱完成了机动偏航,飞船开始旋转,阿姆斯特朗的观察窗转向远离月球的一侧。虽然机组人员无法用肉眼观察,但计算机不受影响。随着旋转的移动,着陆雷达开始指向月球并测量飞机与月球表面之间的距离。奥尔德林将测量值与计算机使用轨道力学和惯性传感器计算的理论值进行比较。此结果称为 Delta-H。

奥尔德林报告:”Delta-H 为负 2900 英尺 任何低于 3000 英尺的值都在正常范围内,所以计算机的任务很好地完成了。现在,计算机开始将雷达数据纳入计算中,以进一步提高结果的准确性。

但就在这时,问题出现了。

下午 5:10

阿姆斯壮报告,“程序报警

电脑显示屏上亮起闹钟。机组人员不知道这意味着什么,但是当他们思考时,地面控制站卡住了 15 几秒钟的沉默。

在剑桥,软件团队也在检查报警信息。有人说:“执行溢出——没有核心设置。计算机超载,但没有人知道背后的原因。这时,另一个人提醒说:“有些东西占用了计算时间。

在休斯顿,地面团队正在紧张地讨论是暂停任务还是继续着陆。幸运的是,这一年只是 26 史蒂夫,年长的导游官·贝尔斯(Steve Bales)我已经完成了报警码的查询,很快就可以继续登录了。

阿姆斯特朗开始变得不耐烦了”1202 程序警报,我们该怎么办 杜克回应道:“无视警告,继续着陆

虽然警报仍在继续,但计算机的计算并未受到影响,Delta-H 该值也在不断减小 - 已经证明计算机一直在正常执行其工作。在计算机内部,令人难以置信的技术设计使其能够在发生错误时继续运行。

几秒钟后,发动机如预期的那样放慢了飞机的速度,奥尔德林和阿姆斯特朗紧张的神经终于放松了下来。

奥尔德林:“哇!慢点开

阿姆斯特朗:“放慢速度,按时完成

这是官方任务记录中唯一一次使用感叹号。

在剑桥,人们终于松了一口气。减速下降意味着导航和制导系统都按预期运行。

不久之后,计算机自动切换到该程序 P64使用的指导方程没有区别,只是增加了更适合低空条件的不同目标。登月舱正在逼近 3000 脚的位置,但更多的麻烦还在后面。

图片来源: NASA

下午 5:14

奥尔德林报告,“程序警报”。这次的报警号码是 1201。

经过几分钟的平静,1201 1号警报再次出现在坎布里奇地面团队的面前。他们感到了一阵漩涡,但休斯顿地面控制站仍然充满信心。他们可以看到飞机的遥测数据,并知道计算机仍在执行正确的计算。此外,在着陆过程中,尤其是在此刻,存在终止序列的巨大风险。所以只要数据看起来不错,最好继续下降。经过综合考虑,他们下达了继续着陆的指示。

闹钟一直闪烁着存在感,一分钟后,1201 与 1202 闹钟同时亮起。休斯顿非常坚定地在每次警报后给出持续下降的判断。

下午 5:15

在不到 2000 脚下,电脑屏幕突然一片空白。任务列表中没有此记录,此事件仅在任务完全完成后才讨论。但这种情况无疑加剧了紧张的气氛,因为阿姆斯特朗意识到目标着陆点附近散落着大量巨石。

当显示器最终再次亮起时,它会提示一个新的显示器 1202 报警。但无论如何,计算机一直在默默地执行最关键的向导计算任务。

十七秒后,飞船大约 800 在脚下,问题再次出现。显示屏已经空白了近两秒钟。此时,阿姆斯特朗的心率迅速上升到每分钟。 150 次。

在闪电和火石的时候,阿姆斯特朗判断当前的着陆点不安全,并决定将计算机切换到程序 P66,即半手动模式。在这种模式下,飞机的前进方向将不再由计算机向导程序控制,而将由阿姆斯特朗手中的操纵杆控制。当然,他采取的每一个动作都会得到计算机软件的辅助,从而提高操作的稳定性和准确性。就这样,阿姆斯特朗和电脑一起操作登月模式,驶离了这片巨石散落的区域。

下午 5:16

至此,故事基本结束,接下来是英雄时刻。阿姆斯特朗驾驶登月舱飞越巨石阵,并在燃料只能持续几秒钟时成功降落车辆。

杜克发了一条语音信息,“你让我们的团队非常紧张。现在我们终于复活了

但是软件工程师没有时间放松。1202 与 1201 警报仍然令人不安,团队开始怀疑计算机的健康状况。继续依靠它来指挥飞机上升是否安全?毕竟,在宇航员安全返回地球并再次降落在海洋之前,没有人敢提前庆祝。

当时,大多数 NASA 工作人员的第一反应是计算机可能在某种程度上出现故障。但计算机是这个故事的真正主角。面对这些警告,它决定继续处理最关键的指导方程,从而挽救宇航员的生命并支持他们成功完成任务。

这是警报,而不是警报 Bug

阿姆斯特朗和他的团队看到的警报不是错误。这实际上只是一个警告,这意味着操作系统正在丢弃大量不太重要的雷达测量事件,以确保它可以实时处理更高优先级的着陆任务。今天,我们称之为优先级调度,它广泛用于几乎所有操作系统 - 从笔记本电脑运行 Windows在手机上运行 iOS然后是运行我们网站的人 Linux 内核等。但在 1969 在,这种算法可以看作是计算机科学领域的绝对前沿。

阿波罗巫师计算机开创了一系列新的软件概念,如优先级调度,其设计者首次使用“软件工程”来描述他们的工作内容。

英雄结束了?

7 月 20 成功登月的喜悦并没有停止 11 6月的抗议活动。当时,由于 I-Lab 关于军事武器的研究工作导致学生和实验室外的警察发生冲突。达到 1973 在麻省理工学院与实验室断绝联系,后来将其更名为查尔斯·斯塔克·德拉布尔实验室( Charles Stark Draper Laboratory)所有机密的军事研究都被移出了校园。(注:阿波罗计划是授予麻省理工学院的第一份重大合同,是唯一授予大学的合同,也是唯一一份没有经过招标的合同。

大约在同一时间,美国宇航局取消了最后三次阿波罗任务,结束了人类在低地球轨道以外的探索活动,但没有说明何时重新启动。

之后,大部分计算机被废弃,NASA 阿波罗计划的代码从未发布过,但可以在剑桥和华盛顿的博物馆中找到,一些计算机爱好者也发布了在线版本。

50 三年前,当着陆器成功着陆时,所有的尘埃都尘埃落定了,机载电脑就在其上 P68 已检查登月确认程序。嵌入在软件中的最后一行对外面的任何人都不可见,它说:

宇航员:现在你已经成功登陆月球

原文链接:

https://medium.com/softwares-giant-leap/the-software-that-saved-apollo-11-4fb37dfad652

https://www.wsj.com/articles/apollo-11-had-a-hidden-hero-software-11563153001?mod=rsswn

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门