År 2038-problemet

Exempel som visar hur klockan nollställs.

År 2038-problemet eller Y2K38 är beteckningen på ett stundande problem som väntar många datasystem år 2038. I likhet med millenniebuggen rör det sig om att det utrymme som tillägnats tidmätningen i exempelvis operativsystemet inte längre räcker till.

Framförallt i unixliknande operativsystem anges tiden i många funktioner som antalet sekunder som passerat sedan den 1 januari 1970 kl 00:00:00 (UTC).[1] I datorer där centralprocessorn arbetar med 32 bitars ordbredd sparas värdet vanligen i ett 32 bitars heltal med teckenbit, vilket då kan hantera tidpunkter högst 2 147 483 647 (231 − 1) sekunder från nollpunkten. Den 19 januari 2038 kl 03:14:08 (UTC)[2] kommer detta heltal bli fullt och börja om på −2 147 483 648 vilket motsvarar den 13 december 1901 kl 20:45:52 (UTC).

En enkel åtgärd vore att ändra programmen så att tiden istället lagras som 64-bitarstal. Problemet är att programmen måste kompileras om för att ändra variabeltypen och eventuellt anpassas på andra sätt. Detta måste göras samtidigt för alla program i ett system, inklusive program från tredje part, då många systemanrop använder tidsvariabeln. Alternativt måste man skapa parallella system. Aritmetik med 64 bitars tal är dessutom resurskrävande om processorn internt arbetar med 32 bitars aritmetik. Tidsfältet förekommer i binär form också i datastrukturer i till exempel filsystem, som inte ändras genom en uppdatering av operativsystem och programvara.[källa behövs]

I server- och persondatorer har man för det mesta övergått till 64 bitars system, där tiden enkelt kan anges med 64 bitar, och programvaran hur som helst anpassats för den nya ordbredden. Däremot kommer många inbyggda system ännu länge att använda 32 bitars ordbredd. I dessa system är resurserna också annars knappa, så intresset att övergå till en mindre effektiv lösning är svalt, i synnerhet som problemet inte uppstår inom de flesta apparaters beräknade livslängd.

Referenser

Media som används på denna webbplats

Year 2038 problem.gif
Year 2038 Problem. Binary / Decimal / Wrong Time / True Time