4 min

Podwójny problem roku 2038 Świat w trzy minuty

    • Education

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ę!

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ę!

4 min

Top Podcasts In Education

The Mel Robbins Podcast
Mel Robbins
The Jordan B. Peterson Podcast
Dr. Jordan B. Peterson
Mick Unplugged
Mick Hunt
School Business Insider
John Brucato
TED Talks Daily
TED
Do The Work
Do The Work