Comment les ordinateurs gardent-ils le temps?

69

Comment les ordinateurs peuvent-ils indiquer l'heure et la date correctes à chaque fois?

À chaque fois que je ferme (arrête) l'ordinateur, toutes les connexions et tous les processus à l'intérieur s'arrêtent. Comment se fait-il que lorsque j'ouvre à nouveau l'ordinateur, il indique l'heure exacte exacte? L'ordinateur ne s'arrête-t-il pas complètement quand je le ferme? Y a-t-il des processus en cours d'exécution? Mais alors, comment mon ordinateur portable indique-t-il le bon moment lorsque je sors la batterie (et arrête ainsi de force tous les processus) et que je le redémarre au bout de quelques jours?

tatan
la source
3
Est - ce vraiment la question sur le sujet de ce site? Cela me semble plus approprié pour le super utilisateur .
Ilmari Karonen
3
@IlmariKaronen Cela semble être considéré comme une question à propos de "l'architecture informatique", si je comprends bien le terme.
PyRulez

Réponses:

96

Les ordinateurs ont une "horloge en temps réel" - un périphérique matériel spécial (contenant par exemple un cristal de quartz) sur la carte mère qui conserve l'heure. Il est toujours alimenté, même lorsque vous éteignez votre ordinateur. De plus, la carte mère est dotée d’une petite batterie qui alimente l’horloge même lorsque vous débranchez votre ordinateur. La batterie ne dure pas éternellement, mais elle durera au moins quelques semaines. Cela aide l'ordinateur à garder une trace de l'heure, même lorsque votre ordinateur est éteint. L'horloge en temps réel n'a pas besoin de beaucoup d'énergie, donc elle ne gaspille pas d'énergie. Si vous retirez la pile de l'horloge en plus de retirer la batterie principale et de débrancher le câble d'alimentation, l'ordinateur perdra le contrôle du temps et vous demandera de saisir l'heure et la date de redémarrage de l'ordinateur.

Pour en savoir plus, voir Horloge en temps réel et batterie CMOS et Pourquoi ma carte mère est-elle équipée d'une batterie ?

De plus, sur de nombreux ordinateurs, lorsque vous connectez votre ordinateur à une connexion Internet, le système d'exploitation va rechercher un serveur de temps sur le réseau et interroger le serveur de temps pour connaître l'heure actuelle. Le système d'exploitation peut l'utiliser pour régler très précisément l'horloge locale de votre ordinateur. Ceci utilise le protocole de temps réseau , également appelé NTP.

DW
la source
1
Un système d'exploitation peut-il définir l'heure du BIOS? Ce que je veux dire, c’est que si je réinitialise de force l’horloge matérielle, puis démarre et me connecte à NTP ou si je règle moi-même l’horloge, le BIOS le reconnaîtra-t-il?
Chat
1
Oui. Changer l'heure système du système d'exploitation définit l'horloge temps réel, autrement dit l'heure du BIOS. En interne, l’horloge ne compte que le nombre de secondes (ou millisecondes) depuis l’époque (généralement le 1er janvier 1970 à 00:00). Elle ne fait donc pas beaucoup de travail et peut fonctionner avec une pile de la taille d’une pièce pendant des années. Les fonctions de niveau supérieur du système d'exploitation convertissent ce nombre en une date / heure à afficher.
Chris Nava
Le cristal de quartz n'est pas le périphérique matériel spécial qui garde la trace du temps (bien que ce soit un composant).
user253751
1
@tatan non, le téléphone est alimenté tout ce temps par sa batterie. La plupart du temps, vous pouvez allumer votre ordinateur en appuyant sur son bouton d'alimentation alors que celui-ci est censé être éteint (mais pas déconnecté de la prise murale).
Ruslan
1
Je reformulerais le dernier paragraphe en remplaçant les ordinateurs par des systèmes d'exploitation. N'importe quel PC qui se connecte à Internet peut ne pas le faire, et inversement - c'est un travail de système d'exploitation de le faire, pas un PC (impliquant du matériel).
MatthewRock
13

Si vous retirez la batterie de la carte mère, l'ordinateur n'aura aucun moyen de lire l'heure.

