¿Y por qué el fin del mundo no podría ser el 19 de enero de 2038? Apocalipsis por un desbordamiento de entero...
Andaba yo trabajando, obteniendo informes de mi SIEM, cuando de repente al indicar el periodo de obtención de datos obtuve el siguiente error:
Mientras, en otras partes del mundo, esa fecha se sigue mostrando también en miles pantallas y seguro que a ti también te suena, ¿verdad?. Pero, ¿por qué 1 de enero de 1970?, veamos:
En la década de los 60, las primeras versiones de Unix medían el tiempo del sistema en intervalos de 1/60s, debido a los 60 Hz de la frecuencia de los osciladores en aquella época. Esto significaba que un entero sin signo de 32 bits sólo podía representar un lapso de tiempo inferior a 829 días. Por esta razón, el tiempo representado por el número 0 (llamado la época o epoch) tuvo que ser aplicado en el pasado muy reciente: 01/01/1971. De hecho, la primera edición del Manual del Programador de Unix del 3 de noviembre de 1971 define el tiempo Unix como "el tiempo desde las 00:00:00 de 1 de enero de 1971 medido en sexagésimos de segundo".
Más tarde, los intervalos se incrementaron a un segundo (1HZ DC), lo que aumentó el lapso de tiempo que podría ser representado a alrededor de 136 años y, como el periodo de representación era más amplio, el epoch se redondeó a 01/01/1970. Haciendo cálculos, un entero con signo de 32 bits puede representar números enteros entre -2147483648 y 2147483647, es decir, el rango representable en el tiempo Unix va desde las 20:45:52 GMT del 13 de diciembre de 1901 a 03:14:07 GMT del 19 de enero de 2038...
Seguro que lo acabas de pensar: a partir de esa fecha todos los equipos que aún utilizan 32 bits y miden así el tiempo sufrirán un desbordamiento de entero...
Esto se conoce como el "problema del año 2038" y algunos creen que será más importante que el del año 2000. La solución ya está en la mayoría de sistemas operativos de 64 bits: el uso de un signo de 64-bit presenta una nuevo periodo medible veinte veces mayor que la edad estimada del universo, aproximadamente 292 mil millones de años (tranquilos, no necesitaremos tanto tiempo para destruir la Tierra antes).
Pero muchos de ellos no serán actualizados en esa fecha... Hoy, miles o millones de sistemas embebidos utilizan Unix/Linux y, seguramente, muchos de ellos no serán actualizados en esa fecha... Muchos quieren e insisten en hacer coincidir el fin del mundo con el calendario Maya pero, ¿por qué no con el fin del "tiempo Unix"?...
Seguro que, a partir del 21 de diciembre, el 19 de enero de 2038 será más importante. ¿Qué no te gusta? pues sólo tienes que relajarte y elegir en esta lista tu fecha del apocalipsis favorita. Por el momento, que tengáis buen fin de semana! ;)
Mientras, en otras partes del mundo, esa fecha se sigue mostrando también en miles pantallas y seguro que a ti también te suena, ¿verdad?. Pero, ¿por qué 1 de enero de 1970?, veamos:
En la década de los 60, las primeras versiones de Unix medían el tiempo del sistema en intervalos de 1/60s, debido a los 60 Hz de la frecuencia de los osciladores en aquella época. Esto significaba que un entero sin signo de 32 bits sólo podía representar un lapso de tiempo inferior a 829 días. Por esta razón, el tiempo representado por el número 0 (llamado la época o epoch) tuvo que ser aplicado en el pasado muy reciente: 01/01/1971. De hecho, la primera edición del Manual del Programador de Unix del 3 de noviembre de 1971 define el tiempo Unix como "el tiempo desde las 00:00:00 de 1 de enero de 1971 medido en sexagésimos de segundo".
Más tarde, los intervalos se incrementaron a un segundo (1HZ DC), lo que aumentó el lapso de tiempo que podría ser representado a alrededor de 136 años y, como el periodo de representación era más amplio, el epoch se redondeó a 01/01/1970. Haciendo cálculos, un entero con signo de 32 bits puede representar números enteros entre -2147483648 y 2147483647, es decir, el rango representable en el tiempo Unix va desde las 20:45:52 GMT del 13 de diciembre de 1901 a 03:14:07 GMT del 19 de enero de 2038...
Seguro que lo acabas de pensar: a partir de esa fecha todos los equipos que aún utilizan 32 bits y miden así el tiempo sufrirán un desbordamiento de entero...
Esto se conoce como el "problema del año 2038" y algunos creen que será más importante que el del año 2000. La solución ya está en la mayoría de sistemas operativos de 64 bits: el uso de un signo de 64-bit presenta una nuevo periodo medible veinte veces mayor que la edad estimada del universo, aproximadamente 292 mil millones de años (tranquilos, no necesitaremos tanto tiempo para destruir la Tierra antes).
Pero muchos de ellos no serán actualizados en esa fecha... Hoy, miles o millones de sistemas embebidos utilizan Unix/Linux y, seguramente, muchos de ellos no serán actualizados en esa fecha... Muchos quieren e insisten en hacer coincidir el fin del mundo con el calendario Maya pero, ¿por qué no con el fin del "tiempo Unix"?...
Seguro que, a partir del 21 de diciembre, el 19 de enero de 2038 será más importante. ¿Qué no te gusta? pues sólo tienes que relajarte y elegir en esta lista tu fecha del apocalipsis favorita. Por el momento, que tengáis buen fin de semana! ;)
Interesante reflexión. La verdad es que cuando empece en esto de la informatica el 2038 parecía que estaba lejos pero ya lo tenemos practicamente aqui encima.
ResponderEliminarTal vez los mayas sabian que se inventaria Unix pero se confundieron de fecha ;D
En algunos cisco, solo se puede configurar la fecha entre 1993 y el 2035. Lo interesante es que no muere el clock al pasar los segundos (ya lo probé), pero si alguien llega a cambiar la hora, nunca más podrá configurar el tiempo real.
ResponderEliminarUna entrada interesantísima. Gracias genio.
ResponderEliminarSanta Brígida de Suecia (1873)predijo:
ResponderEliminar“Cuando la fiesta de San Marcos, caiga en la Pascua, la fiesta de San Antonio el día de Pentecostés, y la de San Juan en Corpus Christi, todo el mundo gritará: ‘¡Ay’”. En 2038, la fiesta de san marcos (25 de Abril) coincidira con domingo de pascua: http://www.divvol.org/recursos/fecha_pascua.htm
Yo crei que el "AY" era por el fin del mundo, pero ahora veo que es porque se nos descuadraran las computadoras!!
vengo del futuro:
ResponderEliminar2014 (en referencia a los comentarios del 2012) y la mayoria de los programas y software o todos estan programados en C.
lo cual quiere decir que en 2038 habra el verdadero fin del mundo, debido que ahora 2014 dependemos 100% de la tegnologia, solo queda esperar y dejarle este trabajo a la gente del futuro...
...Sise puede evitar claro...
Encerio vienes del futuro? Wow perdome pero si tu vonieras del futuroby dices que en 2038 si se acabara el mundo tu ya estarías muerto(a) no?
Eliminary ha esperar si no que pasa he nada grave
ResponderEliminarno pasara nada, ya mucha gente usa los sistemas de 64bits lo cual es mucho mejor que los de 34bits a si que no se preocupen, no pasara nada, pues si no ya tenemos a john titor con nosotros xD
ResponderEliminaruna pregunta si los sistemas de 32bit se van en el 2038 por causas ya conocidas....¿Las Bios no sufrirían lo mismo? o asi como los sistemas de 64bit hay Bios de 64bit.......
ResponderEliminar