Skip to content
research

Ошибка Apollo, которую, как считали в NASA, астронавты не совершат

Сбой в симуляторе выявил опасное заблуждение о том, кто и когда совершает ошибки. Исправление было отвергнуто до тех пор, пока реальная миссия не показала, почему программное обеспечение должно быть готово к неожиданностям.

Aki Tanaka
Ошибка Apollo, которую, как считали в NASA, астронавты не совершат

Четырехлетний ребенок обнаруживает режим отказа

Четырехлетняя Лорен Гамильтон, дочь ведущего инженера по летному программному обеспечению Apollo Маргарет Гамильтон, случайно обнаружила критический недостаток в симуляторе командного модуля в MIT. Играя, она выбрала P01, процедуру предстартового выравнивания, хотя симулируемый космический корабль находился «в полете».

Это казавшееся безобидным действие — допустимая команда в неверном рабочем состоянии — мгновенно нарушило навигационные данные симулятора, вызвав системный сбой. Ввод Лорен выявил опасный граничный случай: в программном обеспечении отсутствовали средства защиты от выполнения предстартовых процедур во время полета.

Маргарет Гамильтон сразу осознала серьезность этого открытия. Она предложила исправление программного обеспечения, чтобы запретить выполнение P01 во время полета, внедрив важную форму defensive programming. Однако руководство NASA, уверенное в своих высококвалифицированных астронавтах, отклонило программное решение, выбрав вместо этого простое предупреждение в руководстве по полетам. Они полагали, что астронавты никогда не совершат такой ошибки.

Apollo 8 превратил предупреждение в доказательство

Первоначальное пренебрежение NASA к открытию Лорен Гамильтон столкнулось с суровым испытанием во время миссии Apollo 8 в декабре 1968 года. Пилот командного модуля Jim Lovell непреднамеренно выбрал предстартовую процедуру P01 во время работы с системой наведения космического корабля, в точности повторив скрытую опасность симулятора.

Этот случайный ввод стер критически важные навигационные данные, сбросив пространственную ориентацию космического корабля так, будто он все еще находился на стартовой площадке. Центр управления полетами в Хьюстоне, тесно сотрудничая с командой Гамильтон в MIT, в срочном порядке рассчитал и загрузил новые векторные данные для восстановления критически важной телеметрии, обеспечив продолжение траектории Apollo 8.

Этот инцидент подчеркнул важный инженерный урок: полагаться исключительно на подготовку экипажа и предупреждения в руководстве по полетам оказалось недостаточно для предотвращения ошибок режима. Предыдущий запрос Гамильтон на защиту на уровне программного обеспечения, первоначально отклоненный, теперь получил неоспоримую поддержку. Впоследствии инженеры включили эти жизненно важные средства защиты в программное обеспечение Apollo для всех будущих миссий. Этот сдвиг стал ранним, критическим шагом к defensive programming, признающим, что надежные системы должны учитывать человеческую подверженность ошибкам, даже среди высококвалифицированных астронавтов.

Сигнал тревоги 1202 — и код, который продолжал работать

Спуск на Луну Apollo 11 представил другую, но не менее критическую проблему программного обеспечения. За три минуты до посадки Eagle сработали программные сигналы тревоги 1202 и 1201 в Apollo Guidance Computer (AGC). Они указывали на переполнение исполнительного устройства, что означало, что компьютер был перегружен задачами.

Перегрузка возникла из-за неправильно установленного переключателя радара сближения, который постоянно подавал на AGC ненужные счетные импульсы. Этот аппаратный сбой потреблял 13-15% вычислительной мощности компьютера, угрожая сорвать посадку на Луну.

Однако конструкция AGC включала priority scheduling, надежную функцию, разработанную командой Маргарет Гамильтон. Эта система динамически отбрасывала или откладывала менее важные фоновые задачи, гарантируя, что основные функции наведения и управления — такие как управление тягой и навигация — продолжали работать без перебоев. Компьютер отдавал приоритет критически важной для миссии работе, позволяя посадке состояться.

Хотя эти инциденты отличаются от ошибки P01, оба они подчеркнули необходимость предвидения непредвиденных входных данных и конкурирующих запросов в бортовом программном обеспечении. Эпизод с P01 высветил человеческий фактор, продемонстрировав, как даже высококвалифицированные астронавты могут совершать ошибки. Сигнал тревоги 1202, напротив, продемонстрировал устойчивость системы к аппаратным аномалиям. Оба сценария подтвердили принципы защитного программирования и сложные исполнительные архитектуры, что оказалось решающим для успеха миссии. Чтобы узнать больше о пионерах космического программного обеспечения, посетите Margaret Hamilton - NASA Science.

Нравится статья? Получайте такие каждое утро на почту.

одно письмо в день · отписка в два клика · без сторонних трекеров

Урок Apollo, который до сих пор нужен современным системам

Открытие Hamilton напрямую повлияло на defensive programming — смену парадигмы от предположения об идеальном поведении пользователя к предвидению и смягчению последствий человеческих ошибок. Предложенное ею решение — проверка команд на соответствие состоянию системы и ограничение опасных операций — стало основным принципом, предотвращающим критические сбои системы за счет проектирования с учетом реальности, а не совершенства.

Инновационная стратегия приоритетов Apollo также предлагает план для современных концепций надежности, таких как load shedding и грациозная деградация. Когда Apollo Guidance Computer столкнулся с перегрузкой во время посадки Apollo 11 на Луну, его асинхронная исполнительная архитектура, разработанная совместно с инженером MIT Hal Laning, сохранила основные функции за счет отбрасывания задач с низким приоритетом. Это обеспечило бесперебойное выполнение критически важных для миссии операций.

Этот инцидент, хотя и является ключевым, представляет собой лишь одну грань более широкого наследия Hamilton. Будучи руководителем разработки бортового программного обеспечения Apollo, она выступала за строгое отношение к программному обеспечению как к инженерной дисциплине. Ее работа заложила фундаментальные принципы, доказав, что надежные системы должны учитывать непредсказуемый человеческий фактор — урок, который остается актуальным для сложных систем и сегодня.

Часто задаваемые вопросы

Что представляла собой ошибка программного обеспечения Apollo P01?

Запуск процедуры предстартовой подготовки P01 во время полета мог привести к перезаписи навигационных данных и нарушению состояния Apollo Guidance Computer.

Как дочь Margaret Hamilton обнаружила эту проблему?

Во время использования симулятора командного модуля четырехлетняя Lauren выбрала P01 во время имитации полета, что привело к сбою симуляции.

Что стало причиной сигнала тревоги 1202 на Apollo 11?

Бортовой компьютер был перегружен избыточной работой, связанной с радаром сближения, что вызвало срабатывание сигналов тревоги во время посадки на Луну.

Как программное обеспечение Apollo 11 отреагировало на сигнал тревоги 1202?

Планирование приоритетов позволило компьютеру отбросить задачи с низким приоритетом и продолжить выполнение важных расчетов посадки и функций управления.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

Для билдеров

Эта страница работает на чужой инструмент.

Её читают AI-агенты. На неё приходят покупатели. Она отвечает на восьми языках и через MCP. У вашего инструмента может быть такая же — в эфире за 24 часа.