Nowa pluskwa milenijna?

Nowa epoka UNIX

Wszystkie powyższe kłopoty wynikały z drobnego błędu w implementacji obliczeń daty, który można stosunkowo szybko naprawić. Znacznie poważniejszy problem jest jednak dopiero przed nami - dotyczy godziny 03:14 GMT, 19 stycznia 2038 roku.

Standardowo systemy typu UNIX obliczają datę jako liczbę sekund zegara liczonych od 1 stycznia 1970 roku (początek epoki systemów UNIX), bez uwzględnienia sekund przestępnych, wynikających z korekcji kalendarza do stanu zgodności z ruchem obrotowym Ziemi. Do zliczania używa się 32-bitowej liczby całkowitej ze znakiem, w której wartości ujemne nie są wykorzystywane. Przedział czasu, który można zapisać w takiej liczbie jest ograniczony i wynosi 2 ^31 minus jeden, czyli 2 147 483 647 sekund. Czas "unix time", obliczany z użyciem zmiennej 32-bitowej, wyczerpie się we wtorek, 19 stycznia 2038 roku o godzinie 03:14:07 GMT. Sekundę później zegar dzisiejszego standardowego systemu typu UNIX, wykorzystującego 32-bitową zmienną, wskazałby 13 grudnia 1901 godz. 20:45:52 GMT.

Dzięki tej metodzie obliczania czasu, w systemach typu UNIX nie występował nigdy problem roku 2000, podobnie w aplikacjach, które do obliczeń wykorzystywały czas w formacie systemowym. Między innymi z tych powodów profesjonalne aplikacje (z sektora energetycznego czy finansowego) pracujące w tym środowisku i napisane zgodnie z jego założeniami nie sprawiały problemów w 2000 r.

Chociaż do wyczerpania 32-bitowej zmiennej jest jeszcze dużo czasu i na pewno w oprogramowaniu nastąpi wiele zmian, proponuje się już nową standaryzację z przejściem na 64-bitową zmienną (time_t), która z powodzeniem wystarczy do końca ludzkości na naszej planecie.

Aplikacje, nie system

Dzisiaj największe problemy dotyczą jednak nie systemów operacyjnych, ale aplikacji. Jak widać, nadal powstają programy, które błędnie liczą lata. Przykład oprogramowania związanego z obsługą kart Gemalto udowadnia, że może się zdarzyć przypadek aplikacji, która liczy ten rok jednocyfrowo. Podobny przypadek może mieć miejsce na przełomie lat 2025/2026 (szesnastkowo 7E9/7EA), gdzie błędna aplikacja wskaże 2032 (czyli 7F0). Należy zatem wdrożyć uznane standardy, by uniknąć podobnych problemów w przyszłości i przygotować się do migracji na nowy system zapisu daty w maszynach typu UNIX.

Chociaż prawdopodobieństwo ciągłej eksploatacji dzisiejszego oprogramowania w niezmienionej formie aż do 2038 roku jest nieduże, producenci systemów i aplikacji powinni już zacząć przygotowania do wdrożenia nowego formatu daty. Modernizacja nie odbędzie się natychmiast, a należy pamiętać, że systemy core business (szczególnie w sektorze finansowym, gdzie UNIX jest uznanym od lat standardem) są projektowane w taki sposób, by działały przez lata. Prace trzeba rozpocząć już teraz.


TOP 200