Z problemem roku 2000 jest trochę jak z dziurą ozonową – przestał nam zagrażać, bo na czas rozpoczęliśmy prace nad zmianą swoich zwyczajów. I tylko część programów (tak, korzystam z nich) pogubiła się myśląc, że po 31 grudnia 1999 nastąpi 1 stycznia 1900. Dlaczego? Bo dla oszczędności pamięci, programiści zapamiętywali tylko dwie ostatnie cyfry roku.
Na szczęście programiści systemów uniksowych byli mądrzejsi – czas zapisują standardowo nie jako dzień/miesiąc/rok, lecz jakę liczba sekund, które upłynęły od 1 stycznia 1970 roku. Data wygląda znajomo? Tak, czasem gdy coś się wysypie, to niektóre systemy informatyczne uznają, że dziś jest właśnie początek lat 70.
I wszystko byłoby fajnie, tylko tak zdefiniowany czas był zapisywany w zmiennej – czyli miejscu w pamięci – które ma 32 bity długości. Jeden z tych bitów tracimy na odróżnienie liczb dodatnich od ujemnych. Potrzebowaliśmy tego, by zapisywać daty wcześniejsze od 1970 roku.
Największą liczbą, które można w takim miejscu zapisać, jest 2,147,483,647 (2 miliardy 147 milionów 483 tysiące 647). Gdy dodamy do niej jeden, w pamięci komputera znajdzie się liczba oznaczająca późny wieczór 13 grudnia 1901 roku. I na tego typu sytuację natkniemy się w roku 2038.
Problemowi można zaradzić zapamiętując daty w komórce pamięci, która ma 64 bity – tak właśnie robimy projektując nowe systemy i urządzenia. Dwukrotne zwiększenie pamięci wykorzystywanej do zapamiętania czasu przesunie problem na dzień oddalony od nas o jakieś 292 miliardy lat – z obliczeń wynika, że wtedy wszechświat jaki znamy, już nie będzie istnieć.
Kłopot polega na tym, że dziś wciąż mamy mnóstwo działających systemów, w których błąd nie został – i nie zostanie zostanie naprawiony.
32-bitowy zapis daty jest wykorzystywany przez wiele nośników danych, które dziś wykorzystujemy – na przykład do zapisania daty ostatniej modyfikacji pliku. Starsze bazy danych wykorzystują 32-bitowy zapis czasu. Albo niektóre urządzenia z wbudowanymi małymi komputerami – na przykład jakieś sterowniki, routery, kamery WiFi, systemy alarmowe czy niektóre elementy naszych samochodów. Trochę tego nas otacza.
Co się stanie w dniu przekręcenia licznika czasu? Niektóre urządzenia się zawieszą i trzeba będzie je zresetować. Niektóre problem zignorują – bo nie wykorzystują aktualnej daty do niczego. Będzie trochę rzeczy, które przestaną prawidłowo działać – i będziemy się musieli przyzwyczaić do dziwnych wyników ich pracy lub je wymienić na nowsze.
2 miliardy sekund z groszami od 1 stycznia 1970 roku miną w 19 stycznia 2038 roku. Czy 14 lat, które pozostały, to długo? Niekoniecznie – dla przykładu, niecałe 14 lat temu w sieci pojawił się Instagram. Część urządzeń, których dziś używamy, będzie wtedy jeszcze całkiem sprawna.
Co ciekawe, w tym samy roku po raz trzeci będziemy mieli problem z GPSami. Co 1024 tygodnie resetuje się licznik czasu, który jest wykorzystywany przez globalną nawigację. Ostatnia taka sytuacja miała miejsce w 2019 roku, i wtedy posiadacze niezaktualizowanych odbiorników GPS skończyli z nieprawidłowo działającymi urządzeniami. Kolejne przepełnienie licznika daty w GPSach nastąpi w listopadzie 2038 roku – przez czysty przypadek będzie to ten sam rok, w którym wystąpi problem ze starszymi systemami komputerowymi.
Niniejszy odcinek powstał dzięki inspiracji ze strony słuchaczki Julii. Dziękuję!