Budoucnost | Operační systémy | Počítače

Chyba roku 2038 způsobí problémy, počítače dnes totiž stárnou příliš pomalu

  • Loni ajťáky vystrašilo přetečení GPS čítače týdnů
  • Nemělo se stát vůbec nic, ale svět opět nebyl připravený
  • Za 18 let nás ale čeká ještě něco mnohem většího

Loni zkraje dubna došlo k přetečení počítadla týdnů ve starých GPS přijímačích. Byť to měla být jen exotická formalita, která připomněla, jak se vlastně skrze GPS přenáší údaj o přesném datu a času z atomových hodin, několik ajťáků se tehdy pořádně zapotilo a přišlo o prémie. Podobná událost ale nastane i v běžných počítačích a serverech. Sice až za 18 let v roce 2038, ale důsledky by mohly být mnohem vážnější. 

Ale zpět k loňskému případu GPS, ze kterého byli někteří značně zaskočeni. Třeba správci městské rádiové sítě v New Yorku, technici z KLM anebo australští meteorologové, kterým přestaly fungovat balóny. To vše přesto, že se o problému vědělo už od spuštění samotné satelitní služby a americké úřady zavčas doporučovaly výměnu prehistorických GPS přijímačů nebo alespoň aktualizaci firmwaru.

Deset bitů je málo

V čem byl přesně problém? Přijímač GPS k rekonstrukci aktuálního času a data používá několik údajů, přičemž jedním z nich je i číslo týdne od počátku věků. Má to jeden háček, toto číslo má pouze deset bitů, což v desítkové soustavě odpovídá rozsahu 0-1 023.

  • ...
  • 1020. týden
  • 1021. týden
  • 1022. týden
  • 1023. týden
  • 0. týden (6/7. dubna 2019)

Časovač v systému GPS funguje od 6. ledna 1980 a bystří už asi tuší, že od té doby uběhlo více než 1 024 týdnů, čili onen desetibitový čítač se už musel v minulosti naplnit a začít počítat zase od nuly. Poprvé k tomu došlo na sklonku srpna 1999, no a podruhé právě na přelomu 6. a 7. dubna loňského roku.

Nový protokol GPS vydrží déle

Samozřejmě se nabízí otázka, proč má paměť pro tak důležité číslo jen 10 bitů, ale odpověď je nasnadě – úspora místa, která byla jednak daná výkonem počítačů na přelomu 70. a 80. let a zároveň potřebou co nejjednoduššího rádiového signálu.

876f0f9c-42de-44a1-9535-a1b7f21bd626
GPS almanach, tedy série dat s technickými údaji o konstelaci družic a stavu systému. GPS přijímače tato data dnes dokážou stahovat z internetu a zrychlit tak první výpočet polohy. 

Nová verze protokolu amerického satelitního systému paměť pro čítač týdnů rozšíří na 13 bitů (přetečení jednou za 157 let), takže z praktického problému se stane spíše teoretický.  Za dalších 157 let totiž po systému Navstar dost možná neštěkne ani pes.

Počítače stárnou pomaleji, což je problém

Jenže pozor, přenesení zodpovědnosti na jakousi zamlženou budoucnost, kdy přece budeme používat úplně jiné technologie, se nám může vymstít, protože naše křemíková technologie v posledních desetiletích přestává v některých aspektech zastarávat.

774d07f4-5a51-4568-a0ce-14d5ee6be6ec
Březen 2019, české akademické pracoviště a na monitoru Windows XP

To znamená, že je pro svoji dedikovanou funkci už natolik odladěná, že prostě funguje. A dokud funguje, málokterý finanční ředitel jen tak odklepne jakousi formální modernizaci. I proto dnes v mnoha provozech včetně těch vědeckých pracují staré mašiny s Windows XP, prehistorickými unixovými systémy a dalšími muzejními exponáty.

Ty počítače totiž fungují, slouží k nějaké specifické funkci, a když je nahradíme současným linuxovým serverem nebo strojem s Windows 10, budou svůj dedikovaný úkol dělat úplně stejně dobře (nebo také úplně špatně).

Chyba roku 2038

Kvůli tomuto přístupu je dnes už prakticky jisté, že některé z těchto muzejních mašin, operačních systémů a specializovaných programů budou sloužit i za dalších 18 let. Osmnáct let je totiž na dnešní poměry šíleně krátká doba.

3328ec30-0908-4450-8f83-c98a4cae10e6
Tzv. Unix timestamp, tedy počet sekund od 1.1. 1970 je základní čas mnoha systémů, serverů a programů, které na základě něj provádějí všechny operace s reálným časem.

A právě tehdy, 19. ledna 2038 krátce po čtvrté ranní středoevropského času, dojde k přetečení jednoho dalšího čítače. Dvaatřicetibitového počítadla sekund se znaménkem, jehož nula náleží půlnoci 1. ledna 1970.

Podobný čítač je základem každého operačního systému a mnoha klíčových programů a serverů, které se ptají, kolik je hodin. Konkrétní datum a čas se jednoduše vypočítá z uplynulých sekund od základního bodu – tzv. epochy.

