Efecto 2038

Solo disponible en BuenasTareas
  • Páginas : 5 (1068 palabras )
  • Descarga(s) : 0
  • Publicado : 10 de febrero de 2011
Leer documento completo
Vista previa del texto
Una limitación técnica en el tipo de dato utilizado para representar el tiempo en la mayoría de los sistemas informáticos actuales, podría convertir en chatarra inútil una buena parte de los ordenadores y equipos electrónicos actuales. El problema se presentaría a las 03:14:07 (UTC) del 19 de enero de 2038, y tiene su origen en una variable interna utilizada para contar el tiempo en los sistemasde 32 bits.

Muchos de los que tuvieron la suerte de utilizar alguno de los viejos ordenadores de 8 bits, como el primer IBM PC o las home computers anteriores, todavía se maravillan con el poder de procesamiento disponible en los modernos sistemas basados en procesadores de 32 bits. Es que el numero de bits que puede manejar el microprocesador de turno define en buena medida la potencia delsistema que controla y, al tratarse de una función del tipo “2 a la n”, donde “n” es el número de bits, las plataformas de 32 bits son mucho más que cuatro veces más poderosas que las de 8.

Como saben los programadores (o aquellos que leyeron nuestro cursillo de programación en Visual Basic o de microcontroladores) en una variable de 8 bits se pueden almacenar números comprendidos entre 0 y 255(“2 a la 8” combinaciones posibles), mientras que en una de 32 bits el rango va de 0 a 18446744073709551615 (“2 a la 32”). En ambos casos, cuando se necesita trabajar con números con signo, se divide en dos el rango completo para incluir los números negativos, así que los extremos pasan a ser -128 / 127 y -2147483648 / 2147483647. Como puede verse, las plataformas de 32 bits son mucho más poderosasque las de 8. Sin embargo, puede que sean las responsables de una supuesta catástrofe informática conocida como “el efecto 2038”.

Para comprender el origen del problema necesitamos conocer un poco más a fondo la forma en que se gestionan internamente las fechas en los ordenadores, aclarando que por “ordenadores” también se entienden los sistemas integrados, como aquellos responsables de mantenertu casa calefaccionada, el piloto automático de un avión o tu teléfono móvil conectado a la red. La gran mayoría de estos sistemas informáticos funcionan con software escrito en uno de los más populares y robustos lenguajes de programación de todos los tiempos: el lenguaje C. En la mayoría de sistemas de 32 bits se utiliza el tipo de datotime_t - entero de 32 bits con signo- para guardar el valorde un contador de segundos interno.

Básicamente, el funcionamiento es el siguiente: se toma una fecha como base y el sistema en cuestión cuenta los segundos que han pasado desde ese momento hasta el actual. El resultado es almacenado en la variable de 32 bits que es utilizada cada vez que alguna aplicación necesita conocer la fecha y hora para poder hacer su tarea. El valor de la variable, queexpresa el número de segundos transcurridos desde las 00:00:00 horas del 1 de enero de 1970, se convierte en la fecha completa (hora-minuto-segundo; día-mes-año) mediante un algoritmo muy simple, y todos contentos.

Un minuto tiene 60 segundos, una hora tiene 60 minutos (o 3600 segundos), un día 24 horas (o 86400 segundos), y un año tiene aproximadamente 365.25 días (o 31557600 segundos). Comopuede verse, a medida que pasan los años el valor almacenado en la bendita variable de 32 bits se hace más grande. Mucho más grande. No es muy difícil dividir el máximo valor de esta porción de la memoria (2147483647) por el número de segundos de un año (31557600), para darse cuenta que en algo más de 68 años la variable se “desbordará”. Esto significa que exactamente a las 03:14:07 UTC del 19 deenero de 2038, el contador interno de casi todos los sistemas informáticos programados en C llegará a 2147483647 y, un segundo después, saltará al valor -2147483648.

Concretamente, el problema afecta a los programas que usan la representación del tiempo basada en el sistema POSIX, que es el explicado en el párrafo anterior. Es la representación estándar en los sistemas tipo Unix y en todos...
tracking img