Året 2038 kan leda till att de flesta moderna datorer slutar fungera om vi inte förbereder oss för det. Detta beror inte på något massivt virus eller försämrad hårdvara, utan har allt att göra med hur datorerna håller reda på tiden.
Nästan alla datorer håller tiden med hjälp av en 32-bitars processor och räknar framåt från 00:00:00:00 UTC den 1 januari 1970, som kallas ”epoken”. Denna tidpunkt fastställdes som standard för moderna datasystem, men det finns ett stort problem. Sju sekunder efter 3:14 UTC den 19 januari 2038 kommer det 32-bitarsystem som lagrar dessa tidsdata i många datorer att få slut på positioner.
Problemet liknar problemet med millennieskiftet, där ett tvåsiffrigt värde inte längre kunde användas för att koda år 2000 eller senare, men skiljer sig på så sätt att detta 32-bitarsfel är relaterat till Unix-liknande system och Unix-tidsformatet.
Dessa likheter med Y2K-buggen har i stor utsträckning lett till att 2038-problemet kallas Unix Millennium Bug.
The Unix Millennium Bug
Processorer som kör 32-bitars mjukvara kan hantera 232 olika värden eller 4 294 967 295 olika tal inom 4 GB minne. Dessa system lagrar datum och tider i 32-bitarsdelar. I verkligheten halveras detta stora antal olika värden för tidsbokning och andra datalagringstillämpningar. Det återstår 2 147 483 647 positiva värden att lagra data i.
Detta innebär att den sista tiden som kan representeras i Unix 32-bitars tidskod är 231-1 eller 2 147 483 647 sekunder efter den 1 januari 1970. Tiderna efter denna punkt kommer att vändas tillbaka och lagras som negativa tal. Detta beror på att lagringssystemet får slut på heltal att modulera, vilket gör att endast tecknet kan ändras. Datorer kommer då att tolka detta som den 13 december 1901 och framåt, snarare än det faktiska datumet.
Detta kanske inte låter som en stor sak, men tänk på alla de sätt vi använder programvara på. Om du har licenser som är tidsstämplade kan du plötsligt förlora tillgången till viktiga arbetsdokument, finansiell information med mera.
Problem kommer inte bara att börja uppstå år 2038, all programvara som använder framtida datum kommer att behöva åtgärdas snart. Program som arbetar med datum 20 år framåt i tiden, som investeringsfonder och avancerade schemaläggningsprogram, behövde åtgärdas senast 2018.
Allt detta kan låta som en enkel lösning, ändra bara slutdatumet för lagringsmetoden, men så enkelt är det inte. Datoringenjörer bakom spel och appar som har väntetider har redan problem med att koda datum efter den 19 januari 2038. Eftersom lagringsmetoden är 32-bitars Unix är det omöjligt för dessa tredjepartsprogrammerare att koda datum efter denna tidpunkt.
RELATERAT: 12 OLDEST WEBSITES FROM THE 1980S AND 90S STILL ONLINE TODAY
Men så vadå, kanske du frågar dig. Datumen kommer att ändras, programledarna räknar redan med dessa frågor och eventuella problem kommer inte att orsaka panik, de kommer bara att åtgärdas snabbt. Tja, detta är inte riktigt sant.
Transportsystem, inklusive flygutrustning och moderna bilar, använder inbäddad programvara som ofta inte ändras. Nästan allt i moderna bilar styrs av dess ECU, eller omborddator, som använder Unix tidtagning för att hålla reda på datum och tider. Detta innebär att denna bugg potentiellt kan avbryta ABS-bromssystem, elektroniska stabilitetskontroller, dragkontroller och GPS-system; de kan alla påverkas avsevärt.
Alla dessa system kommer inte att kräva tillgång till datum för att kunna köras, men vissa kommer att göra det, och det är svårt att veta vilka som har programmerats med datumberoende kod.
Så, hur kan man åtgärda detta? Det finns ingen enkel lösning.
Inbäddade system som de i bilar och apparater är utformade för att hålla under enhetens livscykel utan en programuppdatering. Ansluten elektronik kan snabbt åtgärdas med en mjukvaruuppdatering när det är dags, men det är de inbäddade systemen som troligen kommer att orsaka störst förödelse år 2038, eftersom de flesta inte kommer att uppdateras.
Ett alternativ är att ändra datalagringssystemet för 32-bitars heltal till ett 32-bitars heltal utan förtecken. Detta skulle teoretiskt sett möjliggöra datalagring ända fram till 2106, men alla system som använde ett datum före 1970 skulle få problem med att komma åt dessa data.
Om datalagringen ökas till 64-bitars, skulle vi få problem med kompatibilitetslagring mellan äldre system som endast använder 32-bitars datalagring.
Det finns för närvarande ingen universallösning på problemet, och även de mest allmänt accepterade lösningarna har fortfarande buggar inom vissa användningsområden. Det finns dock positiva nyheter i slutet av detta.
De flesta nya elektroniska utrustningar är konstruerade för att använda den nyare 64-bitars datalagringsmetoden. Ett så här stort datuminteger skulle sträcka sig 20 gånger längre än universums beräknade nuvarande ålder, cirka 292 miljarder år klockan 15:30:08 UTC söndagen den 4 december 292 277 026 596. Så din iPhone kan vara säker tills dess.