Vuosi 2038 saattaa aiheuttaa sen, että useimmat nykyaikaiset tietokoneet lakkaavat toimimasta, jos emme valmistaudu siihen. Tämä ei johdu jostain massiivisesta viruksesta tai heikkenevästä laitteistosta, vaan se liittyy siihen, miten tietokoneet pitävät kirjaa ajasta.
Lähes kaikki tietokoneet pitävät kirjaa ajasta 32-bittisellä prosessorilla, ja ne laskevat eteenpäin tammikuun 1. päivän 1970 kello 00:00:00 UTC:stä, johon viitataan nimellä ”aikakausi”. Tämä ajankohta asetettiin standardiksi nykyaikaisille laskentajärjestelmille, mutta siinä on suuri ongelma. Seitsemän sekuntia kello 3:14 UTC:n jälkeen 19. tammikuuta 2038, 32-bittisestä järjestelmästä, joka tallentaa tämän aikatiedon monissa tietokoneissa, loppuvat paikat.
Ongelma on samankaltainen kuin Y2K-ongelma, jossa kaksinumeroista arvoa ei voitu enää käyttää koodaamaan vuotta 2000 tai myöhempiä vuosia, mutta se on erilainen sikäli, että tämä 32-bittinen vika liittyy Unixin kaltaisiin järjestelmiin ja Unixin aikaformaattiin.
Nämä yhtäläisyydet Y2K-virheen kanssa ovat johtaneet laajalti siihen, että 2038-ongelma tunnetaan nimellä Unix Millennium Bug.
The Unix Millennium Bug
Prosessorit, joissa käytetään 32-bittisiä ohjelmistoja, pystyvät käsittelemään 232:aa erilaista arvoa tai 4 294 967 295:tä erilaista lukua 4 gigatavun muistissa. Nämä järjestelmät tallentavat päivämääriä ja kellonaikoja 32-bittisinä kokonaisuuksina. Todellisuudessa tuo suuri määrä erilaisia arvoja puolitetaan ajanottoa ja muita tietojen tallennussovelluksia varten. Jäljelle jää 2 147 483 647 positiivista arvoa, joihin tietoja voidaan tallentaa.
Tämä tarkoittaa, että viimeinen aika, joka voidaan esittää Unixin 32-bittisessä aikakoodissa, on 231-1 eli 2 147 483 647 sekuntia 1. tammikuuta 1970 jälkeen. Tämän pisteen jälkeiset ajat kierretään takaisin ja tallennetaan negatiivisina lukuina. Tämä johtuu siitä, että tallennusjärjestelmästä loppuvat moduloitavat kokonaisluvut, jolloin vain merkki muuttuu. Tietokoneet tulkitsevat tämän sitten joulukuun 13. päiväksi vuonna 1901 ja siitä eteenpäin, eikä todelliseksi päivämääräksi.
Tämä ei ehkä kuulosta suurelta asialta, mutta ajattele kaikkia tapoja, joilla käytämme ohjelmistoja. Jos sinulla on lisenssejä, jotka on aikaleimattu, voit yhtäkkiä menettää pääsyn tärkeisiin työasiakirjoihin, taloudellisiin tietoihin ja muuhun.
Ongelmat eivät ala ilmetä vasta vuonna 2038, vaan kaikki ohjelmistot, jotka käyttävät tulevia päivämääriä, on korjattava pian. Ohjelmat, jotka työskentelevät 20 vuoden takaisten päivämäärien kanssa, kuten sijoitusrahastot ja kehittyneet aikataulutusohjelmat, piti korjata viimeistään vuonna 2018.
Kaikki tämä saattaa kuulostaa yksinkertaiselta korjaukselta, kunhan vain muutat tallennusmenetelmän päättymispäivämäärän, mutta asia ei ole niin yksinkertainen. Odotusaikoja sisältävien pelien ja sovellusten takana olevat tietokoneinsinöörit törmäävät jo nyt ongelmiin koodatessaan päivämääriä 19. tammikuuta 2038 jälkeen. Koska tallennustapa on 32-bittinen Unix, näiden kolmannen osapuolen ohjelmoijien on mahdotonta koodata päivämääriä, jotka ylittävät tämän ajan.
LIITTYEN: 12 OLDEST WEBSITES FROM THE 1980S AND 90S STILL ONLINE TODELLA TÄNÄÄN
Mutta mitä sitten, saatat kysyä. Päivämääriä muutetaan, ohjelmoijat odottavat jo näitä ongelmia, eivätkä mahdolliset ongelmat aiheuta paniikkia, ne vain korjataan nopeasti. No, tämä ei ole aivan totta.
Kuljetusjärjestelmissä, kuten lentolaitteissa ja nykyaikaisissa autoissa, käytetään sulautettuja ohjelmistoja, jotka usein jäävät koskemattomiksi. Lähes kaikkea nykyaikaisissa autoissa ohjataan ECU:lla eli ajoneuvotietokoneella, joka käyttää Unix-ajanottoa päivämäärien ja kellonaikojen seuraamiseen. Tämä tarkoittaa, että tämä vika voi mahdollisesti keskeyttää ABS-jarrujärjestelmät, elektroniset vakaudenvalvontajärjestelmät, ajonvakautusjärjestelmät ja GPS-järjestelmät; ne kaikki voivat vaikuttaa merkittävästi.
Kaikki nämä järjestelmät eivät vaadi pääsyä päivämääriin toimiakseen, mutta jotkin vaativat, ja on vaikea tietää, mitkä niistä ohjelmoitiin päivämääristä riippuvaisella koodilla.
Mitä on siis korjaus? Helppoa ratkaisua ei ole.
Autojen ja laitteiden kaltaiset sulautetut järjestelmät on suunniteltu kestämään laitteen koko elinkaaren ajan ilman ohjelmistopäivitystä. Liitetty elektroniikka voidaan korjata nopeasti ohjelmistopäivityksellä, kun sen aika koittaa, mutta juuri sulautetut järjestelmät aiheuttavat todennäköisesti eniten tuhoa vuonna 2038, koska useimpia ei päivitetä.
Yksi vaihtoehdoksi on muuttaa 32-bittisen kokonaisluvun datan tallennusjärjestelmä 32-bittiseksi kokonaisluvuksi, johon ei ole allekirjoitusta. Tämä mahdollistaisi teoriassa päivämäärän tallentamisen aina vuoteen 2106 asti, mutta mikä tahansa järjestelmä, joka käytti päivämäärää ennen vuotta 1970, joutuisi ongelmiin näiden tietojen käyttämisessä.
Jos datan tallennustilaa kasvatetaan 64-bittiseksi, törmäämme yhteensopivuusongelmiin tallennustilojen välillä vanhempien järjestelmien välillä, jotka käyttävät vain 32-bittistä datan tallennustilaa.
Ongelmaan ei ole tällä hetkellä mitään universaalia yleispätevää ratkaisua, ja laajimmin hyväksytyimmissäkin korjaustoimenpiteissä on edelleen virheitä tietyillä käyttöalueilla. Lopussa on kuitenkin positiivisia uutisia.
Uudet elektroniikkalaitteet on useimmiten suunniteltu käyttämään uudempaa 64-bittistä tiedon tallennusmenetelmää. Näin suuri päivämääräkokonaisuus ulottuisi 20 kertaa pidemmälle kuin maailmankaikkeuden arvioitu nykyinen ikä, noin 292 miljardia vuotta kello 15:30:08 UTC sunnuntaina 4.12.292,277,026,596. Joten iPhonesi saattaa olla turvassa siihen asti.
Onneksi tämä ongelma tunnetaan hyvin ja sitä on tutkittu perusteellisesti, mikä tarkoittaa, että tietotekniikan insinöörit todennäköisesti ratkaisevat ongelmat, ainakin ohjelmistoilla, joita vielä päivitetään ja ylläpidetään. Mitä tulee kuitenkin siihen uudenveroiseen vuoden 1997 Priukseen, joka seisoo autotallissasi vuonna 2038? No, et ehkä pysty ajamaan sillä tammikuun 2038 kello 3.14 jälkeen, kiitos sen nyt viallisen sisäisen tietokoneen.