A 2038-as év miatt a legtöbb modern számítógép leállhat, ha nem készülünk fel rá. Ez nem valamilyen hatalmas vírus vagy romló hardver miatt van, hanem ahhoz van köze, hogy a számítógépek hogyan tartják számon az időt.
Majdnem minden számítógép 32 bites processzorral tartja az időt, és 1970. január 1-jén 00:00:00 UTC-től számol előre, amit “korszaknak” neveznek. Ezt az időpontot a modern számítástechnikai rendszerek szabványaként határozták meg, de van egy nagy probléma. Hét másodperccel 2038. január 19-én 3:14 UTC után a 32 bites rendszer, amely sok számítógépben tárolja ezt az időadatot, kifogy a pozíciókból.
A probléma hasonló az Y2K problémához, amikor egy kétjegyű értékkel már nem lehetett kódolni a 2000-es vagy későbbi éveket, de abban különbözik, hogy ez a 32 bites hiba a Unix-szerű rendszerekhez és a Unix időformátumhoz kapcsolódik.
Az Y2K hibához való hasonlóságok miatt a 2038-as problémát széles körben Unix Millennium Bug néven ismerik.
A Unix Millennium Bug
A 32 bites szoftvereket futtató processzorok 4 GB memórián belül 232 különböző értéket vagy 4 294 967 295 különböző számot tudnak kezelni. Ezek a rendszerek a dátumokat és az időpontokat 32 bites darabokban tárolják. A valóságban ez a nagyszámú különböző érték a felére csökken az időmérés és más adattárolási alkalmazások esetében. Így 2.147.483.647 pozitív érték marad az adatok tárolására.
Ez azt jelenti, hogy a Unix 32 bites időkódjában ábrázolható utolsó időpont 231-1 vagy 2.147.483.647 másodperc 1970. január 1-je után. Az ezt követő idők visszatekerednek és negatív számként kerülnek tárolásra. Ezt az okozza, hogy a tárolórendszer kifogy a modulálható egész számokból, így csak az előjelet kell megváltoztatni. A számítógépek ezt aztán 1901. december 13. napjaként fogják értelmezni, és nem a tényleges dátumként.
Ez talán nem hangzik nagy dolognak, de gondoljunk csak bele, milyen sokféleképpen használjuk a szoftvereket. Ha olyan licencekkel rendelkezünk, amelyek időbélyegzővel vannak ellátva, hirtelen elveszíthetjük a hozzáférést fontos munkadokumentumokhoz, pénzügyi információkhoz és egyebekhez.
A problémák nem csak 2038-ban fognak felmerülni, minden olyan szoftver, amely jövőbeli dátumokat használ, hamarosan javításra szorul. A 20 évvel későbbi dátumokkal dolgozó programokat, például a befektetési alapokat és a fejlett ütemező programokat legkésőbb 2018-ig javítani kellett.
Mindez egyszerű javításnak tűnhet, csak a tárolási módszer végdátumát kell megváltoztatni, de ez nem ilyen egyszerű. A várakozási idővel rendelkező játékok és alkalmazások mögött álló számítógépes mérnökök már most bajba kerülnek a 2038. január 19. utáni dátumok kódolásával. Mivel a tárolási módszer 32 bites Unix, ezeknek a harmadik féltől származó programozóknak lehetetlen az ezen időponton túli dátumokat kódolni.
KAPCSOLÓDÓAN: 12 legrégebbi weboldalak az 1980-as és 90-es évekből, amelyek még ma is online vannak
De akkor mi van, kérdezheted. A dátumok változni fognak, a programozók már számítanak ezekre a problémákra, és az esetleges problémák nem okoznak majd pánikot, csak gyorsan kijavítják őket. Nos, ez nem egészen igaz.
A közlekedési rendszerek, beleértve a repülőgépeket és a modern autókat is, beágyazott szoftvereket használnak, amelyek gyakran érintetlenül maradnak. A modern autókban szinte mindent az ECU, vagyis a fedélzeti számítógép vezérel, amely Unix időmérést használ a dátumok és időpontok követésére. Ez azt jelenti, hogy ez a hiba potenciálisan megszakíthatja az ABS-fékrendszereket, az elektronikus menetstabilizáló rendszereket, a kipörgésgátlókat és a GPS-rendszereket; mindegyikre jelentős hatással lehet.
Ezeknek a rendszereknek nem mindegyike igényli a dátumhoz való hozzáférést a működéshez, de néhányuk igen, és nehéz tudni, melyiket programozták dátumfüggő kóddal.
Szóval, mi a megoldás? Nincs egy egyszerű megoldás.
A gépjárművekhez és készülékekhez hasonló beágyazott rendszereket úgy tervezték, hogy szoftverfrissítés nélkül is kitartsanak az eszköz teljes életciklusa alatt. A csatlakoztatott elektronikát gyorsan meg lehet javítani egy szoftverfrissítéssel, amikor eljön az ideje, de a beágyazott rendszerek azok, amelyek valószínűleg a legnagyobb pusztítást fogják okozni 2038-ban, mivel a legtöbbjüket nem fogják frissíteni.
Az egyik lehetőség a 32 bites egész szám adattárolási rendszerének megváltoztatása előjel nélküli 32 bites egész számra. Ez elméletileg lehetővé tenné a dátumtárolást egészen 2106-ig, de minden olyan rendszer, amely 1970 előtti dátumot használt, problémákba ütközne az adatok elérésében.
Ha az adattárolást 64 bitesre növelnénk, kompatibilitási tárolási problémákba ütköznénk a régebbi, csak 32 bites adattárolást használó rendszerek között.
A problémára jelenleg nincs általános megoldás, és még a legszélesebb körben elfogadott javítások is tartalmaznak hibákat bizonyos felhasználási területeken. A végén azonban pozitív hírek is vannak.
A legtöbb új elektronikus berendezést úgy tervezték, hogy az újabb 64 bites adattárolási módszert használja. Egy ekkora dátumintegrátor hússzor hosszabbra nyúlna, mint a világegyetem becsült jelenlegi kora, körülbelül 292 milliárd évre, december 4-én, vasárnap 15:30:08 UTC-kor 292,277,026,596-ra. Tehát az iPhone-od addig talán még biztonságban van.
Szerencsére ez a probléma jól ismert és alaposan tanulmányozták, ami azt jelenti, hogy a számítástechnikai mérnökök valószínűleg meg fogják oldani a problémákat, legalábbis a még frissített és karbantartott szoftverekkel. Ami azonban azt a kifogástalan állapotú 1997-es Priust illeti, ami 2038-ban a garázsodban fog állni? Nos, lehet, hogy 2038 januárjában hajnali 3:14 után már nem tudja majd vezetni, köszönhetően a most hibás fedélzeti számítógépnek.