2038-probléma
Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. (2023 novemberéből) |
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]- ↑ „Is the Year 2038 problem the new Y2K bug?”, The Guardian , 2014. december 17. (Hozzáférés: 2018. október 11.)
- ↑ 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.)
- ↑ 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.