REKLAMA
  1. Spider's Web
  2. Nauka
  3. Kosmos

Astronauci misji Apollo mogli zostać pierwszymi ofiarami błędu w oprogramowaniu. Mija 50 lat od lotu na Księżyc

20 lipca 1969 roku, w momencie gdy moduł lądownika księżycowego misji Apollo 11 rozpoczynał podejście do lądowania, komputer pokładowy wskazał błędy numer 1201 oraz 1202, następnie sam się zrestartował.

18.07.2019
10:12
Astronauci misji Apollo mogli być pierwszymi ofiarami błędu w oprogramowaniu
REKLAMA
REKLAMA

Dziś, nawet na naszych domowych komputerach oglądanie niejasnych i tajemniczych kodów błędów jest stresujące. Jednak dla astronautów przebywających w małej puszce w zimnej przestrzeni kosmicznej kod błędu oznaczał zagrożenie życia. Nic dziwnego, że dopytywali bazę w Houston o wyjaśnienia.

Tajemniczy błąd 1201

Gdyby Neilowi Armstrongowi i jego kolegom wtedy coś się stało, staliby się pierwszymi ofiarami błędu w oprogramowaniu, byliby pierwszymi zabitymi przez „buga“ w software. Na szczęście skończyło się dobrze - Neil Armstrong przejął stery i wylądował samodzielnie - bez komputerowego wspomagania.

 class="wp-image-973102"
Moduł wyświetlacza i klawiatury AGC

Po udanym lądowaniu autorzy oprogramowania zaczęli poszukiwać źródła błędów 1201 oraz 1202. Okazało się, że pokładowy radar uaktywniał się w nieodpowiednim momencie i zasypywał komputer danymi. Jedna z procedur w systemie zakładała rekonstrukcję stanu pamięci (co można nazwać „restartem“), w warunkach jej przeładowania danymi. To właśnie nastąpiło tuż przed lądowaniem.

Uaktywnienie się radaru w końcu również udało się wytłumaczyć - jeden z astronautów przesunął jego włącznik w nieodpowiedniej chwili i uruchomił go, gdy nie powinien być używany.

74 kilobajty powinny każdemu wystarczyć

Komputery pokładowe programu Apollo nosiły oficjalną nazwę Apollo Guidance Computer. W trakcie misji lotu na Księżyc wykorzystano dwa urządzenia: jeden na pokładzie modułu dowodzenia, a drugi na pokładzie modułu księżycowego. W swoich czasach były najnowszą zdobyczą techniki informatycznej dzięki bardzo mocnej miniaturyzacji. Podczas gdy typowy komputer zajmował całe pomieszczenie, komputer AGC ważyły zaledwie 32 kg i miały rozmiary 61 na 32 na 17 centymetrów. Pobierana przez nie moc wynosiła 55 W - w warunkach lotu kosmicznego trzeba było liczyć się z każdym wydatkiem energetycznym.

 class="wp-image-973105"
Moduł pamięci ferrytowej AGC

Komputery te nie posiadały żadnego znanego nam dziś nośnika pamięci masowej. Wykorzystywały jednak rdzeń ferrytowy, utkany ręcznie z pierścieni ferrytowych nanizanych na nitki. Pojemność pamięci wynosiła 74 kilobajty, które służyły do przechowywania programu nawigacyjnego i innych podprogramów potrzebnych w trakcie lotu i lądowania.

Apollo Guidance Computer były pierwszymi przenośnymi (!), wielozadaniowymi, programowalnymi, interaktywnymi komputerami. Były też pierwszymi komputerami o tych cechach które były ogólnego zastosowania - nie były przeznaczone do konkretnego rodzaju obliczeń bądź rodzaju przetwarzanych danych.

Czy można ufać zerom i jedynkom

W trakcie misji Apollo po raz pierwszy ludzkość zawierzyła oprogramowaniu, a nie sprzętowi. Po raz pierwszy nie tylko zaczęto budować nowe funkcje za pomocą oprogramowania, ale i postanowiono powierzyć mu życie i zdrowie astronautów. Na pewno musieli mieć wątpliwości wobec takiego podejścia - epoka wszechobecnego software jeszcze nie nadeszła.

David C. Brock, dyrektor działu oprogramowania w Computer History Museum komentuje to w ten sposób:

Umieszczono komputer w centrum bardzo ambitnego projektu. Było to prawdziwy test dla technologii i związanych z nią ludzkich przekonań i aspiracji.

Kod, który był uruchamiany na obu komputerach (były one praktycznie identyczne ale miały inne oprogramowanie), można dziś oglądać i analizować na popularnym GitHubie. Znajdują się tam oba moduły - zarówno ten z jednostki głównej, jak i z lądownika. Całość zajmuje około 145 tysięcy linijek kodu. Porównajmy to na przykład to Facebooka, którego kod źródłowy dziś ma około 62 milionów linijek kodu, do tego w języku wyższego poziomu niż assembler używany w Apollo Guidance Computer.

 class="wp-image-973108"
Margaret Hamilton przy wydrukowanym kodzie źródłowym AGC
REKLAMA

Przeglądając jego kod, można natrafić zarówno na interesujące nazwy jak i komentarze. Na przykład procedura uruchamiania zapłonu silników nosi nazwę BURN_BABY_BURN. Z kolei sprawdzenie, czy pozycja anteny, ustawianej ręcznie przez astronautę nosi komentarz: SEE IF HE’S NOT LYING (ang. sprawdź czy nie kłamie).

Od misji, podczas której astronauci otrzymali błędy 1201 i 1202, mija właśnie 50 lat. To nie tylko pół wieku rozwoju badań kosmosu, ale i pół wieku rozwoju inżynierii oprogramowania.

REKLAMA
Najnowsze
Zobacz komentarze
REKLAMA
REKLAMA
REKLAMA