Як третя висадка людства на Місяць опинилася під загрозою і її врятував програмний хак бортового комп’ютера Apollo 14

43934 Як третя висадка людства на Місяць опинилася під загрозою і її врятував програмний хак бортового комп’ютера Apollo 14

Уже майже здійснивши третю в історії людства посадку на поверхню Місяця, місія Apollo 14 опинилася під загрозою зриву. Бортовий комп’ютер космічного корабля передав в центр управління польотом на Землі, що була натиснута кнопка переривання посадки. Однак екіпаж повідомив, що кнопки не торкалися. Інженерам на Землі вдалося врятувати місію Apollo 14, виконавши один із найбільш геніальних хаків в комп’ютерній історії.Як третя висадка людства на Місяць опинилася під загрозою і її врятував програмний хак бортового комп’ютера Apollo 14

Початок проблем Apollo 14

По суті місія Apollo 14 мала виконати задачі, які були покладені на Apollo 13. Екіпаж – капітан Алан Шепард, пілот місячного модуля Ед Мітчел, пілот командного модуля Стю Рооса, – мали прилунитися на схилах Фра Мауро. Це територія поруч з екватором Місяця і трохи на південь від гігантського кратера Коперніка. Вважається, що схили Фра Мауро є викинутою породою під час створення Моря дощів. А це значить, що поверхня схилів може містити породу із глибин Місяця і пролити світло на походження супутника нашої планети.Як третя висадка людства на Місяць опинилася під загрозою і її врятував програмний хак бортового комп’ютера Apollo 14

Через вісім місяців після Apollo 13 інженери додали до Apollo 14 більше кисню та батарей, щоб люди мали більше шансів повернутися на Землю. Також внесли програмні зміни, наприклад, бортовий комп’ютер навчився розпізнавати зміну висоти поверхні Місяця при наближенні до зони посадки.

О другій половині дня 31 січня 1971 року після 40-хвилинної затримки Apollo 14 стартував на ракеті-носії Saturn V. Особливість місій Apollo – місячний модуль необхідно вивести із захисного відсіку ракети-носія та стикувати його до командного модуля. При виконанні цього маневру два космічні кораблі не змогли стикуватися і затребували кількох спроб.

Наступні чотири дні шляху пройшли без проблем. Через 82 години Apollo 14 опинився на орбіті Місяця і ще за кілька годин для економії пального місячного модуля опустив свою орбіту до 14,5 км в перигеї (найнижча точка орбіти).

Дивіться також:  Як очистити порт USB від бруду

За чотири години до відправки місячного модуля комп’ютери повідомили на Землю, що натиснута кнопка переривання місії. Шепард доповів, що екіпаж не чіпав клавішу. Це означало одне – глюк в місячному модулі і кінець місії. Натиснення цієї кнопки миттєво запускає двигуни модуля для його старту з Місяця.

The source of all the trouble: the Abort pushbutton (along with its companion the Abort Stage pushbutton). This particular image is of the LM simulator currently residing at the <a href="https://www.cradleofaviation.org/">Cradle of Aviation Museum</a> in Long Island.

Геніальне рішення для порятунку

Бортовий навігаційний комп’ютер Apollo Guidance Computer просунутий навіть за сучасними мірками. Попри його надзвичайну повільність – 80 тисяч інструкцій за секунду – він підтримував технології, які вважаються звичними у сьогоднішніх комп’ютерах. Серед них – підтримка байт-коду, майже як це реалізовано у Java та оновлення програми дистанційно «по повітрю». При цьому обсяг оперативної пам’яті складав всього 2000 слів (це як 2 000 байтів для сучасного комп’ютера).

Apollo Guidance Computer виконував два типи задач – Jobs та Waitlist Tasks. Перші працювали незалежно по графіку, мали виділену пам’ять та підвищений пріоритет. Більшість програм класу Jobs писали так, щоб вони швидко виконувалися і зазвичай робили лише одну функцію.

Надійна робота Apollo Guidance Computer гарантувалася тим, що він завжди тримав вільні ресурси для виконання задач. Якщо їх не виявиться – він видає код помилки 1202, що сталося під час місії Apollo 11.

