Hlavní navigace

Billennium --- unixový Y2k

6. 9. 2001
Doba čtení: 3 minuty

Sdílet

9. září 2001 (tj. v něděli) oslaví všechny unixové systémy kulaté výročí, jejich časový čítač zaznamená jednu miliardu sekund. V souvislosti s touto skutečností se objevily nejen výzvy k oslavám, ale rovněž otázky, zda unixové systémy nečekají stejné komplikace jako v Y2k operační systémy Windows.
Nejdříve si dáme trochu nezbytné technické teorie, experti na Unix nechť s klidným svědomím přeskočí. :-) Práce s časem v unixových systémech je řešena časovým čítačem (Unix timestamp), což není nic jiného než počet sekund od začátku tzv. epochy, která u většiny systémů představuje okamžik 1.1.1970 00:00:00 GMT. Tento systém přínáší značné zjednodušení při práci s časovými údaji.

Pokud například chcete přičíst 30 dní k současnému datu, stačí ho převést na timestamp, přičíst 30*86400 (počet sekund za den) a výsledek převést zpět. Pro převod oběma směry existují systémové funkce a za předpokladu, že fungují tak, jak mají – což současné systémy splňují  – není potřeba starat se o počet dní v měsíci, přestupné roky, Y2k bugy a podobně.

Z tohoto důvodu také mohli administrátoři unixů oslavovat poslední den roku 1999 s klidným svědomím – problémy s Y2k se unixům téměř vyhnuly. Pravda, místy bylo možné zahlédnout datumy typu 1.1.19100, což ale bylo způsobeno programátorským lajdáctvím při snaze zjednodušit si zprácování výsledku převodu timestampu na datum, nikoli systémem.

I méně zkušeného uživatele ale určite napadne, že onen počet sekund od začátku epochy musí být někde uložen a že žádná proměnná není nekonečná. Je to pravda a tato hranice není až tak daleko – tuto neděli to ovšem nebude.

Dosažením jedné miliardy sekund se ale timestamp změní z devíticiferného čísla na deseticiferné. Systémům samotným to ještě vadit nebude, problémy ovšem mohou nastat u špatně napsaných aplikací, pokud používají pro práci s časem nevhodně dimenzované proměnné. Takže je možné, že toto datum nebude až tak bezproblémové, jak se zdá, pokud se tak ale stane, bude to problém specifických aplikací, nikoli systémový.

První vlaštovka se již objevila v podobě varování před chybou tohoto druhu v postarší verzi aplikace KMail (řada 1.0.x), která je součástí populárního desktopu KDE verze 1.x (další informace na LinuxToday). Novější verze tímto neduhem už netrpí, uživatelů té starší je ovšem stále celá řada (byť KMail této verze nebyl zrovna nejpovedenější součástí KDE), takže pro ně neděle důvodem k oslavě asi nebude. Doporučení autorů je totiž přejít na KDE2, a tím i na novou verzi KMailu, které jsou ale výrazně náročnější na výkon počítače.

Otázka je, zda se podobných chyb neobjeví více, a pokud ano, jestli budou uživatelé alespoň varováni s předstihem, jako v tomto případě. Tady nezbývá než se spolehnout na práci programátorů – i v případě open-source je s největší pravděpodobností nad síly bězného uživatele procházet zdrojové kódy a prověřovat situaci osobně. Avšak zcela určitě není důvod vybírat peníze z bankovních účtů, nakupovat zásoby trvanlivých potravin a utíkat se do hor schovat před globální zkázou světa – zatím. :-)

MMF24

Pravý konec unixového světa v podobě, jak ho známe dnes, ovšem nastane, a to počátkem roku 2038, kdy se 32-bitová proměnná v současnosti používaná pro ukládání timestampu vyčerpá, přeteče, a pak nastane skutečný problém. Máme tedy 37 let na přemýšlení, co s tím. Nejrozšířenejší je názor, že do té doby se kompletně přejde na 64-bitovou architekturu (pokud ne na ještě vícebitovou), což problém vlastně vyřeší samo, respektive oddálí ho na velmi dostatečně dlouhou dobu.

Jsou i další diskutovaná řešení (programátorská), jak to nakonec dopadne, se musíme nechat překvapit. Osobně si myslím, že přechod na vícebitovou architekturu, není během 37 let nereálný. Do té doby tedy můžeme celkem klidně spát a případně i oslavit unixové jubileum.

Co budete dělat v noci 9.9.2001 ?

Byl pro vás článek přínosný?

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).