<img src="https://queue.simpleanalyticscdn.com/noscript.gif?collect-dnt=true" alt="" referrerpolicy="-when-downgrade"> El problema del año 2038 (Efecto Y2K38)
NeoTeo
Ariel Palazzesi

El problema del año 2038 (Efecto Y2K38)

El problema del año 2038 (Efecto Y2K38)

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 sistemas de 32 bits.

El Problema del año 2038 (Efecto Y2K38)

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 número de bits que puede manejar el microprocesador de turno define en buena medida la potencia del sistema 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 poderosas que las de 8. Sin embargo, puede que sean las responsables de una supuesta catástrofe informática conocida como “el efecto 2038”.

giphy.webp
En algo más de 68 años la variable se “desbordará”

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 mantener tu 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 dato time_t - entero de 32 bits con signo - para guardar el valor de 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, que expresa 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). Como puede 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á”.

El problema del año 2038 (Efecto Y2K38)
2038

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 los programas escritos en el lenguaje de programación C. La mayoría del software actual cae dentro de ese grupo y fallarán, dependiendo de como estén implementados, como si estuviesen funcionando en 1901 ó 1970, en vez de en 2038.

A pesar de ser un problema bien conocido (los programadores conocen esta limitación desde la implementación misma del lenguaje C), no existe una forma sencilla de solucionar este problema. Podría cambiarse el tipo de variable empleado por un entero de 32 bits sin signo, pero esto haría que todos los programas que hacen cálculos con diferencias de tiempo fallen. Y reescribir por completo esas aplicaciones es un trabajo enorme, que a veces ni siquiera puede encararse. También puede creerse (erróneamente) que, utilizando una variable de 64 bits podríamos salir del paso, pero al igual que con las de 32 bits sin signo, se perdería la compatibilidad binaria con el resto del software.

Es posible que la plataforma “PC” (o lo que sea que utilicemos como ordenador personal en 2038) esté exenta del problema. Actualmente los procesadores de 64 bits están convirtiéndose en la norma, y la mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para time_t. La migración a estos sistemas seguramente estará lista mucho antes del “Día D”. Sin embargo, varios cientos de millones de pequeños y anónimos dispositivos que hoy funcionan con núcleos de 32 bits todavía estarán dando vueltas en 2038, y ocasionarán algún que otro problema. A diferencia de los SO como Linux o Windows, los programas de muchos de esos sistemas son escritos por particulares o empresas pequeñas, que quizás ni siquiera sigan en el negocio dentro de 30 años, por lo que difícilmente reescriban sus aplicaciones.

Seguramente te estés preguntando cuándo volveremos a estar en esta situación si, en lugar de una variable de 32 bits, utilizamos una de 64. La diferencia entre el rango que pueden manejar es tan grande, que el efecto se retrasaría unos 290 mil millones de años. Si logramos pasar sin problemas el 2038, el próximo evento de este tipo ocurriría el 4 de diciembre del año 292 277 026 596 a las 15:30:08 UTC, arruinándoles el domingo a más de cuatro s de ordenadores.

Visto en

wikipedia

avatar

Si no lo he entendido mal, solo los ordenador de 32bits sufriran este problema no? o alomejor no he pillado nada, pero de todas formas me suena a cuento chino para alarmar a la gente como paso con el "efecto 2000" y lo mas que provoco fue un Capitulo de los Simpson.

avatar
avatar

Según su "año" de 365.6 días, en realidad seria el efecto Y2K37, y pasaría (si no me equivoco) el viernes 25 de diciembre de 2037 a la 22:26:07.

Según el año real, 365.25 días, el resto de las cuentas están bien. :P

avatar
avatar

Jajajajjajaja, como en el 2038, como creen que en el 2038 se van a seguir usando los ordenadores actuales, jajaja, y además para esa fecha ya tendrás cosas más actuales con el firmware actualizado, yo programo micros y ese problema me lo tomaron para solucionar en un parcial en la UBA, es un problema conocido y fácil de solucionar para los que sabemos :-P Ya que no necesitamos más de 32 bits para crear variables de 64, hay técnicas para ello.

avatar
avatar

NO importa si se sigue implementando C se debrá actualizar a 64 bits, pero estos ordenadores de 32 bits siguen molestando y por ellos no se puede imponer definitvamente los 64 bits, sin embargo se podría con unos cambios en el nucleo cambiar la fecha base

avatar
avatar

la extraña seducción de lo apocalíptico bajo cualquier forma en estos tiempos. Casi como si pensar en ello..........................

avatar
avatar

Ni más ni menos que le paso a la dinosaurica arquitectura de los 8 bits y 16 bits le sucedera a la de 32 bits, y posiblemente para el 38 los 64 bits sean un cuento para asustar chamacos.

Ah sí, 128 bits, ahora nos parecera un exceso, pero estoy seguro que para ese tiempo será un estandard para que la holored transfiera holoconferencias desde marte y la ingente cantidad de datos nos saturen los sentidos.

Quizá para ese tiempo ni siquiera dependamos tanto de las máquinas.

avatar
avatar

Jejejejeje de risa. Pero alguien tiene intención de vivir en la tierra todavía????. Estaremos utilizando sistemas de 32bits???. Bueno si te descuidas todavía estarás actualizando windows vista cada dos por tres

avatar
avatar

El tema es simple: en el 2038... AL IGUAL hay pc's de 32 bits.

avatar
avatar

si, para el 4 de diciembre del año 292 277 026 596 estaremos utilizando sistemas de exacubit s y no ocurrira el problema, quiza historicamente 2038 sera la ultima vez que la humanidad sufrira ese problema.

