Problém roku 2000

Kategorie: (celkem: 853 referátů a seminárek)



Problém roku 2000

Co je problém roku 2000?
Termínem "problém roku 2000" se označují souhrnně všechny negativní důsledky toho, že mnoho elektronických zařízení, používajících při svém provozu datum, předpokládá hodnotu letopočtu maximálně 1999 a další roky opomíjí. Problém se zdaleka netýká jen počítačů a je příliš komplexní na to, aby bylo praktické nebo jen možné jej shrnout do jednoho článku, a tak se zde zaměřím jen na tu jeho část, která se týká počítačového hardwaru. Podstatou problému je nedostatek v obvodu reálného času, který způsobuje, že na konci roku se o jedničku zvýší pouze poslední dvojčíslí roku, takže po letopočtu 1999 následuje 1900. Na začátku osmdesátých let, kdy bylo nutné šetřit každým tranzistorem a konec století byl vzdálen 20 let, byla tato nedokonalost naprosto zanedbatelná. S každou další generací osobních počítačů se však tento obvod používal stále znovu a znovu, aniž by si někdo uvědomil blížící se rok 2000 a problém s tím spojený, takže většina dokonce i dnes prodávaných počítačů má stále tuto chybu, přestože je již dvě desetiletí stará.

Důsledkem toho je, že aplikační program (např. účetnictví) pracuje namísto s rokem 2000 buďto s rokem 1900, nebo s rokem 1980 (podle použité metody zjištění data). Tato chyba může mít dalekosáhlé důsledky: nesmyslné výsledky programu a nepoužitelnost dat, které nejsou v prvním okamžiku zřejmé, mohou způsobit i přímé finanční škody. Například provedete-li účetní zápis dne 5.1.2000 a program si bude myslet, že je 5.1.1900, zařadí jej před dosavadní zápisy a nezahrne jej do výpočtu DPH za první období roku 2000. Stroj zakoupený v roce 1999 bude rázem v používání -99 let, uskladněné potraviny se automaticky vyřadí jako prošlé (takový případ už se dokonce stal) atd. Jak zjistím, jestli je můj počítač připraven?
Existuje mnoho různých testovacích programů, které jsou schopny určit, zdali počítač potřebuje opravu nebo ne. Jedny z mnoha programů jsou následující:

Program BugFix je šířitelný (sharewarový), licenčně omezený program, který prověří celý počítač a opraví jen některé části. pro opravu všech nutných částí počítače je třeba zaplatit licenci.

Program Ytest2000, který existuje jednak jako samostatný volně šiřitelný program, a jednak jako součást opravného programuThats Y!, má sice jen jednoduché textové prostředí, zato však nejkompletnější soubor testů ze všech programů, které jsme vyzkoušeli.

Testuje přechod na rok 2000 a přestupnost roků 2000 až 2010, a to všechno jak v DOSových hodinách, tak i v BIOSu a paměti CMOS. Podle našich zjištění to kupodivu není zbytečný přepych.

Bypass 2000české firmy Alwitronic se vyznačuje velice komfortním prostředím a českou nápovědou. Umožňuje otestovat přechod na rok 2000 času v DOSu, BIOSu i paměti CMOS, a dále přestupné roky v DOSovém datu (nikoli však v BIOSu ani paměti CMOS). Ymark2000firmy NSTL jsem vybral proto, že tato firma je světově uznávanou autoritou v oblasti testování počítačů. Tento test však není schopen ověřovat datum v paměti CMOS, nýbrž pouze BIOS. Můj počítač není připraven! Co s tím?
Není třeba zoufat. Thats Y!problém řeší jak na úrovni BIOSu, tak i přímo v paměti CMOS. Dokonce opraví chybné datum v CMOS bez ohledu na to, zda se na něj nějaká aplikace dotázala, nebo ne - což ani nové BIOSy, "připravené na rok 2000", nedokáží.



A co nebude fungovat?
Je třeba si uvědomit, že to, co jsem výše popsal, je jen část problému. Další problém spočívá v aplikacích: účetnictví, ekonomické informační systémy, databáze, ale i mnohé programy, o kterých byste to vůbec nepředpokládali, používají datum nejen pro zobrazení, ale často i pro třídění, automatické zpracování dat, řízení cache proxy serverů atd. Pokud program předpokládá předčíslí 19 u všech roků (i když mu počítač správně oznámí rok 2000), může to mít někdy i velmi nepříjemné následky: ztrátu dat, špatně spočítané daně apod. Bohužel neexistuje univerzální řešení problému roku 2000 pro aplikace. Tento problém je třeba řešit individuálně pro každý používaný program konzultací s jeho dodavatelem. Přestupné roky
V souvislosti s rokem 2000 se často mluví také o přestupnosti tohoto roku. Všichni víme, že letopočty dělitelné čtyřmi jsou přestupné, takže proč je to problém? Výjimkou z tohoto pravidla jsou totiž roky dělitelné stem, například rok 1900. Výjimkou z této výjimky je ale další pravidlo, které říká, že roky, které jsou navíc dělitelné 400 (jako je právě rok 2000), jsou přestupné, takže 2000 je rok přestupný. Vzhledem k tomu, že celý problém s rokem 2000 vzniknul právě tím, že se s tímto rokem dlouho vůbec nepočítalo, bylo by zvláštní, kdyby se nějaký výrobce počítačového hardwaru nebo softwaru zabýval jeho přestupností. Navíc aby v přestupnosti vznikla chyba, musel by tento výrobce ošetřovat něco, co vlastně není potřeba: vzhledem k dvojnásobné výjimce platí pro rok 2000 stejné pravidlo o přestupnosti, jako pro kterýkoliv jiný od roku 1901 do 2099. Z toho je vidět, že je krajně nepravděpodobné, že by na nějakém počítači po datu 28.2.2000 následovalo 1.3.2000.

