¿Cómo hacen un seguimiento de tiempo las computadoras?

69

¿Cómo pueden las computadoras decir la hora y la fecha correctas cada vez?

Cada vez que cierro la computadora (la apago) todas las conexiones y procesos se detienen. ¿Cómo es que cuando vuelvo a abrir la computadora indica la hora exacta exacta? ¿La computadora no se apaga por completo cuando la apago? ¿Todavía hay algunos procesos ejecutándose en él? Pero entonces, ¿cómo dice mi computadora portátil la hora correcta cuando saco la batería (y, por lo tanto, detengo por la fuerza todos los procesos) y la reinicio después de unos días?

tatan
fuente
3
¿Es esta pregunta realmente sobre el tema de este sitio? Parece más apropiado para Super User para mí.
Ilmari Karonen
3
@IlmariKaronen Esto parece contar como una pregunta sobre "arquitectura de computadora", si entiendo el término correctamente.
PyRulez

Respuestas:

96

Las computadoras tienen un "reloj en tiempo real": un dispositivo de hardware especial (por ejemplo, que contiene un cristal de cuarzo) en la placa base que mantiene la hora. Siempre está encendido, incluso cuando apaga la computadora. Además, la placa base tiene una pequeña batería que se utiliza para alimentar el dispositivo del reloj incluso cuando desconecta la computadora de la alimentación. La batería no dura para siempre, pero durará al menos unas pocas semanas. Esto ayuda a la computadora a realizar un seguimiento del tiempo, incluso cuando su computadora está apagada. El reloj en tiempo real no necesita mucha energía, por lo que no está desperdiciando energía. Si saca la batería del reloj además de quitar la batería principal y desconectar el cable de alimentación, la computadora perderá la noción del tiempo y le pedirá que ingrese la hora y la fecha cuando reinicie la computadora.

Para obtener más información, consulte Reloj en tiempo real y batería CMOS y ¿Por qué mi placa base tiene una batería ?

Además, en muchas computadoras, cuando conecta su computadora a una conexión a Internet, el sistema operativo buscará un servidor de hora en la red y consultará la hora actual del servidor de hora. El sistema operativo puede usar esto para configurar con mucha precisión el reloj local de su computadora. Esto usa el protocolo de tiempo de red , también llamado NTP.

DW
fuente
1
¿Puede un sistema operativo establecer la hora del BIOS? Lo que quiero decir es que si reinicio por la fuerza el reloj del hardware, luego arranco y conecto a NTP o configuro el reloj yo mismo, ¿el BIOS lo reconocerá?
gato
1
Si. Cambiar la hora del sistema del sistema operativo establece el reloj de tiempo real, también conocido como la hora del BIOS. Internamente, el reloj solo cuenta la cantidad de segundos (o milisegundos) desde la Época (generalmente el 1 de enero de 1970 a las 00:00), por lo que no está haciendo mucho trabajo y puede funcionar con una batería del tamaño de una moneda durante años. Las funciones de nivel superior en el sistema operativo hacen el trabajo de convertir ese recuento a una fecha / hora para mostrar.
Chris Nava
El cristal de cuarzo no es el dispositivo de hardware especial que realiza un seguimiento del tiempo (aunque es un componente).
user253751
1
@tatan no, el teléfono está alimentado todo el tiempo por su batería. Es casi lo mismo que puede encender su PC presionando el botón de encendido cuando se supone que la PC se apagó (pero no se desconectó de la toma de corriente).
Ruslan
1
Reformularía el último párrafo, cambiando las computadoras a sistemas operativos. Cualquier PC que se conecte a Internet podría no hacerlo, y viceversa: es el trabajo del sistema operativo hacer esto, no las PC (lo que implica hardware).
MatthewRock
13

Si quita la batería de la placa base, la computadora no tendría forma de decir la hora.

Este es también el caso de los teléfonos móviles. Si deja que un teléfono se descargue y luego no lo recargue durante más de unas pocas semanas, también "olvidará la hora" porque la pequeña batería auxiliar se descarga por completo y no se enciende nada en el reloj en tiempo real.

Puede intentar encender un teléfono móvil viejo si tiene uno y verificarlo usted mismo para ver si "olvidó el tiempo".

Así es como se ve la batería. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Tuve que comprar uno varias veces cuando el mío comenzó a durar menos de un día. Tenía que configurar el reloj cada vez que encendía la PC.

yoyo_fun
fuente
3
Muchos sistemas operativos ahora usan NTP (Protocolo de tiempo de red) y pueden usar eso para reiniciarse automáticamente al inicio, por lo que en realidad no necesitan el reloj incorporado.
James Snell
3
@JamesSnell Sin embargo, eso estropeará las marcas de tiempo en los archivos de registro, así como cualquier archivo modificado durante el arranque antes de que se inicie NTP.
kasperd
@kasperd: las marcas de tiempo realmente no son tan importantes como solían ser, ya que muchos sistemas usan otros metadatos (versiones). Mire los registros de arranque de los sistemas que carecen de un RTC como los enrutadores o el raspberry pi y registran cuándo se actualizó la hora (y qué hacer). Puede ser más importante en sistemas desconectados, pero con el tiempo se está volviendo menos importante.
James Snell
1
@JamesSnell Tengo varias computadoras de placa única capaces de ejecutar un sistema operativo estándar x86, pero carecen de un RTC respaldado por batería. Al final, hice que ejecutaran una pila de red mínima absoluta dentro de un disco RAM para ejecutar 'ntpdate' antes de que tuviera lugar cualquier acceso al disco.
kasperd
@JamesSnell Sí, pero las computadoras portátiles y las tabletas se conectan a wifi después de arrancar (al menos la mayoría de ellas lo hacen) y no tienen conexión a Ethernet, por lo que la batería todavía está en uso en casi todas las computadoras. Además, las computadoras de escritorio tampoco tienen Internet todo el tiempo. Algunas personas cierran sus enrutadores por la noche o simplemente no usan Internet todo el tiempo si quieren jugar o ver una película y no encienden el enrutador. No todos quieren estar conectados a internet todo el tiempo.
yoyo_fun
2

Cuando inicia Windows, obtiene acceso directo a la memoria del reloj de tiempo real (RTC) y utiliza sus valores de fecha y hora para establecer la fecha y hora de la computadora. Las interrupciones del temporizador mantienen el tiempo de la computadora cuando Windows se está ejecutando. Un Time Daemon en Windows se ejecuta aproximadamente una vez cada hora después de que se inicia Windows. Time Daemon compara la hora en Windows con la hora en el RTC. Si las dos veces están separadas por más de un minuto, Windows cambia la hora y la fecha para que coincida con el RTC. No puede cambiar el intervalo de tiempo para que se ejecute el Time Daemon.

Si utiliza un servicio de sincronización horaria, como la herramienta TimeServ.exe incluida con el Kit de recursos de Windows NT 4.0, la herramienta actualiza la hora en Windows y el RTC de la computadora. Si el Servicio de hora de Windows se ejecuta en una computadora con Windows 2000, el Time Daemon en Windows no puede ejecutarse aproximadamente una vez cada hora después de que se inicie Windows.

Para obtener más detalles, visite este enlace: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx

Budhathoki Bijaya
fuente
Interesante. Entonces, ¿cómo determina Windows el tiempo preciso actual (en microsegundos) para responder a una llamada de un programa (por ejemplo, time.time () en python) y con qué frecuencia y cómo actualiza su valor actual para el momento?
jacanterbury