viernes, marzo 31, 2006

El fin de la era Unix

Hoy no vamos a hablar estrictamente de seguridad. Vamos a hablar del fin de la era Unix.

¿De qué hablamos cuando nos referimos al "fin de la era Unix"? Con este término tan apocalíptico nos referimos a un problema similar al del año 2000, pero que sólo afecta a los ordenadores basados en sistemas Unix.

El problema del año 2000

Me explico: a finales del siglo XX, las mentes pensantes de la informática planetaria descubrieron que había un problema referente al cambio al año 2000 en los sistemas informáticos. Muchas fechas se guardaban internamente en los ordenadores usando sólo dos dígitos para la misma. Es decir, en lugar de almacenar 20/05/1978 (que sería lo correcto), se guardaba 20/05/78. El problema es que cuando se llegara al año 2000, el sistema informático almacenaría internamente 20/05/00, que sería interpretada a todos los efectos como 20/05/1900, en lugar de la fecha correcta.

Este problema fué resuelto en su momento con los más diversos métodos (las revistas de desarrollo de la época fueron pródigas en ofrecer soluciones).

Pasó el año 2000, el planeta no se fué al carajo como muchos pensaban y aquí seguimos. ¿Todos los problemas relativos a las fechas están resueltos? Mmmmm..... pues va a ser que no.

El problema de las fechas en Unix

Los sistemas Unix tienen una forma peculiar de contar el tiempo (ojo, que hay muchas aplicaciones que en la actualidad lo cuentan de esta manera y también están afectadas por esto).

Decía que tienen una forma peculiar de contar el tiempo. Internamente tienen un contador de segundos, correspondiendo el segundo cero a 01/01/1970 00.00.00.

Fácil. Eso quiere decir que cuando ese contador tiene el valor 3600, la fecha que mostraría el sistema sería el 01/01/1970 01.00.00. Cuando tenga el valor 604800 (=7x24x3600) corresponde a la fecha 07/01/1970 00.00.00.

El contador de segundos se guarda en una variable de 32 bits. Eso quiere decir que el número más alto que puede representarse es el 4.294.967.296. ¿a qué fecha equivale ese número? Pues al 05/02/2036 06:29:00.

¿Y qué pasará ese día? Pues que el contador volverá a 1970, con lo que constituye un problema muy similar al del año 2000: hay que cambiar aquellas aplicaciones, ficheros y bases de datos que guarden las fechas en ese formato, o adaptarlas. Los sistemas operativos deberán parchearse para adaptarlos, y probablemente los sistemas de ficheros (la tecnología usada para guardar los datos) también deberán hacerlo. Las consecuencias son importantes, y por lo tanto no deben obviarse.

Soluciones

Es muy posible que, a raíz del año 2000, muchos fabricantes de software ya hayan realizado los cambios oportunos. Posiblemente el contador de segundos se haya ampliado hasta los 64 bits, con lo que la fecha límite sería alguna fecha del año 292.471.210.648 (he tenido en cuenta que con este cambio probablemente incorporarían la posibilidad de registrar fechas anteriores a 1970).

Si tenemos en cuenta que algunas estimaciones de la edad del universo hablan de 13.700.000.000 de años, vemos que se podría representar con la exactitud de un segundo cualquier instante en la historia del universo. Creo que con eso estamos servidos al menos para una buena temporada...

No hay comentarios: