Efecto 2038

imlea

Bovina de la luna
#1
Holis... Nuevamente yo... Les traigo otro tema que, desde que lo vi en youtube, me dio por investigarlo un poco mas a fondo... Les traigo algo que se me hizo interesante compartirlo...


El "Efecto 2038" es un bug que, en cierta medida, se parece al "Efecto 2000" del que tanto se habló en 1999. Este bug, relativo a la codificación del tiempo en los sistemas de 32 bits, nos emplaza a un posible fallo de sistemas en enero del año 2034.


Aunque era algo que se conocía, en el año 1999 mucha gente entró en "modo pánico" cuando los informativos y periódicos no paraban de hablar del Efecto 2000. También conocido como Y2K, bajo este término se escondía un bug que podía afectar a sistemas muy antiguos que codificaban el año en dos dígitos; por tanto, la llegada del año 2000 y su "00" podría interpretarse como el año 1900 y se podría desatar el caos absoluto.

Llegó el 1 de enero del 2000 y, finalmente, no pasó nada grave. Los aviones no cayeron del cielo ni se produjo un apagón masivo en el suministro eléctrico, las empresas invirtieron en solventar el problema y todos los temores se quedaron en una especie de leyenda urbana que muchos recordamos como algo del pasado que, realmente, quedó amplificado por los medios de comunicación y algunas campañas gubernamentales algo exageradas.

Quizás sea demasiado pronto para pensar en ello y, por este motivo, no se conozca mucho pero el "Efecto 2000" no es el único bug relativo a las fechas que existe y, de hecho, dentro de 24 años nos enfrentaremos a algo parecido en lo que se conoce como el Efecto 2038.


El Efecto 2038
Dudo mucho que en el año 2038 nos enfrentemos a un apocalipsis como el que algunos anunciaban con la llegada del año 2000 aunque, en cierta medida, estamos hablando de un problema parecido.

En la norma IEEE 1003, también conocido como POSIX, se definen una serie de estándares que normalizan una serie de interfaces para sistemas operativos y, de esta forma, poder crear aplicaciones multiplataforma. Entre los estándares que define POSIX encontramos la medida de tiempos de los sistemas de 32 bits; es decir, el reloj que usan estos sistemas.

El reloj que tienen muchos computadores no es más que un contador de segundos que se va incrementando con cada segundo que pasa. La gracia de este sistema es que se toma una fecha como referencia y, cuando se quiere saber la hora, se mira el contador de segundos y se hace la traslación a formato de fecha tradicional (día, mes, año, hora, minutos y segundos). Concretemente, la fecha de referencia es el 1 de enero de 1970 y, por tanto, el tiempo se mide como el número de segundos que han pasado desde dicha referencia.


En un sistema de 32 bits, la variable del tiempo se codifica como un entero con signo y, por tanto, se deja un bit para almacenar el signo y los 31 bits restantes para codificar los segundos. Si hacemos el cálculo de 2 elevado a 31 obtenemos como resultado 2.147.483.648 segundos que es un equivalente a unos 68 años.



Dicho de otra forma, cuando lleguen las 03:14:07 UTC del 19 de enero de 2038, el contador de segundos llegará al máximo número que puede almacenar en positivo y, si se sigue incrementando, se saldrá del rango de los números positivos y, por desbordamiento, entrará en el intervalo de los números negativos. Tras llegar al número 2.147.483.647, el contador se trasladará, en el intervalo de un segundo, al -2.147.483.648 y la fecha del sistema pasará al 13 de diciembre de 1901.

Este gran salto al pasado, evidentemente, no es algo simple y es un bug que se mira con cierta atención porque, al igual que ocurría en 1999, nadie sabe a ciencia cierta los efectos que podría tener en los sistemas desplegados.

¿Son los 64 bits una solución al problema? Obviamente, migrar hacia sistemas de 64 bits elimina el problema pero existen muchos sistemas antiguos (por ejemplo basados en COBOL) que sí requerirán soluciones (o migraciones)

En los sistemas de 32 bits solo se utiliza un bit para almacenar el signo del número de segundos (positivo) y los 32 bits restantes se ocupan para contar los segundos que han pasado. Si hacemos una potencia como 2 elevado a la 31 el resultado será de 2,147,483,648 segundos, lo que una vez hecha la conversión arroja 68 años. En pocas palabras, los relojes de las computadoras tienen una capacidad máxima de 68 años a partir de 1970, por lo que en 2038 podrían colapsar.


El problema para las empresas es que esto va a implicar altos costos porque no es tan simple que una empresa que utiliza miles o millones de computadoras actualice sus sistemas; solo hay que ver el caso actual de Windows XP, un sistema operativo muy bueno pero ya obsoleto, porque Microsoft ha decidido quitarle el soporte, aún cuando es un sistema muy utilizado todavía a nivel mundial.

Espero que les haya interesando... Gracias por su tiempo.



 

luthar

Bovino de la familia
#2
no sera una exageracion como la vez anterior,donde nos amanaron con un caos global y lo unico que páso fue el monton de parodias y pesimas peliculas con ese tema.
saludos!!
 

p412

Bovino maduro
#3
Dificilmente una computadora en uso llegara al 2038...

Y seguramente desde el 2035 se tomaran medidas, es muy probable que para 20120, todo este considerado

Saludos
 

Foviac

Bovino de la familia
#4
no sera una exageracion como la vez anterior,donde nos amanaron con un caos global y lo unico que páso fue el monton de parodias y pesimas peliculas con ese tema.
saludos!!
Efectivamente, una exageración, el chiste como siempre es espantar a la gente por que aunque ese problema existe cualquier programador sabe que se puede resolver con un parche, problemas de desbordamiento existen en muchos entornos y con corregir el código basta.
 

r0ck3

Bovino maduro
#5
es programación, con un simple parchesito lo quitan pues en vez de estar programado a contar desde 1970 lo programas para contar desde 2038 y así dura otros 68 años, aun que en realidad no creo que en 2038 que de alguna computadora funcional de 32 bits. saludos!
 
#9
pues que se preocupen lo que no ha emigrado de windows millenium a windows xp 64.....


Osea... todos los buracratas de Mexico o_O


si han visto las pcs que tiene en los MPs o en las oficnas del seguro social... aunque ahi el sistema colapsa todos los viernes a las 2... y nos vemos el martes.... XD
 

NESTOR25

Bovino maduro
#11
para el 2038 me supongo que habran nuevos sistemas operativos y maquinas mas sofisticadas, no creo que pase algo mas que actualizarse.
 

ingmaoshingown

Bovino de la familia
#12
Las máquinas de 32 bits poco a poco se reemplazan por equipos de 64, para mis virtuales en un lapso de 4 años trabajaba con linux de 32 y por el momento estoy migrando a 64. Cuando llegue el 2030 se hará lo mismo que el y2k y nada pasó.
 
#16
Como dicen muchos compañeros, en ese tiempo ya tendremos otras computadoras con mejores capacidades que las que tenemos actualmente ademas con diferentes sistemas operativos que los que tenemos, desde que salio el Windows Vista a la fecha que ya hay Windows 10 (En forma beta) cuanto tiempo paso?? Relativamente muy poco, así que ese problema quedara en el pasado.
Ademas que faltan 23 años.

Saludos y como siempre es buena tu información.
 
Arriba