Přetečení 32bitového čítače sekund unixového času (upravená animace z Wikipedie):

Princip je opět stejný jako u přetečení počítače týdnů v GPS, ale tentokrát se jedná o 32bitové číslo se znaménkem, po dosažení nejvyšší hodnoty se tedy počítač nevrátí k nule (do roku 1970), ale do nejnižší záporné hodnoty, které v tomto případě odpovídá 13. prosinec roku 1901.

Poté začne vše od začátku, náhlá změna základního času ale způsobí naprosto chybné výpočty a problém se začne nabalovat jako sněhová koule, načež vše může skončit ledajak počínaje jen chybným zobrazením data na displeji hodinek a konče zhroucením celého počítače.  

Neděle, 4. prosince 292277026596

Kdybychom žili v ideálním vesmíru, kde s koncem podpory počítačový systém sešrotujeme a vyměníme za jiný, jednalo by se o ryze akademický problém, jak už jsme si ale ukázali na přetečení GPS nebo v roce 2000 na slavné chybě Y2K, nakonec se vždy někdo spálí a něco selže – byť to zatím nikdy nebyla americká sila s mezikontinentálními balistickými raketami ICBM nebo streamovací servery pořadu Týden Živě. Civilizace se tedy naštěstí zatím nikdy nezhroutila.

4d8ddca1-0f3f-4c01-8050-9b83f8de0faf
Pohled na futuristické centrum Brna 4. prosince 292277026596 podle představ autora

V případě chyby roku 2038 by se mělo v ideálním světě jednat opět o ryze akademický problém, neboť současných počítačů a softwaru se už tento problém vůbec netýká. Postupně došlo k úpravám programovacích jazyků a jejich knihoven a přechod na 64bitovou architekturu zároveň oddálil přetečení až na nedělní odpoledne, 4. prosince roku 292277026596.

Nutno podotknout, že se nejspíše už nebude jednat o odpoledne, natož dopoledne, tou dobou by totiž podle současných představ o vesmíru neměla na obloze zářit jediná hvězda – nedej Bože, aby okolo ní rotovala jakási obyvatelná planeta, na které by si mohl kdosi pomyslet: „Ach, tak je to konečně tady!“

Chyba roku 10000 trápí i Excel

Podobných paměťových veletočů s čísly zná svět počítačů ještě mnohem více. I v současných programech se například poměrně často setkáte s chybou roku 10000 – včetně nejnovějšího Excelu.

Stručně řečeno, zkuste v Excelu vytvořit buňku s formátem časového údaje a hodnotou 21. ledna 10000. Nepovede se vám to, protože nejvyšším možným dnem, se kterým současný Excel počítá, je pátek, 31. prosince 9999.

8adaab5c-3c57-49da-99c2-e1269436533c
Excel nedokáže zobrazit datum 1. ledna 10000, jeho čas končí na Silvestra 9999

V tomto případě Excel ve formátu datum reprezentuje jednotlivé dny celým číslem bez znaménka. Den s pořadovým číslem 0 odpovídá sobotě 0. ledna 1900, která sice nikdy nenastala, ale tyto detaily raději neřešme.

Dnes máme 21. ledna 2020, což je 43 851. den. Miliontý den nastane v neděli, 26. listopadu 4637, dvoumiliontý den v pondělí 23. října 7375 a nejvyšší hodnota počítadla dnů je 2 958 465 – pátek 31. prosince 9999.

Zvyšte číslo o jedničku a pro Excel to přestane být datum.

Není to akademická banalita

Byť by se mohlo zdát, že je to opět ryze akademická banalita, kterou dneska ve skutečnosti nikdo neřeší, opak je pravdou a podobné lapálie s Excelem řeší datoví nešťastníci napříč fóry podpory.

915ad50a-6f7a-44c1-bb93-91653c6e2770
Svět všemožných zastaralých mašinek bude jistě leckde strašit i v roce 2038

Z hlediska nejrůznějších předpovědních řad v rámci modelování klimatu a dalších jevů v delším – geologickém – časovém úseku se totiž nejedná o nic neobvyklého. Excel na to ale kupodivu sám o osobě nestačí a je třeba opustit formát data, anebo si pro něj napsat excelový skript, který problém vyřeší jinak. To samé pochopitelně platí i pro roky z devatenáctého století a starší.

Zrádná počítadla

Jak vidno, počítačové čítače s příliš krátkým rozsahem v sobě skrývají hromadu rizik a předpokládají, že mašina, na které běží, funguje právě teď, avšak za dalších dvacet let už nemusí. Díky pomalejšímu morálnímu stárnutí moderních počítačů to však přestává platit.

A tak je dnes už skoro jisté, že i 19. ledna 2038 někdo zapláče. Snad to nebude pilot vašeho transatlantického letu s jakýmsi prehistorickým kusem elektroniky na palubě.

Diskuze (69) Další článek: Cooler Master změnil aplikátor teplovodivé pasty, protože si rodiče geeků mysleli, že jejich děti berou drogy

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,