Mentre la risposta di Joel è corretta, in realtà è un po 'più complicata.
La prima cosa che deve essere presa in considerazione (e mi concentrerò solo sui PC qui) è che ci sono diversi orologi in un computer e ognuno ha il suo uso.
Il più popolare e più facile da capire è l' orologio in tempo reale . È fondamentalmente un chip con dentro un semplice orologio. Di solito hanno lo stesso tipo di cristalli di quarzo degli orologi standard e di solito hanno una batteria per tenere il tempo quando il computer è spento. Il problema con loro è che non sono molto precisi, come si può vedere dai link di Syntech. Il cristallo 32.768 kHz è troppo lento per qualsiasi cronometraggio su sistemi moderni i cui processori sono nella gamma megahertz e gigahertz.
Qui arriviamo al punto successivo: ci sono orologi interni usati per misurazioni e conteggi alla rovescia precisi.
Un semplice orologio è un timer intervallo programmabile . Ciò che fa è attendere un certo periodo di tempo e quindi inviare un interrupt alla CPU. Quando la CPU riceve l'interrupt, interromperà tutto ciò che sta facendo e tenderà al compito che ha generato l'interrupt. In questo modo la CPU non deve controllare costantemente se qualcosa è stato fatto. Invece può concentrarsi su altri lavori e fare in modo che il PIT lo dica al termine del lavoro. Il PIT utilizza una sorgente di clock a 1.193182 MHz ed è quindi molto più preciso del semplice RTC.
Il prossimo interessante sistema di misurazione è il contatore dei timestamp . L'idea alla base è che possiamo ottenere misurazioni molto più precise del tempo usando la sorgente di clock del processore che usando vari timer di sistema. PIT ha un clock di 1.193182 MHz, ma anche i primi processori x86 avevano un clock molto più alto. Quindi avremo un timer che viene aggiornato dopo ogni set di cicli del processore. All'epoca i processori avevano orologi molto stabili e l'uso del TSC era un buon modo per effettuare misurazioni precise del tempo. L'uso di TSC comporta tuttavia una serie di problemi. Processori diversi hanno frequenze di tick diverse e misurano il tempo a velocità diverse. Successivamente, con l'avanzare della tecnica, abbiamo ottenuto processori moderni che possono cambiare la loro frequenza. Questo è un grosso problema, sicché l'orologio della CPU non è più costante e non possiamo usarlo per misurare il tempo.
Ed è per questo che ora abbiamo timer per eventi ad alta precisione . HPET utilizza un clock a 10 MHz ed è quindi più preciso di PIT. D'altra parte, la sua sorgente di clock non dipende dal clock della CPU e può essere utilizzato per misurare il tempo anche se il clock della CPU cambia. A differenza di PIT, che funziona come conto alla rovescia, HPET misura il tempo trascorso dall'accensione del computer e confronta il tempo corrente quando è necessaria un'azione.
Ci sono altre fonti di tempo disponibili per i computer che credo debbano essere menzionate. Alcuni computer sono collegati a orologi atomici e possono usarli per misurare con precisione il tempo.
Un'opzione meno costosa e molto più comune è utilizzare l'origine temporale esterna per calibrare le fonti temporali interne del computer. Ad esempio, i ricevitori GPS possono essere utilizzati per fornire misurazioni del tempo ad alta precisione, poiché i satelliti GPS hanno i loro orologi atomici interni.
Un'altra opzione che è meno comune del ricevitore GPS è l'uso di un ricevitore radio speciale che decodifica le informazioni sul tempo dal tempo mantenendo ad esempio le stazioni radio come DCF77. Tali stazioni temporali hanno le proprie fonti temporali di alta precisione e trasmettono la loro uscita via radio. Poiché le onde radio viaggiano alla velocità della luce, il ritardo è spesso insignificante.