Přesto jsme však narazili zatím na jediný počítač - přesněji řečeno, notebook - který tuto chybu má, a nejen to: dokonce na něm po dni 29.2.2000 (pokud jej ručně nastavíte) nastane 30.2.2000! Proto testy tuto možnost zohledňují a umožňují tuto skutečnost prověřit. Stejně tak program Thats Y!zajistí správné fungování v přestupných letech. Technické podrobnosti
Primárním zdrojem informace o aktuálním datu a čase je paměť CMOS. O jejich aktualizování se stará obvod reálného času (RTC - Real Time Clock). Tyto dvě součásti počítače jsou napájeny baterií, což zajišťuje chod hodin i při vypnutém počítači. Po zapnutí počítače se spouští BIOS, což je základní software (nebo také "firmware"), mající za úlohu především poskytnout operačnímu systému a aplikacím služby zpřístupňující nejzákladnějější vybavení počítače na nejnižší úrovni. Jednou z jeho služeb je také zprostředkování data a času, takže jej aplikace nemusí získávat přímo z paměti CMOS, ale snadněji prostřednictvím BIOSu. BIOS je obvykle jen zprostředkovatelem, který si datum přečte z CMOS a oznámí jej dotazujícímu se programu, ale některé lepší BIOSy dokáží chybné datum opravit. Ani tyto BIOSy však obvykle neřeší celý problém: některé datum opraví jedině při startu počítače, ale nikoli za běhu, některé jej sice opraví za běhu, ale jen pro aplikace, dotazující se BIOSu. Datum v CMOS zůstává minimálně do příštího startu počítače neopraveno. Proto i pro počítače s novým BIOSem, "kompatibilním s rokem 2000", doporučuji opravný program That's Y!, který řeší i tyto problémy. Jakmile BIOS dokončí diagnostiku, kterou při startu počítače automaticky provádí, postará se o zavedení operačního systému. Tím může být například DOS, Windows 95/98/NT, OS/2, některá odrůda UNIXu atd. Operační systém tvoří další vrstvu, která aplikace odstiňuje od přímého přístupu k hardwarovým prostředkům počítače, a obvykle si udržuje svoji vlastní kopii data a času. Při startu ale samozřejmě musí zjistit čas z hardwaru - buďto prostřednictvím BIOSu, nebo přímo z paměti CMOS. Dnešní operační systémy většinou neumožňují aplikacím přistupovat přímo k hardwaru, takže pro ně zbývá jediný možný zdroj data, a tím je sám operační systém. Proto výrobci vydávají "záplaty" (patche), které opravují chybný údaj o letopočtu ještě před tím, než se dostane k aplikaci. Výjimkou je DOS, protože ten aplikacím jednak nijak nebrání v přímém přístupu k hardwaru, a jednak se již dále nevyvíjí, takže na něj žádná oprava od výrobce neexistuje. Navíc systémy Windows 95 a 98 jsou vlastně postaveny na DOSu (a umožňují spouštět DOSové aplikace), takže těch se problém týká také.

Výše jsem objasnil, že pro DOSové aplikace vlastně existují tři způsoby, jak zjistit aktuální datum a čas: z paměti CMOS, prostřednictvím BIOSu a od DOSu. Testovací program Ytest2000 přehledně zobrazuje hodnoty získané všemi třemi způsoby a umožňuje všechny tyto zdroje data zvlášť otestovat, zdali jsou proti chybě roku 2000 odolné, nebo nikoliv. Zmínil jsem se, že operační systém si obvykle udržuje svou vlastní kopii aktuálního data a času. To platí i pro DOS, a protože pro použití počítačovými programy není praktický obvyklý "lidský" zápis data a času (např. 10.5.1999 14:05), DOS si tyto údaje pamatuje v jiném tvaru: v počtu dní od 1.1.1980 a v počtu hodin, minut a sekund od půlnoci. Z toho vyplývá, že pro DOS nepředstavuje rok 2000 problém: 1.1.2000 je prostě den s pořadovým číslem okolo 7300, který není ničím zvláštní. Proto také zjistíte, že test DOSového data ukáže na každém počítači správný průběh. Problém ale nastává při startu počítače: tehdy musí DOS získat datum z hardwaru (z CMOS paměti nebo z BIOSu), takže na většině počítačů dostane rok 1900. Ten je ale před rokem 1980, což je datum, které DOS nemá možnost nijak zpracovat, takže použije 1.1.1980. Tím se vysvětluje věc na první pohled záhadná, že totiž v roce 2000 některé programy zobrazují letopočet 1980. (Pro zajímavost, UNIXové systémy a programy psané v jazyce C tradičně používají pro vyjádření data i času počet sekund od půlnoci 1.1.1970, což na 32-bitových systémech představuje problém v roce 2038.)
Program Thats Y!řeší všechny výše zmíněné problémy: rok 1900 v paměti CMOS, rok 1900 hlášený BIOSem i rok 1980, který z nich vytvoří DOS.

Nový příspěvek



Ochrana proti spamu. Kolik je 2x4?