Tags:

Noticias
Noticias

Problema del año 2038 (Y2K38) ¿el nuevo efecto 2000?

Seguro que muchos recordáis con nostalgia los últimos meses del año 1999. Quedaba muy poco para que todos los ordenadores y sistemas del mundo se enfrentaran al temido “efecto 2000”. Todo iba a dejar de funcionar… y finalmente, nada. En un altísimo porcentaje de los casos se corrigió sin problemas y todo siguió funcionando. Este “efecto 2000” podría repetirse en unos años, sólo que ahora se llamará “efecto 2038” o “Problema del año 2038 (Y2K38)“.

El “efecto 2000” o Y2K, sembró el pánico a finales de la década de los 90. Todo tipo de medios se hicieron eco  y afectaba a sistemas antiguos por la forma en que codificaban los datos. Esto fue debido a que utilizan dos dígitos para codificar el año, algo que funcionó sin problemas entre 1900 y 1999. Sin embargo, el cambio de las dos últimas cifras con la llegada del año 2000 podría ser interpretado por el sistema como una vuelta a 1900.

El problema del año 2000 conocido como Y2K lo entiende mucha gente porque se le dio mucha cobertura en los medios masivos de comunicación.

Ahora existe otro problema similar conocido como el problema del año 2038.

Problema del año 2038 (Y2K38)

“En informática, el problema del año 2038 (conocido también por el numerónimo Y2K38) podría causar que una parte del software falle en ese año. El problema afecta a los programas que usen la representación del tiempo basada en el sistema POSIX, que se basa en contar el número de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 (ignorando los segundos intercalares).

Esta representación es un estándar de facto en los sistemas tipo Unix y también en los programas escritos para muchos otros sistemas operativos debido al gran alcance del lenguaje de programación C. En la mayoría de sistemas de 32 bits, el tipo de dato time_t usado para guardar el contador de segundos es un entero de 32 bits con signo, es decir, que puede representar un rango de números entre -2.147.483.648 y 2.147.483.647 (-231 y 231-1; 1 bit para el signo, y 31 para el valor absoluto), por lo que el último segundo representable con este formato será a las 03:14:07 UTC del 19 de enero de 2038, cuando el contador llegue a 2.147.483.647.

Un segundo después, el contador se desbordará y saltará al valor -2.147.483.648, que causará el fallo de programas que interpretarán el tiempo como que están en 1901 (dependiendo de la implementación), en vez de en 2038. A su vez, esto causaría cálculo y procesamiento incorrecto y causaría un problema mundial.

  • En pocas palabras:

En el año 2038 muchos dispositivos que trabajen con este lenguaje de programación y que se basen en ese sistema de conteo, tendrán problemas al ejecutarse.

¿Y qué pasará cuando lleguemos a esa fecha? Pues resulta que ese bit reservado para el signo se cambiaría a 1 (negativo), pero debido a que no hay fechas negativas, el sistema no lo toma como referencia. De tal forma que el 19 de Enero del 2038 a las 03:14:08, el ordenador lo entenderá como si fuera el 1 de Enero del 1970 a las 12:00:01 (puesto que es la fecha correspondiente para el valor 0). A este fenómeno en informática se le suele denominar como Desbordamiento o Overflow.

Ejercicio práctico:

Podemos hacer una prueba sencilla para comprobar lo que podría ocurrir. Adelantamos la hora de nuestro sistema operativo, por ejemplo en un Windows, a una fecha superior al 2038 y después iniciamos el Windows media player (para reproducir un audio). Podremos observar que nos da un error y no podremos iniciar la aplicación, pero si volvemos a poner la fecha correcta y volvemos a repetir el proceso de iniciar el Windows media player (para reproducir un audio) y observaremos que la aplicación se inicia correctamente y reproduce nuestro audio sin problemas.

Summary
Review Date
Reviewed Item
Problema del año 2038 (Y2K38)
Author Rating
51star1star1star1star1star