miércoles, 10 de febrero de 2010
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

El problema del año 2038 (Efecto Y2K38)

Por: Ariel Palazzesi  @  martes, 23 de junio de 2009  Nota vista 6970 veces

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.

¿te interesa?
48 -7
55 votos

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 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”.

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á”. Esto significa que exactamente a las 03:14:07 UTC del 19 de enero 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.

Quien sabe, quizás podríamos volver a la edad de piedra.

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 ocasionaran 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 bis, 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 usuarios de ordenadores.



Artículo Siguiente
Apple y el rechazo de C64 iPhone (Nostalgia)
Artículo Anterior
Nuevo retraso en el LHC (y van…)
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
  • El problema del año 2038 (Efecto Y2K38)
    Publicado: meneame.net,  24/06/2009 10:14:50
    "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."
Votos: 1 de 1
Niko
Niko
Niko
23/06/2009
16:23:10
#1   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.
     Responder 
Votos: 0 de 0
Matizilla
Matizilla
Matizilla
24/06/2009
3:13:15
#1   Estoy de acurdo con vos. Me parece puro amarillismo.
Lo que parecería que es el principal problema son los artefactos pqueños del hogar, pero para aquella epoca ya habremos renovado nuestros telefonos celulares, y no costará mucho actualizar los demas. Por ejemplo en aquella epoca no tendremos que instalar una nueva calefacción, simplemente cambiamos el termostato, tampoco tendremos problemas para ve peliculas porque usaremos Blu-ray o lo que esté de moda, etc.
     Responder 
Votos: 0 de 0
Hellraised
Hellraised
Hellraised
24/06/2009
4:58:31
#2   no pasa nada. hice los cambios necesarios y mi computador no hizo nada, es un semprom con windows xp ue :D
Cuento Chino
     Responder 
Votos: -1 de 3
Steven
Steven
Steven
23/06/2009
16:46:26
#2   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
     Responder 
Votos: 3 de 3
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
23/06/2009
17:08:24
#1   Fail!
Nos equivocamos al considerar las aproximadamente 6 horas que se suman cada año (y que cada 4 se "solucionan" agragando un dia a febrero en los años bisiestos) como ".6" en lugar de ".25".
Gracias por el aviso. Corrigiendo y en penitencia por burros. :)
     Responder 
Votos: 0 de 2
juancruz90
juancruz90
juancruz90
23/06/2009
17:04:59
#3   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.
     Responder 
Votos: 0 de 2
JuXnCxRlOs
JuXnCxRlOs
JuXnCxRlOs
23/06/2009
17:08:45
#4   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
     Responder 
Votos: 1 de 1
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
23/06/2009
17:11:31
#1   Tienes razón. Pero es posible que el problema mas grande esté en las aplicaciones que si bien son masivas, no son facilmente actualizables, como los ordenadores embebidos en radares, equipos de medicina, industria, etc, que en muchos casos tienen una vida util de decadas...
     Responder 
Votos: 1 de 1
matt
matt
matt
23/06/2009
17:11:30
#5   la extraña seducción de lo apocalíptico bajo cualquier forma en estos tiempos. Casi como si pensar en ello..........................
     Responder 
Votos: 1 de 1
Derkeshtai
Derkeshtai
Derkeshtai
23/06/2009
17:19:04
#6   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.
     Responder 
Votos: 0 de 0
JURJAR
JURJAR
JURJAR
23/06/2009
17:26:15
#7   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
     Responder 
Votos: 0 de 0
fuegopazion
fuegopazion
fuegopazion
23/06/2009
17:41:02
#8   El tema es simple: en el 2038... AL IGUAL hay pc's de 32 bits.
     Responder 
Votos: 0 de 0
afdhdah
afdhdah
afdhdah
23/06/2009
18:19:14
#9   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 usuarios de ordenadores para el año 292 277 026 596?
     Responder 
Votos: 0 de 2
BioX
BioX
BioX
23/06/2009
19:28:20
#1   ¿porque cuatro usuarios de ordenadores para el año 292 277 026 596?

eso era un chiste y por lo visto no lo pescaste =P
     Responder 
