Problema de l'any 2038

De Viquipèdia
Dreceres ràpides: navegació, cerca
Animació de l'efecte 2038.

En informàtica, el problema de l'any 2038 (conegut també pel Numerònim Y2K38) podria causar que una part del programari falli en aquest any. El problema afecta els programes que utilitzen la representació del temps basada en el sistema POSIX, que es basa en comptar el nombre de segons transcorreguts des de l'1 de gener de 1970 a les 00:00:00 (ignorant els segons intercalars).

Aquesta representació és un estàndard de facto en els sistemes tipus Unix i també en els programes escrits per a molts altres sistemes operatius a causa del gran abast del llenguatge de programació C. En la majoria de sistemes de 32 bits, el tipus de dada time_t utilitzat per guardar el comptador de segons és un sencer de 32 bits amb signe, és a dir, que pot representar un rang de nombres entre 2147483648 i 2147483647 (-231 i 231-1; 1 bit per al signe, i 31 per al valor absolut), per la qual cosa l'últim segon representable amb aquest format serà a les 03:14:07 UTC del 19 de gener de 2038, quan el comptador arribi a 2147483647. Un segon després, el comptador es desbordarà, i saltarà al valor 2147483648, que causarà la fallada de programes que interpretaran el temps com que estan en 1901 (depenent de la implementació), en comptes de 2038. Al seu torn, això causaria càlcul i processament incorrecte i causaria un problema mundial.

No hi ha una forma senzilla de resoldre aquest problema perquè per les combinacions existents de CPU/SO. Canviar la definició de time_t per utilitzar un tipus de 64 bits trencaria la compatibilitat binària per al programari, emmagatzematge de dades, i, en general, qualsevol cosa que tingui alguna cosa a veure amb la representació binària del temps. Canviar time_t a un enter de 32 bits sense signe afectaria als programes que fan càlculs amb diferències de temps.

La majoria de sistemes operatius per arquitectures de 64 bits utilitzen sencers de 64 bits per time_t . La migració a aquests sistemes està encara en procés i s'espera que es completi molt abans de 2038. Utilitzar un enter de 64 bits retardaria la data del problema uns 2,90 bilions d'anys (2,9 x 1012). És a dir, 220 vegades l'edat aproximada de l'Univers.

Dispositius afectats[modifica | modifica el codi]

El problema fa que els dispositius Android (almenys algunes versions) es bloquegin i no reiniciïn, quan es canvia la data tal com era aleshores.[1]

Referències[modifica | modifica el codi]

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]