¿porque cuatro s de ordenadores para el año 292 277 026 596?

avatar
avatar

Derepente ya no existiran procesadores normales sino hibridos como los GPGPU es decir chips de video integrados con procesadores standares y voila ... segundo derepente cuda se salteara todos esos problemas corriendo los antiguos software en una especie de virtualizacion ...

avatar
avatar

Ya para ese día muy posiblemente la computación como la conocemos hoy haya evolucionado tanto que esto no supondrá el mínimo problema.

avatar
avatar

Es verdad. Me enferman las noticias que hablan de hechos de aca a más de 20 años. No tienen IDEA de cómo será el mundo para esas fechas. No critico la intención de esta noticia, pero hay muchas otras (especialemnte provenientes de la NASA) que son totalmente innecesarias.

avatar
avatar

En el primer pie de foto indican lo siguiente:
"En algo más de 68 años la variable se “desbordará”"
lo correcto son 29 años (2038-2009), cuidado con esos detalles compañeros.

avatar
avatar

Con la foto, prefiero de lejos la edad de piedra, ya me tiene harto la tecnología!!!

avatar
avatar

en esos años estaremos conectados y viviremos en la "nube".

avatar
avatar

jeje... no hay de que preocuparse!!
a mi me dijeron cuando era chico que en el año 2000 vamos a vivir en la luna y vamos a tener autos voladores y robots que nos hagan todos los trabajos. Quizas les podamos decir a nuestros robots que (apretando un boton) nos reescriban nuestros codigos de aplicaciones viejas para que funcionen hasta el año 3000 o mas si queremos!! No me imagino dentro de 38 años sin mi actual sistema de facturacion! que horror! je je je... El ser humano es un animal de costumbres...

avatar
avatar

En el 2038 ya va a existir la máquina del tiempo y alguien va a volver a 1970 a corregir el error...

avatar
avatar

Tan facil como cambiar la fecha del reloj ¿no?

avatar
avatar

Podrian hacer notas mas serias no ?! acaso no piensan que para esa epoca todos vamos a tener 64 bits ( quiza se retrase un poco con la reseción y las netbooks pero la mayoria va a tener en el 2030 maquinas de 128 bits y ya seguramente estaran laburando en las de 256 si no es que toda la tecnologia cambia a otra cosa y dejamos de contar en bits...

ACASO NO SABEN QUE 30 AÑOS SON SIGLOS PARA LA COMPUTACIÓN????!!!!

avatar
avatar

es cierto... John Titor no mentia en ese aspecto... Windows basado en ASCII muchiisimo mas rapido... jaja deben visitar las paginas de ese tipo loco... que solo se transtorno por el viaje jaja...

avatar
avatar

Realmente lo del efecto del año 2000 tenia mas de mistico que de otra cosa, sin embargo, lo del "efecto 2038" esta explicado y tiene una base cientifica, podria llegar a ser un gran problema llegado el momento ya que muchas de las maquinas, que por ejemplo, se usan en las industrias sons sistemas de 32bits que estan pensadas para durar decadas e incluso dependiendo del mantenimiento realizado y de la politica de la propia empresa, podrian durar lustros.

Tambien pienso que llegado el momento, si no se ha hecho nada por evitarlo el problema sera facilmente aislado, ya que la mayoria de PC, mainframe, etc.... deberian de estar funcionando bajo sistemas de 64bits, de hecho mi actual equipo es de 64bits ^^.

En fin, tampoco hay que preocuparse demasiado conciendo de antemano el problema, lo malo seria que nos pillara por sorpresa.


Por cierto, lo del john titor ese, vaya broma no? podria haberse llamado tambien John connitor xD

avatar
avatar

iba super emocionado leyendo la noticia hasta llegue a los parrafos finales donde me dieron a cononcer que esto nunca iba a ocurrir....

avatar
avatar

Otra vez con las chaquetas mentales del Y2K?

avatar
avatar

dentro de 30 años no voy a poder usar mi 486 ?
espero tener algo mejor dentro de 30 años
y espero ke dentro de 30 años estemos arriba de los 64b

avatar
avatar

ese dia en 2038, nos vamos a despertar todos de.....¡MATRIX!

avatar
avatar

Oigan, no se dan cuenta, si hubieran mandado a alguien al pasado en el 2038, ya no tendriamos el error corregido? :p:p:p:p:p:p

Me hace acordar, una cojudez que vi una vez en un blog, dijeron que habian construido una maquina del tiempo, pero no se usaria hasta en un futuro remoto donde regresarian a la epoca que se construyo (2005 o 2007 no recuerdo), la pregunta para esos genios seria, no creen que si el tiempo no es una sucesion sino una condicion, al instante de construir dicha maquina, no apareceria su hombre del futuro, jajajajajaja, que ilusos.

avatar
avatar

en ese tiempo estaremos usando pc a base de atomos y celulas y cosas extrañas

avatar
avatar

seguro que el microsoft, sacara un parche y ya esta todo actualuizado, saludos

avatar
avatar

Para esa fecha pienso estar jubilado.

avatar
avatar

Muy interesante, de verdad. He ido leyendo este tema por más de 20 sitios, entre foros, blogs y sitios web, en los que he encontrado la explicación sobre este problema pero con mucha matemática y, en la mayoría de los casos, copiado de Wikipedia. Aquí perdí mis dudas. Gracias.

avatar

Debes iniciar sesión para publicar un comentario.