Problema del añu 2038

N'informática, el problema del añu 2038 (conocíu tamién pol numerónimo Y2K38) podría causar qu'una parte del software falle nesi añu. El problema afecta a los programes qu'usen la representación del tiempu basada nel sistema POSIX, que se basa en cuntar el númberu de segundos trescurríos dende'l 1 de xineru de 1970 a les 00:00:00 (inorando los segundos entrepolares). Les últimes versiones del kernel Linux empiecen a cuntar dende les 21:00 del 31 d'avientu de 1969. En Android, asocede lo mesmo, yá que utiliza esta versión de kernel, anque nun ye posible escoyer la fecha dende'l menú d'axustes.

Esta representación ye un estándar de facto nos sistemes tipu Unix y tamién nos programes escritos pa munchos otros sistemes operativos debíu al gran algame del llinguaxe de programación C. Na mayoría de sistemes de 32 bits, el tipu de datu time_t usáu pa guardar el contador de segundos ye un enteru de 32 bits con signu, esto ye, que puede representar un rangu de númberos ente -2 147 483 648 y 2 147 483 647 (-231 y 231-1; 1 bit pal signu, y 31 pa representar el so valor en complementu a dos), polo que'l postreru segundu representable con esti formatu va ser a les 03:14:07 UTC del 19 de xineru de 2038, cuando'l contador llegue a 2 147 483 647. Un segundu dempués, el contador va enchise y va saltar al valor -2 147 483 648, que va causar el fallu de programes que van interpretar el tiempu como que tán en 1901 (dependiendo de la implementación), en cuenta de en 2038. De la mesma, esto causaría cálculu y procesamientu incorreutu y causaría un problema mundial. Los sistemes que cunten la hora dende (21:00 31/12/1969) llegaren al so tope a les 00:14:07.

Nun hai una forma senciella d'iguar esti problema pa les combinaciones esistentes de CPU/SO. Camudar la definición de time_t pa usar un tipu de 64 bits rompería la compatibilidá binaria pal software, almacenamientu de datos y, polo xeneral, cualquier cosa que tenga daqué que ver cola representación binaria del tiempu. Camudar time_t a un enteru de 32 bits ensin signu afectaría a los programes que faen cálculos con diferencies de tiempu. 

La mayoría de sistemes operativos para arquitectures de 64 bits utilicen enteros de 64 bits pa time_t. La migración a estos sistemes ta inda en procesu y espérase que se complete muncho primero de 2038. Usar un enteru de 64 bits retrasaría la fecha del problema unos 2,90 billones d'años (2,9 × 1012). Esto ye, 220 vegaes la edá averada del Universu.

 Dispositivos afeutaos 
El problema faía que los dispositivos Android bloquiárense y nun reiniciaren cuando s'establecía la fecha llende. Pa comprobar esto puédese dir a la configuración de fecha y hora nel dispositivu, y al tratar de camudar la fecha y hora al 2038; va atopar cola sorpresa de que solo-y dexa camudalo hasta'l 31 d'avientu de 2037. Na versión 4.0.4 amestóse esta carauterística, nes versiones anteriores, el calendariu amosaba feches hasta 2104, pero al escoyer una fecha más adelantrada a la fecha llende, el calendariu volvía a la fecha actual. El selector de feches amosaba correutamente los años a güeyu, pero al poner un deu sobre dalguna fecha non contable, este marcaba la so negativa, esto ye, el 19 de xineru de 2040 por casu, a güeyu víase bien, pero'l sistema marcaba 13 d'avientu de 1903, yá que al reiniciase, la primer fecha mostrable ye 13 d'avientu de 1901. Un datu interesáu ye que d'esta forma'l sistema nun se llomaba nin reiniciaba, la única manera yera dexando que'l contador llegara a la llende por sigo mesmu.Issue 16899 - android - Year 2038 problem.

Nos dispositivos iOS el sistema dexa camudar la fecha hasta'l 1 de xineru de 2038; sicasí, dende'l iPhone 5s d'equí p'arriba solucionaríase, una y bones estos modelos recién de iPhone tienen un procesador de 64 bits que lo dexa fora d'esti problema. Igualmente Android yá ta disponible en variantes de 64 bits dende la versión 5.0 polo que gradualmente va dexar tras esti problema. Los dispositivos con Android de 32 bits, Ubuntu Phone, Ubuntu Touch o Firefox VOS lleguen hasta'l 31 d'avientu de 2037. Los dispositivos con Windows Phone 7 dexen llegar hasta'l 1 de xineru de 2040. Los dispositivos Windows Phone 8 nun tán afeutaos, y cunten feches dende l'añu 1601 hasta'l 3000, concretamente'l 1 de xineru, al llegar a les 23:59, el contador torna 24 hores y vuelve marcar les 00:00 01/01/3000.

Concretamente, el problema afecta a los programes qu'usen la representación del tiempu basada nel sistema POSIX, que ye l'esplicáu nel párrafu anterior. Ye la representación estándar nos sistemes tipu Unix y en tolos programes escritos nel llinguaxe de programación C. La mayoría del software actual cai dientro d'esi grupu y van fallar, dependiendo de como tean implementaos, como si tuvieren funcionando en 1901 o 1970, en cuenta de en 2038. A pesar de ser un problema bien conocíu (el programadores conocen esta llimitación dende la implementación mesma del llinguaxe C), nun esiste una forma senciella de solucionar esti problema. Podría camudase'l tipu de variable emplegáu por un enteru de 32 bits ensin signu, pero esto fadría que tolos programes que faen cálculos con diferencies de tiempu fallen. Y reescribir por completu eses aplicaciones ye un trabayu enorme, que dacuando nin siquier puede encarase.

 Ver tamién 
 Problema del añu 2000
 Problema del añu 10000
 Error de software
 Network Time Protocol

 Referencies 


 Enllaces esternos 
 The Year-2038 Bug Website (n'inglés).
 Entry in How Stuff Works (n'inglés).
 The Project 2038 Frequently Asked Questions (n'inglés).

Categoría:Problemes computacionales
Categoría:Años 2030