Ugrás a tartalomhoz

2038-probléma

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
A problémát bemutató animáció. A felső dátum (angolul Date) a kiszámolt érték, az alsó a valóságos

A számítástechnikában a 2038-as év problémája néhány szoftver meghibásodását okozhatja 2038-ban vagy akörül. A probléma a POSIX időábrázolást használó programokat érinti elsősorban, amely az időt az 1970. január 1. óta eltelt másodpercek számával ábrázolja. Ez az ábrázolási mód számít szabványnak a Unix típusú operációs rendszereknél, de érinti az egyéb operációs rendszerekre fejlesztett programok nagy részét, mivel a széles körben használt C programozási nyelv is ezt az ábrázolási módot használja. A legtöbb 32 bites rendszerben, a time_t adattípus, melyet a másodpercszámláló tárolására alkalmaznak, egy előjeles, 32 bites integer (egész szám) formátumú adat. A legkésőbbi időpont, amely még ábrázolható ebben a rendszerben a POSIX szabvány szerint 2038. január 19., kedd, 03:14:07 (UTC szerinti idő). Ezt követően az időpontok „körbefordulnak”, és belsőleg negatív számként jelennek meg, amely helyzet a programok meghibásodásához vezet. Mivel az időpontokat nem 2038-ra fogják tenni, hanem 1970-be vagy 1901-be, ez okból kifolyólag hibás számításokat és hibás döntéseket fog hozni a program.

Erre a problémára nincs könnyű megoldás létező CPU/OS konfigurációk esetén. A time_t definíciójának megváltoztatása a 64 bites típus használatára megrendítheti a szoftver, a háttértároló és általában minden bináris kompatibilitását, ami az idő bináris ábrázolását használja, de a time_t előjel nélküli 32 bites egész számra való állítása sem megoldás, mivel könnyen megzavarhatja az időkülönbséget számoló programokat.

A legtöbb 64 bites architektúrát használó operációs rendszer már 64 bites egészben tárolja a time_t-t. Ezekre az architektúrákra való átállás már folyamatban van, és szakemberek számításai szerint 2038-ra be is fejeződik, viszont 32 bites kódok 100 milliói születtek meg még 2006-ban is, közülük nagyon sok beágyazott rendszerekben, melyeket aligha fognak mind lecserélni 2038-ig.[1] Annak ellenére, hogy a számítástechnikában napjainkban 18-24 havonta vásárolnak alapjában véve új konfigurációkat, lehet, hogy a beépített számítógépek változatlanok maradnak az általuk irányított rendszerek egész életében. Egyes jövőbeli dátumokkal számoló programok már 2006-tól hibásan működtek a probléma miatt.[2][3]

A 64 bites érték szerint egy újabb körbefordulás kb. 292 milliárd év múlva következik be, 292 277 026 596. december 4-én, vasárnap, UTC szerint 15:30:08-kor, a 128 bites szerint pedig közel 5,4 kvintillió év múlva, 5 391 559 471 918 239 497 011 222 876 596-ban.

Jegyzetek

[szerkesztés]
  1. Is the Year 2038 problem the new Y2K bug?”, The Guardian , 2014. december 17. (Hozzáférés: 2018. október 11.) 
  2. The Future Lies Ahead, 2006. június 28. [2006. november 28-i dátummal az eredetiből archiválva]. (Hozzáférés: 2006. november 19.)
  3. Weird "memory leak" problem in AOLserver 3.4.2/3.x Archiválva 2010. január 4-i dátummal a Wayback Machine-ben. 2006. május 12.

További információk

[szerkesztés]