¿Estás preparado para el Efecto 2038?

2038.jpgSeguramente todos recuerdan el revuelo que se armó por el efecto 2000 en el rubro informático. Este tipo de efectos son producidos por errores de software o hardware que están relacionados con el método de almacenamiento de fechas.En el llamado “Efecto 2038” podría fallar una gran cantidad de software, ya que este problema afecta a todos aquellos programas que utilizan el Unix Time Stamp, que como todo programador sabe, es el número de segundos transcurridos desde las 0:00:00 del 1 de enero de 1970 GMT.

Resulta que en máquinas de 32 bits, como son la gran mayoría de máquinas que se utilizan en estos momentos, el 19 de enero de 2038 a las 03:14:07 se dará la curiosa circunstancia de que se llegará al tope de fecha posible para almacenar con este sistema y un segundo despues, en el “03:14:08” se desbordaría la memoria volviendo probablemente al 1º de enero de 1970 a las 00:00:00.

La explicación es la siguiente: los sitemas de 32 bits utilizan un entero de 32 bits con signo para poder representar una rango de números entre -2.147.483.648 y 2.147.483.647 y por lo tanto como hemos dicho anteriormente el último segundo representable en este formato es el “19 de enero de 2038 a las 03:14:07”.

Los menos alarmistas pensarán que para esas fechas se habrán actualizado la gran mayoría de los aparatos y habrá soluciones para evitar este “efecto”, sin embargo algunos más alarmistas pueden pensar que aún dentro de 30 años habrá algunos aparatos electrónicos (relojes, despertadores, móviles) que pueden estar basados en el formato timestamp y que por lo tanto no funcionarían correctamente a partir de enero de 2038.

No hay una forma sencilla de arreglar este problema para las combinaciones existentes de CPU/SO. Cambiar la definición de tiempo para usar un tipo de 64 bits rompería la compatibilidad binaria para el software, almacenamiento de datos, y, por lo general, cualquier cosa que tenga algo que ver con la representación binaria del tiempo. Cambiar a un entero de 32 bits sin signo afectaría a los programas que hacen cálculos con diferencias de tiempo.

La mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para la especificación de fechas. La migración a estos sistemas está todavía en proceso y se espera que se complete antes del 2038. Sin embargo, cientos de millones de sistemas de 32 bits son utilizados todavía en el 2007, muchos en sistemas integrados, y no es posible asegurar que todos ellos habrán sido reemplazados antes del 2038.

Usar un entero de 64 bits retrasaría la fecha del problema unos 290 mil millones de años, quizás mucho tiempo después de que el sol se haya extinguido.

Habrá que esperar y ver que pasa.

Ejemplo del efecto 2038 en Debian:

Tue Jan 19 03:14:01 2038
Tue Jan 19 03:14:02 2038
Tue Jan 19 03:14:03 2038
Tue Jan 19 03:14:04 2038
Tue Jan 19 03:14:05 2038
Tue Jan 19 03:14:06 2038
Tue Jan 19 03:14:07 2038
Fri Dec 13 20:45:52 1901
Fri Dec 13 20:45:52 1901
Fri Dec 13 20:45:52 1901

Fuente: TuFuncion + Wikipedia