El Problema del año   2000  ¿ ?
 


 El origen del problema


 

    En el caso concreto de las computadoras, se trate de puestos de trabajo aislados o en red o de equipos que actúen como servidores, la transición al año 2000 puede dar lugar a problemas tanto con el hardware como con el software básico.

    El Reloj de Tiempo Real (RTC ó "Real Time Clock"), es el elemento del hardware encargado de mantener permanentemente la fecha y la hora, utilizando para ello una pequeña batería cuando el computador está apagado.

    Este componente, evita el tener que registrar manualmente la fecha y la hora cada vez que se enciende el computador, como ocurría con modelos anteriores (modelos tipo "XT").

    Debido a la no previsión en aquellos tiempos, se emplean sólo 8 bits para el almacenamiento empaquetado de la fecha, lo que permite únicamente guardar los dos últimos dígitos. El registro de las otras dos cifras correspondientes a la centuria se hizo en la memoria no volátil (CMOS), concretamente en la dirección 32h, de forma estática; es decir siendo en principio de forma permanente "19".

    De esta forma la fecha sería siempre "19AA", independientemente de cual fuese el valor "AA" proporcionado por el RTC.

    Este es el problema que plantea el hardware en relación con el año 2000
 
 
 


El Sistema Básico de Entrada/Salida (BIOS)

    Conocido normalmente por sus siglas en inglés: BIOS (Basic Input/Output System), es el programa, residente normalmente en la memoria ROM, que controla las interacciones básicas entre los diferentes elementos del hardware y el software.

    Al encender el computador se empieza a ejecutar el BIOS y una de las acciones que lleva a cabo es el registro de la fecha del sistema, obteniéndola a través de la información contenida en la memoria CMOS y la proporcionada por el RTC.

    El comportamiento concreto de un BIOS puede variar según su fabricante y versión, pudiendo ocurrir que:

•Sea capaz de cambiar correctamente de fecha si el computador está encendido justo en la transición del año 1999 al 2000, pero que no lo haga en posteriores puestas en marcha.

•No sea capaz de proporcionar la fecha correcta en el paso de 1999 al 2000, pero que en cambio dé una fecha adecuada si se pone en marcha el equipo en cualquier otro momento ulterior.

•Mantenga una fecha correcta en cualquier circunstancia.

•Además de tener una fecha correcta sea capaz de actualizar directamente la memoria no volátil CMOS, bien automáticamente en tiempo real o al menos en la primera vez que se vuelva a encender el equipo después de 1999 y antes del 2079, bien mediante intervención manual.

    El motivo de considerar el año 2079 como límite es la forma en que manejan el año los API del MS-DOS. Concretamente lo hacen en forma relativa tomando como base el año 1980; es decir, por ejemplo, el año 1985 sería el año 5 y para su correcta identificación y expresión habría que sumarle 1980.

    En consecuencia, esta fecha límite de 1980 es la que se puede emplear en un sencillo algoritmo, que incorporado al BIOS dentro de la función "Leer la fecha del RTC", permitirá la citada actualización automática.

    En cuanto a la actualización por el BIOS de los dos dígitos de centuria en la memoria no volátil, no es realmente el método mejor, ya que requiere que se ejecute el BIOS para que tenga efecto, supuesto naturalmente que además el BIOS soporta la correspondiente función. Sin embargo la solución teóricamente más correcta de construir un RTC que fuese capaz de efectuar dicha actualización directamente, manteniendo por razones de compatibilidad el byte de centuria en las posiciones 32h o 37h, dependiendo de la arquitectura que se empleara en el equipo, resulta más cara y parece por ello haber sido desechada normalmente por la industria.

    Observaciones muy similares pueden hacerse en relación con la consideración del año 2000 como bisiesto.

    Estos son, por tanto, dos de los problemas que plantea una parte del software básico (firmware) en relación con el año 2000.
 
 



El Sistema Operativo (OS)

    Puede definirse como el programa de control del computador que planifica y ordena las tareas a ejecutar, gestiona los almacenamientos y maneja las comunicaciones con los componentes periféricos. Su componente principal, denominado el "núcleo" (kernel), permanece activo permanentemente. El Sistema Operativo, o en inglés OS (Operating System), presenta una interface básica de usuario, que aparece al menos cuando no hay ninguna aplicación ejecutándose, y con él deben ser capaces de "comunicarse" las aplicaciones para que puedan funcionar.

    Los Sistemas Operativos tienen su propio "reloj" de fecha y hora, que inicializan partiendo del BIOS o de los datos del RTC y la memoria no volátil CMOS.

    De forma similar a la comentada anteriormente en relación con el BIOS, en algunas versiones modernas, o mediante actualizaciones de las antiguas, diversos Sistemas Operativos son capaces de manejar correctamente su fecha, así como de eventualmente trasladar esos valores correctos a la memoria no volátil CMOS y, en último extremo, al BIOS, aún recibiendo inicialmente unos valores erróneos del BIOS o la citada memoria no volátil CMOS.

    De no ser así, este sería otro problema que plantearía el software básico.
 
 


Las Redes de Área Local (LAN)


 

    La existencia, hoy en día habitual, de LAN (Local Area Network) puede complicar aún más el problema, ya que la actualización de la fecha en los Puestos de la red es posible se realice directamente desde el Servidor de la misma, con lo que una perfecta adecuación del computador de un puesto resulta inútil, salvo que eventualmente trabaje de forma aislada, si no lo está también el correspondiente Servidor, al que son aplicables las consideraciones hechas en puntos anteriores. En sentido inverso, si no se adecua el computador del puesto de trabajo, confiando en que el proceso de conexión con el Servidor proporcionará una fecha correcta, y en algún momento del año 2000 o posteriores el computador del puesto de trabajo se arranca sin conexión a la red, casi con seguridad al menos la fecha del RTC será errónea.
 
 
 



Prueba Sencilla:


 

1.Cambie la fecha y hora a: 12/31/99 11:59:00pm
2.Apague su computador y espere al menos 1 minuto
3.Encienda su computador y entre al BIOS setup
4.Verifique que la fecha reportada alli sea: 1/1/2000
5.Cambie la fecha y la hora a: 2/28/2000 11:59:00pm
6.Apague su computador y espera al menos 1 minuto
7.Encienda su computador y entre al BIOS setup.
8.Verifique que la fecha reportada alli sea: 2/29/2000
9.Vuelva a poner la fecha y la hora correcta actual.
 

    Si las horas y fechas reportadas por su computador, coinciden con las del numeral 4 y 8, significa que pasó la prueba de hardware.