El efecto 2038

TimeEl 19 de enero del 2038, para ser exactos a las 03:14:07 horas, podría ser un momento problemático para muchos sistemas tipo Unix. Explico el porqué con la ayuda de la Wikipedia y del Proyecto 2038.Los sistemas tipo Unix calculan el tiempo contando los segundos transcurridos desde el 1ero de enero de 1970 (año del “nacimiento” de Unix). Comúnmente se usa una variable entera (con signo) de 32 bits para manejar la fecha. Es decir, se puede representar desde -2,147′483,648 hasta 2,147′483,647 (-2^31 hasta 2^31-1).

¿Cuál es la fecha máxima que se puede representar con esta cifra? Seguro que ya lo intuen: las 03:14:06 horas del 19 de enero del 2038. Eso significa que al segundo siguiente, el “contador” de fecha volverá al 1ero de enero de 1970.

Prueba

Probrarlo es sencillo con un script del Proyecto 2038. Abran su editor de texto favorito y creen un archivo (llamado por ejemplo 2038.pl) con lo siguiente:

#!/usr/bin/perl
#
$ENV{'TZ'} = "GMT";
# Set the Time Zone to GMT (Greenwich Mean Time) for date calculations.
for ($clock = 2147483641; $clock < 2147483651; $clock++)
{
    print ctime($clock);
}

Para ejecutarlo desde consola:

perl 2038.pl

El resultado en mi Kubuntu de 32 bits es:

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

Como ven, del jueves 19 de enero del 2038 pasó al viernes 13 de diciembre de 1901. Sin embargo, en Kubuntu de 64 bits no ocurre esto y continúa con la fecha normal:

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
Tue Jan 19 03:14:08 2038
Tue Jan 19 03:14:09 2038
Tue Jan 19 03:14:10 2038

Esto es porque las arquitecturas de 64 bits utilizan enteros de 64 bits para la fecha, lo que retrasa el problema unos 290 mil millones de años.

¿Es importante este problema del 2038?

A pesar que Linux no es el SO más popular en el escritorio, en el mundo existen innumerables servidores corriendo sistemas Unix o algún derivado y también programas escritos en C que utilizan este formato. Desde servidores web, sistemas de tráfico aéreo, estaciones nucleares, el sistema de tu banco, de tu compañía de luz. En otras palabras el fin del mundo… :p

Aunque no todo es tan negro como parece, para el 2038 seguramente ya las arquitecturas de 64 bits serán un estándar en servidores y equipos de escritorio. Aunque la web del Proyecto dice que este año, cuando las financieras calculen préstamos a 30 años algo puede fallar…

¿Recuerdan 1999 cuando se decía que por el Efecto del año 2000 iban a caer aviones, estallar centrales eléctricas y catástrofes de ese tipo? Al final no ocurrió nada realmente serio, salvo algunas problemas menores y cosas curiosas (que pueden consultar en la Wikipedia):

  • En Ishikawa, Japón, un equipo de supervisión de radiación falló a medianoche, pero los funcionarios dijeron que no había ningún riesgo para el público.
  • En Onagawa, Japón, una alarma sonó en una planta de energía atómica dos minutos después de la medianoche.
  • En Estados Unidos, 150 máquinas tragamondedas en las pistas de carreras en Delaware dejaron de funcionar.
  • En Estados Unidos, Pennsylvania, una computadora de la biblioteca de una escuela primaria cobró al cuerpo estudiantil excesivamente por tener prestados los libros durante 100 años.

… y cosas así. Por lo pronto pueden ir adelantándose e instalar alguna distribución Linux de 64 bits.

7 Comentarios

  1. Comentado Enero 22, 2008 a las 9:30 am | Permalink

    Está interesante la prueba… lástima que no la pueda realizar porque uso windows ¬¬ .. XD… >_<

  2. JOse
    Comentado Enero 25, 2008 a las 11:30 am | Permalink

    kisiera saber mas sobre el efecto 2038

  3. Comentado Enero 28, 2008 a las 12:17 am | Permalink

    Y2K+38?
    Para el 2038 andaremos por las distros de 1terabit =)
    De hecho, la informática dejará de ser binaria, y pasará a ser decimal.

    Interesante el dato.

  4. Comentado Enero 28, 2008 a las 12:40 am | Permalink

    Perdón que moleste dos veces, pero acabo de leer esto:
    http://xkcd.com/376/

    Saludos

  5. Comentado Enero 28, 2008 a las 2:45 am | Permalink

    :)

  6. daival
    Comentado Enero 28, 2008 a las 9:46 am | Permalink

    Perdona que moleste pero de perl no tengo mucha idea y me da este error
    Undefined subroutine &main::ctime called at 2038.pl

  7. Comentado Febrero 10, 2008 a las 7:49 am | Permalink

    Interesante artículo. Os incluyo una referencia, y he adaptado el fuente a C, de modo que lo puedan probar también con facilidad los usuarios de Windows ;-)

    http://nachocabanes.blogspot.com/2008/02/el-efecto-2038-y-como-probarlo-desde-c.html

Un Trackback

  1. Por Efecto 2038 ¿? — Ideas Colectivas- en Julio 3, 2008 a las 9:54 pm

    [...] Efecto 2038 [...]

Escribe un Comentario

Su correo nunca será publicado ni compartido. Los campos requeridos están marcados *

*
*
CC 2009 El Módem. Some rights reserved.