太空不惧宕机,软件工程鼻祖NASA是怎么做到的?

太空不惧宕机,软件工程鼻祖NASA是怎么做到的?
导读:对许多人来说,NASA 十分奥秘。NASA 即美国国家航空航天局,是美国联邦政府的一个行政机构,担任拟定、施行美国的民用太空方案,以及展开航空科学暨太空科学的研讨。NASA 担任美国的太空探究,例如登月的“阿波罗”方案,太空试验室,以及随后的航天飞机。特别值得一赞的是,NASA 也火热拥抱了开源:在航天范畴中,NASA 在开源方面走在前列,已开源了许多软件、规划东西,涵盖了航天器整个研发和运用进程。众所周知,NASA 每次太空使命都离不开先进的软件程序。或许大多数人不清楚的是,今日的“软件工程”这一概念,正是发端于 NASA。由此软件架构的重要性可见一斑。Glenn Fleishman 和咱们共享了 NASA 的软件架构的演化等方方面面,可读性十分高。InfoQ 中文站将其翻译出来,仅仅为了不忘初心:咱们的征程是星斗和大海!当你在离家数百万英里的太空时,假如服务器溃散了,可没有人能听见你惊惧的呼吁!所以对 NASA 来说,冗余特别重要,已然能够发送五台服务器到平流层外,他们就必定不会只发送一台。在太空里,世界射线、磨损、突发毛病各种不确认要素都会对设备构成影响,软件架构有必要十分强健。软件架构范畴的创始人、NASA 喷气推动试验室的出色拜访科学家 David Garlan 说,航天器体系特别需求一个毛病维护层,使它们在没有地球方面的直接干涉下能够切换到紧急状况。相对地上的软件,航天软件的规划更难。在地上,假如一台数据中心的服务器功用过于缓慢,能够不断添加服务器来处理问题,但航天器的核算才干缺少问题却不能靠添加机器的方法处理。航天器的算力在整个使命期间坚持不变,体系有必要规划成能主动丢掉某些给定的使命。假如是一台地上上的数据库服务器,无法实时刺进数据也不会构成太大的影响。可是,一艘飞驰火星的世界飞船,假如其运转周期没有得到完美的操控,或许会与火星彻底坐失良机。持续运转 2700 天,靠的便是自康复战略。航天器能用的核算机台数是有严厉约束的。添加物理备份,会让航天器的软件变得更具弹性。关于 1972 年至 2011 年的 NASA 航天飞机项目来说,仅有三到四台核算机是不行的,那时共有五台飞翔操控核算机,再多添加一台是需求规划人员重复考虑的作业。此外,NASA 还拟定了一项战略,答应软件在最坏的状况下康复。这一战略在 1961 年至 1972 年的“阿波罗”(Apollo)方案半途初次施行,它是为了呈现问题时而清晰规划的。假如没有这一战略,一项又一项的使命将不得不抛弃。在 1977 年的发射期间,NASA 太空勘探器“旅行者 2 号”(Voyager 2)记录了一些颤动,这些颤动很或许导致服务器“宕机”,科学家也无法意料程序将怎么解读这些颤动,可是勘探器终究仍是正确地进入了康复形式。“时机号”(Opportunity)火星车于 2003 年发射,原方案在火星上运转 90 天,但实际上,到 2018 年中,它仍在运转,一共 5111 天。这台火星车原本规划寿命为 90 天,但却超量执役 15 年,中心从前依据收集的移动数据重写代码,来绕过一条电缆短路构成的毛病。“猎奇号”(Curiosity)于 2011 年发射,开端方案在火星上运转 687 天,但它到今日仍然运转,截止本文写作时,已超越 2700 天。“猎奇号”火星车在火星上的第一年和第五年,其两台主核算机曾呈现过毛病,差点构成使命失利。有时分,冗余也能添加时机。“旅行者 2 号”在 1986 年通过天王星,1989 年通过海王星时,要不是“旅行者 2 号”有一套备用的核算机,再加上使命操控中心能够上传新的软件来运用这些备用核算机,不然,“旅行者 2 号”能够拍摄到的天王星和海王星的相片就会少得许多。能打败墨菲规律的只要备份答应有几分钟“停服”时刻,仍是具有毛病搬运处理方案,这是需求权衡利弊的。在地球上核算的硬件现已从单一事务大型机开展到功用强壮的服务器冗余阵列,这种阵列答应其间一个或多个服务器呈现毛病,但并不会因而间断事务。出于必要,NASA 也决议让太空中多台核算机运转重复功用。就算是完美的软件、完美的硬件,仍然也有或许在太空中溃散:能够打败墨菲规律和世界射线的只要备份。在“阿波罗”方案期间,NASA 曾致力于保证每个部件和体系都通过测验,直到确认它是完美的。可是,此举既贵重又软弱。“完美“处理不了问题有两个闻名的比如说明晰依托完美的问题。女工程师 Margaret Hamilton 是麻省理工学院在 20 世纪 60 时代末开发“阿波罗”方案软件的团队担任人,她经常在深夜和周末带着踉跄学步的女儿 Lauren 到办公室加班。在 1968 年末履行的“阿波罗 8 号”使命将标志着宇航员初次绕月飞翔,在此之前,小女子 Lauren 通过“阿波罗”核算机 DSKY,即一个键盘和显示器的组合,来玩指令舱模仿器。她出其不意地触发了预发射次序,从而使飞翔模仿发作溃散。Hamilton 企图压服 NASA 答应她引进过错检查,以防止宇航员在履行使命时犯下相同的过错,虽然这种过错不太或许会发作。但 NASA 驳回了她的恳求,坚称宇航员将会完美地完成使命。不得已,Hamilton 在手册上标示了有关这一问题的或许性。然后,宇航员 Jim Lovell 在“阿波罗 8 号”的飞翔中恰巧也挑选了相同的次序,成果,从飞船的内存中擦除了回来地球所需的导航数据。在“阿波罗 13 号”在发作爆炸的时分曾对休斯顿指挥中心回报了一句十分闻名的话:“休斯顿,咱们有麻烦了”(Houston, we have a problem),万幸的是,“阿波罗 13 号”成功地处置了这一险境,与其说是跳上一艘暂时救生艇,不如说是找到备用磁带:Hamilton 和她的团队能够从地球上传输导航数据,因为该体系满足灵敏,能够在传输进程中承受这些输入。Hamilton 将体系规划为具有弹性,能够在呈现不堪重负的状况下,体系仍然能够不受搅扰地康复正常运转,并答应它陈述过错,一起供给满足的信息以做出判别。在这种状况下,核算机的负载办理软件专心于更高优先级的使命,包含雷达输入,并按预期履行。在使命操控中心通过严重而敏捷的商量之后,宇航员在月球着陆器的燃料耗尽前几秒钟取得了赞同。1994 年,Hamilton 告知《航空航天》(Air & Space)杂志:“咱们的软件挽救了这次使命,因为它是异步的,因为它会跳过低优先级的使命,假如没有它,这次使命就会失利,或许在月球上坠毁。”核算机现已变得越来越强壮,软件工程,Hamilton 为航天飞翔发明的这一术语,通过几年的开展现已趋于老练。因而,航天飞机的规划没有考虑主体系和备份体系,乃至也没有考虑几个备份体系,而是依托四台独立的核算机运转相同的导航和制导软件,并接纳相同的数据输入。这四台核算机作为民主的缩影而运作。它们中的三台核算机有必要就它们所衡量的内容达到共同,才干采纳举动。假如三台核算机赞同,而第四台核算机不赞同,那么呈现这种状况宇航员就会关机或从头启动它。这就使得防止灾祸或价值昂扬的间断所需的快速决议方案成为必要。假如多台核算机呈现毛病,或许无法达到共同,那么一台相同能够拜访航天飞机操控体系的额定核算机就能够接收。它能够进行预编程的大略(但安全)的上升、间断和再入。冗余之上再冗余1964 年,喷气推动试验室的科学家 Gary Flandro 核算出,到 20 世纪 70 时代末,木星、土星、天王星和海王星将排成直线,答应勘探器运用重力助推(gravity assists,亦称重力弹弓效应、绕行星变轨)来拜访这几颗行星,环绕行星旋转以取得加速度。这样的摆放,每 175 年发作一次。“旅行者号”被派往太空履行勘探使命。“旅行者号”使命的许多方面都有冗余性,它的两个勘探器是在不同的地址别离发射的。其间“旅行者 1 号”和“旅行者 2 号”又都装备了两个并行的核算机体系。假如三台 A 核算机(别离用于指令、数据办理和姿势操控)中的一台呈现毛病或溃散,勘探器能够主动切换或通过指令切换到 B 体系。“旅行者号”勘探器也是 NASA 第一个运用软件检测毛病的勘探器,能够剖析各种事情,并在没有指示的状况下能够做出相应的反响。正如使命发射前项目经理 John Casini 在《旅行者号的故事》(Voyager Tales)一书中的采访中指出的那样:我个人对“巨大航路”(Planetary Grand Tour)的观点是:“运载火箭的滚动速度比世界飞船在太空中的滚动速度要快得多。”可是,在这种速度下,“旅行者 2 号”仍是遇到了意外状况,走运的是它自己判别到了,并将自己从头置于安全形式。Casini 说,乃至在地上让作业人员弄清楚发作了什么事之前,“世界飞船与运载火箭别离后就自行康复了。”项目人员随后在发射前更新了“旅行者 1 号”的软件,勘探器设法正确处置了旋转和颤动。现在,“旅行者号”现已脱离了太阳磁泡的规模,但还没有脱离太阳系,而是所谓的太阳圈(heliosphere),现在,正在星际物质中漫游。可是,即便间隔如此之远,“旅行者号”仍然能够传回数据,而且仍能让持续办理这些数据的小团队感到惊奇。到了 2010 年,“旅行者 2 号”开端发回一些无意义的信息,而不是科学数据。所以,科学家们将勘探器切换到待机形式,这种形式的代码是通过几十年的改善构成的,一起他们也发现了问题所在。他们将程序康复到了之前的状况,再次运用每秒 160 比特的速率把数据发回地球。冗余也会引发问题在太空中,体系并不简单进行晋级。关于不或许进行硬件晋级的使命来说,“冗余”是个正确的挑选,但它也或许会导致其它问题。麻省理工学院航空航天系的 Nancy G.Leveson 教授在一篇题为《软件在航天器事端中的效果》(The Role of Software in Spacecraft Accidents)中写道:NASA 对一架装有两个版别的操控体系的试验飞机进行了研讨,发现在飞翔测验期间中呈现的一切软件问题,都是因为冗余办理体系中的过错构成的,而不是操控软件自身,操控软件运转正常。咱们需求为软件规划维护功用,以反映软件的“毛病”形式。另一个重要的问题是,现代航天器体系比它们的前身要杂乱得多。跟着更多的算力和更多的使命能够在使命期间处理,驱动当今飞船的代码变得反常杂乱:不可防止的是将会呈现一些过错。假如缺少规范的软件架构,会加重引发毛病。但即便是如今方案中最先进的航天器,在必定程度上也依托于较旧的软件架构概念。“猎户座”飞船的规划意图是在未来的载人航天使命中将宇航员送上月球,它将搭载四台核算机,每台核算机都有两个并行作业的处理器,其成果有必要共同。每台核算机的软件都体现得就像它在独立驾驭航天器相同。这些核算机不是民主主义者(Democracy),而是唯我论者(Solipsist),每台核算机都以为自己是“世界中仅有的核算机”。假如一台核算机未能在正确的时刻供给正确的指令,体系被规划成在体系毛病时从头启动,并承受来自下一台核算机的指令。与航天飞机相同,“猎户座”飞船也将装备一台备用飞翔核算机。间隔人类初次登月现已曩昔 50 多年了,月球是地球仅有的天然卫星,安全回来仍然需求支付巨大的尽力。点击文末了解更多检查更多相关论题相关查找阿波罗登月航天飞机太空飞船航天器有哪些航天器简笔画下列不属于航天器作者最新文章人脸查找,在 AI 的阴暗面肆无忌惮03-1109:28让团队成员每天按时下班的 4 条主张03-1109:18CNCF 发布年度陈述,84% 受访者现已在运用容器03-1109:07相关文章巴西又烧起来了!NASA监测到“火点”并非一个,烟雾太空清晰可见世界的终极命运究竟是什么?从理论到布景,天文学家带你探秘!暗能量——当今科学前沿的终极寻求用科学和理性向你提醒暗物质和暗能量是怎么被发现的?科学家是否隐瞒了本相?暗物质是否现已被发现?

发表评论

电子邮件地址不会被公开。 必填项已用*标注