El «Efecto 2038» es un error que, en cierta medida, se parece al del «Año 2000» tan mentado en 1999. Este error en el tiempo de codificación basado en arquitecturas de 32 bits, podría provocar un grave fallo en todos los sistemas para enero de 2038.
¿Otra vez el alarmismo del Efecto 2000?
Aunque era algo que ya se conocía, en 1999 mucha gente entró en «pánico» cuando las noticias y los periódicos no dejaban de hablar del Efecto 2000. También conocido como Y2K, este término se refería a un bug que podría haber afectado a los sistemas más antiguos que codificaban el año en dos dígitos, por lo que la llegada de 2000 y los «00» adicionales iban a interpretarse, según los más alarmistas, como 1900 y ese hecho desataría un caos informático.
Pero finalmente llegó el 1 de enero de 2000 y el mundo entero comprobó que el problema no era tan grave ni mucho menos. Los aviones no se cayeron del cielo, ni hubo un apagón masivo en las empresas de suministro de electricidad y en definitiva todos esos temores acumulados, pasaron a engrosar la enorme lista de las leyendas urbanas.
En la actualidad muchos lo recuerdan como algo que fue realmente amplificado por los medios de comunicación y por parte del gobierno que hizo una campaña bastante exagerada, fatalista y falta de información veraz.
Puede ser demasiado pronto para pensar en ello y por esta razón, no se sabe mucho del tema, pero al igual que sucedió con el tema del «Año 2000», dentro de 22 años nos enfrentaremos a algo similar, un fenómeno que se conoce como el Efecto 2038.
¿Qué es el Efecto 2038?
El estándar IEEE 1003, también conocido como POSIX, es en realidad una serie de normas que regulan algunas de las interfaces de los sistemas operativos y se definen para crear aplicaciones multiplataforma. Entre dichas normas están las que se usan para medir el tiempo POSIX de los sistemas de 32 bits; es decir, el reloj utilizado por estos sistemas.
El reloj que tienen muchos ordenadores no es más que un contador que se incrementa con cada segundo que pasa a partir de una fecha de referencia que es el 1 de enero de 1970. De esta manera, para saber día, mes, año, hora, minutos y segundos, se realiza una resta continua, por lo que el tiempo se mide como el número de segundos que han pasado desde que comenzó el conteo.
El problema de los 32 bits es que al ser un sistema binario, solo se pueden llegar a contar 2.147.483.648 (2 elevado a la potencia 31) segundos, ni uno más, porque se terminan las posibilidades y esto representa aproximadamente unos 68 años.
Esto quiere decir que a partir del 1 de enero de 1970, que es la hora “cero”, solo pueden sumársele 2.147.483.648 segundos con signo positivo, pero cuando se agoten se pasará a los números negativos.
El cálculo exacto dice que el martes 19 de enero de 2038 a las 03:14:07 UTC, los ordenadores con 32 bits (al cambiar de signo) comenzarán a contar la hora 2.147.483.648 segundos antes de la fecha de referencia, por lo que saltarían al 13 de diciembre de 1901.
¿Qué software y sistemas son vulnerables al Efecto 2038?
Casi cualquiera que utilice un sistema de 32 bits, lo que en la actualidad abarca desde los sistemas de transporte a los de telecomunicaciones. La lista es demasiado larga para enumerarlos, pero sí que podría ser un grave problema, si no se toman las medidas necesarias para solventarlo con anticipación.
¿Cual es la solución?
No existe una forma sencilla de arreglar este problema basándonos en las combinaciones existentes de las CPU/SO. Si se cambiara la definición del time_t con el fin de usar 64 bits, se rompería con la compatibilidad binaria que se tiene con el software, el almacenamiento de datos y en general, con cualquier elemento relacionado con la representación “binaria” del tiempo. Y si cambiáramos el time_t por un entero de 32 bits que careciera de signo, esto afectaría a los programas que basan sus cálculos en las diferencias de tiempos.
La gran mayoría de los sistemas operativos que usan arquitecturas de 64 bits emplean enteros de 64 bits para el time_t. La migración total a estos sistemas se está implementando y la perspectiva es que se completa con la antelación suficiente, antes de 2038. Usar un entero basado en 64 bits retrasaría la fecha “problemática” de cambio de signo unos 2.90 billones de años, lo que significa más de 220 veces la edad del Universo.
Una reflexión final
En realidad se está previendo el tema con mucho tiempo y seguramente jamás se llegará a tener el problema del efecto 2038. Los avances en tecnología son extremadamente rápidos y si todo se resume en cambiar de 32 a 64 bits, tenemos tiempo de sobra para preverlo y que nadie tenga que dar un “salto en el tiempo” y volver al principio del siglo XX.