Ciencia, tecnologia, electronica, informacion

sábado, 22 de agosto de 2015

El archivo Y2K38 y su efecto en el 2038



Nuestra sociedad actual se rige y se mueve gracias a toda clases de dispositivos, programas, aplicaciones y sistemas operativos que nos ayudan a gerenciar, facilitar y administrar las actividades mas sencillas hasta las mas importantes y delicadas de nuestra sociedad, desde jugar un juego en nuestra computadora, hasta guía y ubicacion gps de  vuelos comerciales, operaciones bancarias, telecomunicaciones,  operaciones financieras y control sobre armas nucleares, si estos sistemas que hoy en dia son pilares para la existencia, éxito  y progreso de la humanidad. No podríamos imaginarnos las consecuencias y alcances catastróficos que le harían al mundo tal cual como lo conocemos.


En el campo de la informática, el problema del año 2038 o Y2K38, podría provocar una falla masiva  en parte del software en ese año. El problema afecta a los programas que usen la representación del tiempo basada en el sistema  POSIX, que se encarga en contar el número de segundos transcurridos desde el 1 de de enero de 1970 a las 00:00:00. Cada segundo que pasa en el ordenador posee un código único y propio.

Esta representación es un estándar en los sistemas tipo Unix y también en los programas escritos para muchos otros OS debido al gran alcance del lenguaje de programación C. El problema solo afecta a los equipos de 32 bits ya que usan el tipo de dato time_t que guarda el contador de segundos que es un entero de 32 bits, siendo así, realizando varios cálculos, este contador solo puede llevar  un rango de números entre -2.147.483.648 y 2.147.483.647 (los códigos asignados a cada segundo mencionados anteriormente). Si todo esto es cierto, en el año 2038, el 19 de enero a las 03:14:07 a.m. UTC , este contador llegara a su ultimo valor(2.147.483.647) de vida, un segundo después todo el sistema se caerá y esto provocara que de un salto al valor -2.147.483.648 y esto causara el mas grande fallo informático haciendo que todas las personas en sus computadoras estén en 1901.

En la siguiente imagen se presenta una animación del efecto Y2K38:


Como se puede ver cuando el reloj de arriba muestra el tiempo según el sistema POSIX y el de abajo el tiempo real, cuando el reloj de arriba llega al año 2038 el 19 de enero a las 03:14:07, un segundo después este se reinicia y vuelve a 1901.

El problema hace que los dispositivos Android (al menos algunas versiones) se bloqueen y no reinicien cuando se cambia la fecha a esa fecha. Para comprobar esto se puede ir a la configuración de fecha y hora en el dispositivo, y al tratar de cambiar la fecha y hora al 2038; se encontrará con la sorpresa de que solo le permite cambiarlo hasta el 31 de diciembre de 2037.1

En los dispositivos iOS 7 y Windows Phone el sistema permite cambiar la fecha hasta el 1 de enero de 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 o 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.