År 2038-problemet

Från Wikipedia
Hoppa till: navigering, sök
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 Y2K-problemet 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 klockan 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 högst 2 147 483 647 (231) sekunder. Den 19 januari 2038 klockan 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 klockan 20:45 (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.

I server- och persondatorer håller man på att övergå till 64 bitars system, där tiden enkelt kan anges med 64 bitar, och programvaran hur som helst anpassas 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 (vilket motsvarar resonemanget innan år 2000-problemet).

Referenser[redigera | redigera wikitext]

  1. ^ ”The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (definition of epoch)”. IEEE and The Open Group. The Open Group. 2004. http://www.opengroup.org/onlinepubs/000095399/. Läst 7 mars 2008. 
  2. ^ Diomidis Spinellis (2006). Code quality: the open source perspective.. Effective software development serie in Safari Books Online (illustrated). Adobe Press. ISBN 0-321-16607-8. http://books.google.es/books?id=vEN-ckcdtCwC&pg=PA49&dq=292,277,026,596&cd=1#v=onepage&q=292%2C277%2C026%2C596&f=false 

Se även[redigera | redigera wikitext]