C'est également le cas avec les téléphones mobiles. Si vous laissez un téléphone se décharger sans le recharger pendant plus de quelques semaines, il "oubliera l'heure" car la petite batterie auxiliaire est complètement déchargée et rien ne permet d'activer l'horloge en temps réel.

Vous pouvez essayer d'allumer un ancien téléphone portable si vous en avez un et le vérifier vous-même pour vous assurer qu'il "a oublié l'heure".

Voici à quoi ressemble la batterie. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

J'ai dû en acheter une à quelques reprises lorsque la mienne a commencé à durer moins d'un jour. J'ai dû configurer l'horloge à chaque fois que j'ai allumé le PC.

yoyo_fun
la source
3
De nombreux systèmes d'exploitation utilisent maintenant le protocole NTP (Network Time Protocol) et peuvent l'utiliser pour se réinitialiser automatiquement au démarrage. Ils n'ont donc pas besoin de l'horloge intégrée.
James Snell
3
@JamesSnell Cela va toutefois gâcher les horodatages dans les fichiers journaux ainsi que tout fichier modifié pendant le démarrage avant le démarrage de NTP.
Kasperd
@kasperd - les horodatages ne sont pas aussi importants que par le passé, car de nombreux systèmes utilisaient d'autres métadonnées (versioning). Examinez les journaux de démarrage des systèmes dépourvus de RTC, tels que les routeurs ou le Raspberry Pi, et notez-les lorsque l'heure a été mise à jour (et quoi). Cela peut être plus important dans les systèmes déconnectés, mais cela devient moins important avec le temps.
James Snell
1
@JamesSnell J'ai plusieurs ordinateurs monocarte capables d'exécuter un système d'exploitation x86 standard, mais ils ne disposent pas d'un RTC sauvegardé par batterie. En fin de compte, je leur ai demandé d'exécuter une pile réseau minimale absolue à partir d'un disque mémoire afin d'exécuter ntpdate avant que tout accès au disque ne se produise.
Kasperd
@ JamesSnell Oui, mais les ordinateurs portables et les tablettes se connectent au wifi après leur démarrage (du moins la plupart d'entre eux le font) et ne disposent pas d'une connexion Ethernet. La batterie est donc toujours utilisée sur presque tous les ordinateurs. De plus, les ordinateurs de bureau n’ont pas toujours accès à Internet. Certaines personnes ferment leurs routeurs la nuit ou n'utilisent pas Internet tout le temps si elles veulent jouer à des jeux ou regarder un film sans allumer le routeur. Tout le monde ne veut pas être connecté à Internet tout le temps.
yoyo_fun
2

Lorsque vous démarrez Windows, il accède directement à la mémoire de l'horloge temps réel (RTC) et utilise ses valeurs de date et d'heure pour définir la date et l'heure de l'ordinateur. Les interruptions du minuteur maintiennent l'heure de l'ordinateur lorsque Windows est en cours d'exécution. Un démon de temps dans Windows s'exécute environ une fois toutes les heures après le démarrage de Windows. Le démon de l'heure compare l'heure sous Windows à l'heure de l'heure RTC. Si les deux heures sont séparées par plus d'une minute, Windows modifie l'heure et la date pour les faire correspondre à l'heure RTC. Vous ne pouvez pas modifier l'intervalle de temps d'exécution du démon Time.

Si vous utilisez un service de synchronisation de l'heure, tel que l'outil TimeServ.exe inclus dans le Kit de ressources Windows NT 4.0, l'outil met à jour l'heure dans Windows et le RTC de l'ordinateur. Si le service de temps Windows s'exécute sur un ordinateur Windows 2000, le démon de temps de Windows ne peut pas s'exécuter environ une fois par heure après le démarrage de Windows.

Pour plus de détails, visitez ce lien: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx

Budhathoki Bijaya
la source
Intéressant. Alors, comment Windows détermine-t-il l'heure précise actuelle (en microsecondes) pour répondre à un appel d'un programme (par exemple, time.time () en python) et à quelle fréquence et comment met-il à jour sa valeur actuelle pour l'heure?
jacanterbury