Особливість Jobs була у тому, що їх можна було запускати з тієї ж точки, де вони припинили працювати. Дані зберігалися в пам’яті. Це врятувало Apollo 11, чий комп’ютер довелося кілька разів перезавантажувати.

Програми класу Waitlist Tasks були ще простішими та коротшими, ніж Jobs. Завдяки цьому вони не потребували виділеної пам’яті та керування процесами. Вони виконували критичні задачі, наприклад, зчитування дані акселерометра, вимкнення двигунів, перевірка кнопки переривання місії тощо. Ці задачі виконувалися через жорстко задані проміжки часу.

Дивіться також:  Найпопулярніші відео YouTube з дня його заснування до 15-річчя платформи

Apollo Guidance Computer міг обробляти до восьми задач Jobs, п’ять із яких виконувалися незалежно. При цьому більш критичні задачі мали менший пріоритет. Наприклад, програма посадки на поверхню Місяця Program 63 мала один із найменших пріоритетів. Це довга і складна програма, тому її переривання більш пріоритетними програмами дозволяло виконувати нагальні задачі.

Геніальний хак

У NASA порекомендували екіпажу вручну виставити правильне значення комірки пам’яті, що містила флаг переривання місії LETABBIT. Для цього можна було в потрібний момент перепрограмувати її. Або можна було ретельно постукати по бортовому комп’ютеру, що і зробили космонавти. Дія допомогла, але після одного оберту навколо Місяця проблема проявилася знову.

Стало зрозуміло, що проблема десь у кнопці переривання місії – шматок олова міг випадково замикати контакт. Однак розібрати кнопку в космосі виявилося неможливим.

Програміст Дон Айлс розробив процедуру для скидання флагу LETABBIT. Потрібна була модифікація Program 63. Вона викликала низку Jobs та Waitlist Tasks. Однією з Jobs була програма SERVICER, яка зчитувала положення та прискорення корабля і планувала Routine R11 спрацьовувати кожні 0,25 секунд. R11, у свою чергу, спершу перевіряла флаг LETABBIT – флаг переривання місії.

І ось геніальний хак: змусити R11 вважати, що переривання місії вже в процесі. Тоді програма не реагує на статус кнопки переривання місії.

Проблема була в тому, що нормальна робота двигунів Apollo при зниженні – на тязі 10% протягом 26 секунд. Це дає час для вирівнювання корабля, після чого двигуни запускалися на 100%. При перериванні місії останню дію необхідно було виконати вручну.

Було ще кілька супутніх проблем від такого хаку, однак Айлс розробив способи їхнього пом’якшення.

Дивіться також:  У Facebook тепер для перекладу використовують нейронні мережі

Менше, ніж через дві хвилини після початку процедури посадки, команда змогла знову віддати керування посадкою комп’ютеру Apollo Guidance Computer.

Наче було мало проблем

Екіпажу залишалося ще вісім хвилин, щоб прибути на Місяць. Однак через чотири хвилини, перебуваючи на висоті 11 км від поверхні, Шепард та Мітчелл помітили, що є проблеми з радаром. Без нього не можна було визначити точну висоту та швидкість зниження.

Радар не показував висоту – з невідомих причин радар переключився з дальнього на ближній режим. На висоті 9700 метрів Мітчел повідомив Землю про проблему. В центрі керування порадили перезавантажити радар.

На висоті близько 3700 кілометрів вдалося залучити альтернативну систему, яка дозволила здійснити посадку.

Після місії

Програмісти зрозуміли, що потрібний додатковий захист від випадкових збоїв. У код Apollo Guidance Computer додали ще одну змінну, яка дозволяла екіпажу обходити кнопки переривання місії.

Також полагодили радар – йому заборонили перемикатися між режимами, якщо він не міг коректно спозиціонувати себе в поточному режимі.

За матеріалами: Arstechnica

Автор:
Дата:
Из той же категории: (Новини)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

шестнадцать − 3 =

Сейчас читают:
top