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
Zaujímavosti o referátoch
Ďaľšie referáty z kategórie