Votos: 0 de 0
smodd
smodd
smodd
23/06/2009
18:20:29
#10   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 ...
     Responder 
Votos: 0 de 0
kiefer
kiefer
kiefer
23/06/2009
20:27:40
#11   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.
     Responder 
Votos: 0 de 2
Alush
Alush
Alush
23/06/2009
20:53:45
#12   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.
     Responder 
Votos: 0 de 4
Juan
Juan
Juan
23/06/2009
20:58:32
#13   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.
     Responder 
Votos: 0 de 0
Sebas
Sebas
Sebas
23/06/2009
21:15:15
#1   Se referia a 68 años, a partir de 1970......que es desde cuando comienzan a sumar los segundos los sistemas...en 68 años colapsa el sistema...el tema que ya pasaron 39...jejeje...
     Responder 
Votos: -2 de 2
Juan
Juan
Juan
23/06/2009
21:42:08
#1   Ahh ok, a esa redacción le falto específicar eso. Si lo lees así se entiende que es a partir de ahora y no de 1970.
       
Votos: 1 de 1
Kiltro
Kiltro
Kiltro
23/06/2009
20:59:56
#14   Con la foto, prefiero de lejos la edad de piedra, ya me tiene harto la tecnología!!!
     Responder 
Votos: 1 de 1
grafick
grafick
grafick
23/06/2009
21:20:54
#15   en esos años estaremos conectados y viviremos en la "nube".
     Responder 
Votos: -1 de 1
jsmith
jsmith
jsmith
23/06/2009
21:38:49
#16   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...
     Responder 
Votos: 4 de 4
XBM
XBM
XBM
23/06/2009
21:57:50
#17   En el 2038 ya va a existir la máquina del tiempo y alguien va a volver a 1970 a corregir el error...
     Responder 
Votos: 0 de 2
d
d
d
23/06/2009
22:24:53
#1   pues tendríamos exactamente el mismo problema que se puede ver desde 2 puntos de vista:
1- Entramos en un ciclo infinito el cual finalmente tendrá que ser reseteado: puesto que mandamos a alguien al pasado, el cual corrige el error. Al corregir el error, en el futuro ya no tenemos necesidad de mandar a alguien al pasado, por lo que en el pasado nuevamente se equivocan y vuelta a tener que mandar a alguien.
2- En nuestra línea temporal quedará la grande... En otra línea temporal con el error corregido, otra cosa ocurrirá; quizás aún más grave.


De todas maneras, y respondiendo de forma seria, si bien es cierto existe equipamiento médico médico que puede verse des-ajustado, tendrá (de aquí a 20 años más) dos posibles opciones: o actualizan o lo arreglan xD
     Responder 
Votos: 0 de 2
wnuken
wnuken
wnuken
23/06/2009
22:43:36
#2   De ser así, el error nunca habria existido, pues 1070 ya paso..... mmmm esta conversaión tampoco XDDDDDDDDD
     Responder 
Votos: 0 de 2
XBM
XBM
XBM
23/06/2009
22:59:15
#3   Si alguien vuelve a 1970 y previene este futuro error, se abriría una nueva línea de tiempo que no tendría ese problema, pero nosotros seguiríamos con él. No queda otra que volver todos a 1970, prevenir el error y en esa línea volver todos al año 2038 XD
     Responder 
Votos: -1 de 1
Cristian
Cristian
Cristian
24/06/2009
0:44:34
#1   Se podría volver exactamente al punto de origen?(me refiero a las coordenadas espacio-temporales) o llegarías a otro 2038?
       
Votos: 0 de 0
Cristian
Cristian
Cristian
23/06/2009
22:59:30
#18   John Titor no mentía.

http://es.wikipedia.org/wiki/John_Titor

www.johntitor.com
     Responder 
Votos: 0 de 0
obviusman
obviusman
obviusman
23/06/2009
23:18:47
#19   Tan facil como cambiar la fecha del reloj ¿no?
     Responder 
Votos: -2 de 4
Drasky Vanderhoff
Drasky Vanderhoff
Drasky Vanderhoff
24/06/2009
2:02:51
#20   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????!!!!
     Responder 
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br
 

Síguenos en TwitterAgréganos a tu RSS

 

Autores