El problema de 2038

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 4 de agosto de 2022; la verificación requiere 1 edición .

El problema del año 2038 en la informática  se espera fallas de software en la víspera del 19 de enero de 2038 . Este problema afectará a los programas y sistemas que utilizan la representación de tiempo estándar POSIX ( tiempo UNIX ), que es la cantidad de segundos que han transcurrido desde la medianoche del 1 de enero de 1970 . Esta representación del tiempo es el estándar para los sistemas operativos similares a Unix (debido al uso ubicuo del lenguaje C ).

Descripción

Los sistemas más antiguos de 32 bits (antes de mediados de la década de 1990) usaban un tipo de datos time_tpara almacenar segundos como un entero con signo de 32 bits. La última fecha que se puede representar en este formato en el estándar POSIX  es 03:14:07, martes 19 de enero de 2038 UTC .

Un tiempo posterior hará que dicho campo de datos se vuelva negativo, por lo que se repetirá el tiempo (porque los programas pueden interpretar un número negativo como un tiempo en 1970 o 1901, dependiendo de la implementación). Como resultado, cualquier cálculo que incluya una fecha posterior al 19 de enero de 2038 puede provocar que el programa se bloquee o que se produzcan cálculos erróneos.

No existe una solución simple al problema Y2038 para las combinaciones existentes de sistemas operativos y software de aplicación. Cambiar la definición de tipo time_ta 64 bits romperá la compatibilidad binaria de los programas, los datos almacenados existentes y cualquier otra cosa que use una representación binaria del tiempo. Y la conversión time_ta un número entero sin signo puede romper los programas que calculan las diferencias de tiempo.

La mayoría de los sistemas operativos para arquitecturas de 64 bits ya utilizan una representación de enteros de 64 bits en formato time_t. La transición a tales arquitecturas ya está en marcha y se espera que se complete para 2038.

Además de esto, el formato de 32 bits time_ttambién se incluye en las especificaciones de formato de archivo, como el omnipresente formato de archivo ZIP . El formato de archivo puede existir durante muchas generaciones de computadoras, lo que significa que el problema Y2038 seguirá siendo relevante.

La introducción del formato de 64 bits introduce una nueva fecha de "bucle invertido": dado que el valor máximo será de segundos, ocurrirá en unos 292 000 millones de años [1] , que es mucho más que la edad del Universo .

Microsoft Windows

El problema del año 2038 también es relevante para las versiones de Windows de 32 bits , ya que una parte importante del propio sistema operativo y una gran cantidad de programas están escritos en C / C++ . Los desarrolladores de Windows afirman [2] que han reparado la mayor parte del código afectado por este problema, pero no pueden ofrecer ninguna garantía sobre el software de terceros.

linux

Desde la versión 5.6 del kernel de Linux (kernel 5), el problema se ha resuelto, pero a partir de 2020, hay una gran cantidad de software que aún debe repararse [3] .

mysql

El popular DBMS de MySQL y SQL Server para el tipo TIMESTAMP tiene algunas limitaciones: los valores que contienen la fecha y la hora en TIMESTAMP están en el rango de '1970-01-01 00:00:01 UTC' a '2038-01 -19 03:14 :07 UTC' [4] .

Véase también

Notas

  1. segundos es aproximadamente años
  2. Problema del año 2038 - GES en Windows 7 - Inicio del sitio - Blogs de MSDN . Fecha de acceso: 5 de enero de 2011. Archivado desde el original el 9 de julio de 2011.
  3. Michael Larabel. Linux 5.6 es el primer kernel para sistemas de 32 bits listo para funcionar después del año 2038 (29 de enero de 2020). Consultado el 13 de febrero de 2020. Archivado desde el original el 6 de febrero de 2020.
  4. Desarrollador de MySQL . Consultado el 9 de enero de 2013. Archivado desde el original el 9 de enero de 2013.