Hlavní navigace

Billennium --- unixový Y2k

Zdeněk Šindelář

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. :-)

Content 2017 - tip Footshop

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.

Anketa

Co budete dělat v noci 9.9.2001 ?

Našli jste v článku chybu?
11. 9. 2001 9:39
Jerry III (neregistrovaný)
Tady je dalsi veta: "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." To uz pusobi dojmem, ze v systemech kterym se Y2K nevyhlo (je zminen jeden) to nebyla chyba aplikaci ale systemu - coz je nesmysl.
10. 9. 2001 19:40
Zdenek Sindelar (neregistrovaný)
Ale Jerry, pokud si muj clanek skutecne prectes, tak zjistis ze tam pisu: "problemy s Y2k se unixum temer vyhnuly" a o jinych systemech jsem nepsal ani slovo, pomineme-li jednu veticku v perexu - ktery je navic dilem redakce. O Y2K ale tento clanek skutecne byt nemel :)