Przejdź do treści
Lumeo
Zarejestruj się
Wróć do książki

Kluczowa idea 1. Komputer ma ograniczone miejsce na liczby

14 września 2004 roku centrum kontroli ruchu lotniczego w Los Angeles straciło na mniej więcej trzy godziny łączność radiową z około 800 samolotami. Do wypadków nie doszło, ale część maszyn zbliżyła się do siebie na niebezpieczną odległość, a setki lotów opóźniono albo odwołano. Parker wyjaśnia, że zawinił licznik czasu. System odliczał milisekundy w dół od liczby 4 294 967 295 i wyłączał się, gdy doszedł do zera, czyli po mniej więcej 50 dniach. Zalecany restart co najmniej co trzydzieści dni tylko obchodził ten problem, a tym razem system pracował bez przerwy dłużej.

 

Skąd akurat ta liczba? Komputer zapisuje liczby w systemie dwójkowym, samymi zerami i jedynkami, i na każdą liczbę rezerwuje z góry określoną liczbę miejsc, czyli bitów. Licznik 32-bitowy ma ich trzydzieści dwa. Gdy we wszystkich stoi jedynka, licznik pokazuje właśnie 4 294 967 295 i więcej się w nim nie zmieści. Przy kolejnym kroku wraca do zera, podobnie jak licznik kilometrów w starym samochodzie, który po samych dziewiątkach pokazuje same zera. Licznik 64-bitowy wystarczyłby na 584,9 miliona lat liczenia milisekund.

 

Podobne limity autor znajduje w wielu systemach. Wewnętrzny licznik Boeinga 787, zwiększany co 10 milisekund, kończył się na liczbie 2 147 483 647, więc samolot włączony bez przerwy przez 248 dni mógł stracić zasilanie elektryczne. 19 stycznia 2038 roku z tego samego powodu przestaną działać systemy, które mierzą czas 32-bitowym licznikiem.

 

Czasem skutek jest komiczny. W grze komputerowej Civilization Gandhi dostał najniższy niezerowy wskaźnik agresji, czyli 1. Gdy w dalszej fazie gry agresję wszystkich przywódców obniżano o 2, działanie jeden minus dwa nie dawało minus jedynki, tylko 255, czyli maksymalną agresję. Osiem bitów mieści bowiem liczby od 0 do 255, a zejście poniżej zera przekręca licznik na drugi koniec skali. Z tego samego powodu grupa w WhatsAppie może liczyć najwyżej 256 osób, a szwajcarskie przepisy zakazują pociągów o 256 osiach. Parker zauważa, że kolej zamiast poprawić oprogramowanie, wydała przepis.

 

Ten sam mechanizm potrafi zabić. Therac-25 był aparatem do radioterapii, który leczył chorych na raka wiązkami elektronów. Przed wyzwoleniem wiązki program w pętli sprawdzał ustawienia i przy każdym obiegu dodawał jeden do pewnej zmiennej, a kontrola bezpieczeństwa uruchamiała się tylko wtedy, gdy ta zmienna była różna od zera. Zmienna miała osiem bitów, więc po 255 wracała do zera i w mniej więcej 0,4 procent przypadków kontrolę pomijano. W 1987 roku, jak opisuje autor, ten błąd doprowadził do śmierci pacjenta.

 

Czytaj dalej za darmo

To dopiero początek tej idei. Zarejestruj się i odblokuj słuchanie na 7 dni za darmo.

  • Pełna analiza tej książki i 300+ innych
  • Wersje audio MP3 do każdej idei
  • Infografiki, notatki, PDF do pobrania
  • 7 dni za darmo, bez karty, bez zobowiązań