Bien que la réponse de Joel soit correcte, en réalité, c'est un peu plus compliqué.
La première chose qui doit être prise en considération (et je vais me concentrer uniquement sur les PC ici) est qu'il y a plusieurs horloges dans un ordinateur et chacune a sa propre utilisation.
L' horloge en temps réel est la plus populaire et la plus facile à comprendre . Il s'agit essentiellement d'une puce qui possède une horloge simple à l'intérieur. Ils ont généralement le même type de cristaux de quartz que les horloges standard et ont généralement une batterie pour garder le temps lorsque l'ordinateur est éteint. Le problème avec eux est qu'ils ne sont pas très précis, comme on peut le voir sur les liens de Syntech. Le cristal 32,768 kHz est trop lent pour tout chronométrage sur les systèmes modernes dont les processeurs sont dans la gamme mégahertz et gigahertz.
Nous arrivons ici au point suivant: il y a des horloges internes utilisées pour des mesures précises du temps et des comptes à rebours.
Une horloge simple est une minuterie d'intervalle programmable . Ce qu'il fait, c'est attendre un certain temps, puis envoyer une interruption au CPU. Lorsque le CPU reçoit l'interruption, il arrête tout ce qu'il fait et s'occupe de la tâche qui a généré l'interruption. De cette façon, le CPU n'a pas à vérifier en permanence si quelque chose est fait. Au lieu de cela, il peut se concentrer sur d'autres travaux et demander au PIT de lui dire quand le travail est terminé. Le PIT utilise une source d'horloge à 1,193182 MHz et est donc beaucoup plus précis qu'un simple RTC.
Le prochain système de mesure intéressant est le compteur d'horodatage . L'idée derrière cela est que nous pouvons obtenir des mesures beaucoup plus précises du temps en utilisant la source d'horloge du processeur qu'avec différents temporisateurs système. PIT a une horloge de 1,193182 MHz, mais même les premiers processeurs x86 avaient une horloge beaucoup plus élevée. Nous aurons donc un minuteur qui est mis à jour après chaque quantité définie de cycles de processeur. À l'époque, les processeurs avaient des horloges très stables et l'utilisation de TSC était un bon moyen de faire des mesures de temps précises. L'utilisation de TSC pose cependant un certain nombre de problèmes. Différents processeurs ont des taux de tick différents et mesurent le temps à différentes vitesses. Plus tard, à mesure que la techniologie progressait, nous avons obtenu des processeurs modernes qui peuvent changer leur fréquence. C'est un problème majeur, car l'horloge du processeur n'est plus constante et nous ne pouvons pas l'utiliser pour mesurer le temps.
Et c'est pourquoi nous avons maintenant des minuteries d'événements de haute précision . HPET utilise une horloge de 10 MHz et est donc plus précis que PIT. D'un autre côté, sa source d'horloge ne dépend pas de l'horloge du CPU et elle peut être utilisée pour mesurer le temps même si l'horloge du CPU change. Contrairement à PIT, qui fonctionne comme un compte à rebours, HPET mesure le temps depuis la mise sous tension de l'ordinateur et compare l'heure actuelle à l'heure où une action est nécessaire.
Il existe d'autres sources de temps disponibles pour les ordinateurs qui, je crois, doivent être mentionnées. Certains ordinateurs sont connectés à des horloges atomiques et peuvent les utiliser pour mesurer précisément le temps.
Une option moins coûteuse et beaucoup plus courante consiste à utiliser une source de temps externe pour calibrer les sources de temps internes de l'ordinateur. Par exemple, les récepteurs GPS peuvent être utilisés pour fournir des mesures de temps de haute précision, car les satellites GPS ont leurs horloges atomiques internes.
Une autre option moins courante que le récepteur GPS consiste à utiliser un récepteur radio spécial qui décode les informations de temps des stations de radio de temps telles que DCF77 par exemple. Ces stations de temps ont leurs propres sources de temps de haute précision et transmettent leur sortie par radio. Comme les ondes radio se déplacent à la vitesse de la lumière, le retard est souvent insignifiant.