Se habla de que en un PeCé hay tres relojes. Uno interno, otro en la BIOS (que es lo que hace que nuestra máquina arranque y sea capaz de cargar el sistema operativo para que éste se encargue del resto) y el del sistema operativo. Los dos últimos realmente son "incrementadores", es decir, miden la cantidad de lapsos de tiempo que ha pasado desde que obtuvieron una fecha y hora dadas. Y sabiendo lo que duran esos lapsos, calculan la actual.
Los primeros PeCés no almacenaban la fecha cuando eran apagados. Ésta debía ser introducida cada vez que se arrancaba el sistema, lo que provocaba que algunos usuarios protestasen y los demás echaran pestes.
En 1984 con el lanzamiento del modelo AT, se incorporó un chip que además de proveer de la función de reloj disponía de memoria no volátil (CMOS) capaz de almacenar la fecha y la hora y de seguir funcionando mientras el PC esté apagado. Siempre y cuando no te hubiesen vendido una pila de "todo a cien" que se gastara en cuatro días. Este reloj se conoce como RTC o Real Time Clock (Reloj de tiempo real) y como decía, sigue funcionando cuando apagamos la máquina gracias a la famosa pila.
El chip en cuestión utiliza para almacenar la fecha una codificación conocida como BCD ( Decimal codificado en binario) mediante la que se pueden guardar dos dígitos (0, 1, 2,...) en una "posición de memoria". Por lo que utiliza una posición para cada componente de la fecha y la hora. Es decir el día, el mes... y ¡el año! :( En esa "posición" puede almacenar años de 00 a 99.
Así que IBM decidió tomar cartas en el asunto y ya que el chip no estaban muy dispuestos a cambiarlo, se dispuso de otra posición de la memoria para los dos primeros dígitos del año, más conocidos en el argot como dígitos (o byte) de "siglo". Pero lo cierto es que tampoco fue para tirar cohetes, porque se limitaron a que en esa posición se almacenase un "19" para que este fuera adjuntado a la hora (nunca mejor dicho) de formar el año con cuatro dígitos.
Así que la responsabilidad de hacer ese "montaje" se quedó para la BIOS, lo que no pareció importarle mucho pues se limitaba a pegar el "19" tal cual al comienzo de cada año. ¿Qué ocurrirá al llegar el 31 de diciembre de 1999 a las 23:59:59?... ¡De todo! Pero en la mayoría de los equipos el RTC incrementará el año que pasará de 99 a 00 y al ponerle delante el "19", la fecha resultante será el 1 de Enero de 1900. Esto ocurre en el reloj interno, pero veamos como se propaga dicha fecha hasta llegar a los programas que corren en el PC.
Cuando encendemos nuestro electrodoméstico favorito, la BIOS entra en funcionamiento y una de las primeras cosas que hace es leer la fecha almacenada en el RTC. Posteriormente arranca el sistema operativo, y éste a su vez lee la fecha que ahora tiene la BIOS para a partir de ahí, manejarla él mismo. Esto supone que en el momento en que el año pase a ser "19" + "00", éste no se va a enterar, y tanto el sistema como los programas que leen la fecha de él van a funcionar correctamente (sólo en este sentido, tampoco vamos a exagerar). No obstante, hay unos pocos programas que leen la fecha y/o la hora directamente del RTC o de la BIOS. En especial si necesitan realizar controles horarios o gestionar eventos que sucedan más rápido de lo que las rutinas del sistema operativo necesitan para devolver dicha información.
Pero el gran problema surge cuando volvemos a encender el ordenador que hemos apagado por primera vez con una "fecha 2000". Lo que sucede queda muy lejos de lo deseado. Volvamos a repasar el proceso descrito antes...
La BIOS lee la fecha que ha quedado guardada en el reloj interno. Recordemos que el RTC incrementa el "99" a "00", pero no toca para nada el "19". La BIOS normalmente coge por un lado el 19 y por otro el 00 por lo que lo normal es que monte un 1900. A continuación el sistema operativo lee la fecha, pero el DOS da por sentado que no había PeCés antes de 1980, así que si encuentra una fecha anterior pone siempre el 4 de Enero de 1980 que será la fecha con la que trabaje nuestro ordenador ese día (sí, el 4, pero si quieres saber por qué pregunta en tioguillermo@microsoft.com, yo no tengo ni idea).
Otras BIOS "saben" que sólo pueden manejar fechas entre un rango que suele ir de 1980 a 1999 y si encuentran una fecha diferente la suelen ajustar a 1999. Con lo que esos PeCés vivirán el resto de sus vidas "atrapados en el tiempo" como en la película. Volviendo al uno de Enero cada 31 de Diciembre del eterno 1999.
Como veis, el principal problema está en el RTC, aunque quien puede arreglarlo es la BIOS y tal vez por esa costumbre de matar al mensajero, algunos le culpan a esta. Lo cierto es que las primeras BIOS que cumplen con el 2000 se empezaron a vender en 1997, pese a lo que muchos dicen por ahí. Es más, en 1998 se siguen vendiendo equipos con BIOS que NO cumplen. El hecho de tener un Pentium II con las últimas modernidades no te garantiza nada. También existen algunas BIOS recientes que a pesar de fallar en el momento de la transición al año 2000, son capaces de detectarlo al reiniciar el PC y corregirlo, por lo que el riesgo se limita a programas que lean directamente del reloj interno (hay poquísimos) en el periodo que pase antes de apagarlo por primera vez en el año 2000.
Lo que sí que tienes que tener claro es que si tienes información de valor que corra riesgo de ser vulnerada, o si tienes programas instalados con una licencia temporal NO PRUEBES A VER QUE PASA. Es muy corriente que digan por ahí que para probar si tu PC está "impactado" cambies la fecha a mano a un minuto antes del 2000 y esperes a que llegue. Si lo haces asegúrate de que tienes copia de todo lo que te interesa...