In che modo i computer tengono traccia del tempo?


69

In che modo i computer sono in grado di comunicare sempre l'ora e la data corrette?

Ogni volta che chiudo il computer (lo spengo) tutte le connessioni e i processi all'interno si arrestano. Come mai quando apro di nuovo il computer indica l'ora esatta esatta? Il computer non si spegne completamente quando lo spengo? Ci sono ancora alcuni processi in esecuzione? Ma allora come fa il mio laptop a comunicare l'ora corretta quando estraggo la batteria (e quindi interrompo forzatamente tutti i processi) e lo riavvio dopo qualche giorno?


3
Questa domanda è davvero in tema per questo sito? Mi sembra più appropriato per Super User .
Ilmari Karonen,

3
@IlmariKaronen Questo sembra contare come una domanda su "architettura del computer", se capisco correttamente il termine.
PyRulez,

Risposte:


96

I computer hanno un "orologio in tempo reale" - un dispositivo hardware speciale (ad esempio, contenente un cristallo di quarzo) sulla scheda madre che mantiene l'ora. È sempre alimentato, anche quando si spegne il computer. Inoltre, la scheda madre ha una piccola batteria che viene utilizzata per alimentare il dispositivo orologio anche quando si scollega il computer dall'alimentazione. La batteria non dura per sempre, ma durerà almeno alcune settimane. Questo aiuta il computer a tenere traccia dell'ora anche quando il computer è spento. L'orologio in tempo reale non ha bisogno di molta energia, quindi non sta sprecando energia. Se si estrae la batteria dell'orologio oltre a rimuovere la batteria principale e scollegare il cavo di alimentazione, il computer perderà la cognizione del tempo e ti chiederà di inserire l'ora e la data al riavvio del computer.

Per saperne di più, vedi Orologio in tempo reale e batteria CMOS e Perché la mia scheda madre ha una batteria .

Inoltre, su molti computer, quando si collega il computer a una connessione Internet, il sistema operativo troverà un time server sulla rete e interrogherà il time server per l'ora corrente. Il sistema operativo può utilizzarlo per impostare con precisione l'orologio locale del computer. Questo utilizza il Network Time Protocol , chiamato anche NTP.


1
Un sistema operativo può impostare l'ora del BIOS? Ciò che intendo è che, se ripristino forzatamente l'orologio hardware, quindi eseguo l'avvio e mi connetto a NTP o imposto l'orologio, il BIOS lo riconoscerà?
gatto

1
Sì. La modifica dell'ora del sistema operativo imposta l'orologio in tempo reale, ovvero l'ora del BIOS. Internamente l'orologio conta solo il numero di secondi (o millisecondi) dall'epoca (di solito il 1 gennaio 1970 00:00), quindi non fa molto lavoro e può essere alimentato da una batteria a bottone per anni. Le funzioni di livello superiore nel sistema operativo svolgono il compito di convertire quel conteggio in una data / ora da visualizzare.
Chris Nava,

Il cristallo di quarzo non è lo speciale dispositivo hardware che tiene traccia del tempo (sebbene sia un componente).
user253751

1
@tatan no, il telefono è alimentato tutto il tempo dalla sua batteria. È quasi lo stesso che puoi accendere il tuo PC premendo il pulsante di accensione quando il PC dovrebbe essere stato spento (ma non scollegato dalla presa a muro).
Ruslan,

1
Rifarei l'ultimo paragrafo, cambiando i computer in SO. Qualsiasi PC che si connette a Internet potrebbe non farlo e viceversa: è compito del sistema operativo eseguire questa operazione, non i PC (che implicano l'hardware).
Matthew Rock

13

Se rimuovi la batteria dalla scheda madre, il computer non avrebbe modo di sapere l'ora.

Questo è anche il caso dei telefoni cellulari. Se lasci che un telefono si scarichi e non lo ricarichi per più di qualche settimana, "dimenticherà il tempo" anche perché la piccola batteria ausiliaria si scarica completamente e nulla si accende sull'orologio in tempo reale.

Potresti provare ad accendere un vecchio telefono cellulare se ne hai uno e controllalo tu stesso per vedere che "ha dimenticato l'ora".

Ecco come appare la batteria. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Ho dovuto comprarne uno alcune volte quando il mio ha iniziato a durare meno di un giorno. Ho dovuto configurare l'orologio ogni volta che ho acceso il PC.


3
Molti sistemi operativi ora usano NTP (Network Time Protocol) e possono usarlo per resettarsi automaticamente all'avvio, quindi non hanno bisogno dell'orologio incorporato.
James Snell,

3
@JamesSnell Ciò rovinerà comunque i timestamp nei file di registro e qualsiasi file modificato durante l'avvio prima dell'avvio di NTP.
Kasperd,

@kasperd - i timestamp in realtà non sono così importanti come una volta come molti sistemi usano altri metadati (versioning). Guarda i log di avvio da sistemi che non dispongono di un RTC come router o raspberry pi e si registrano quando il tempo è stato aggiornato (e cosa fare). Potrebbe essere più importante nei sistemi disconnessi, ma sta diventando meno importante nel tempo.
James Snell,

1
@JamesSnell Ho diversi computer a scheda singola in grado di eseguire un sistema operativo x86 standard, ma mancano di un RTC con batteria. Alla fine li ho fatti eseguire uno stack di rete minimo assoluto all'interno di un ramdisk per eseguire `ntpdate 'prima che avvenisse qualsiasi accesso al disco.
Kasperd,

@JamesSnell Sì, ma laptop e tablet si connettono al wifi dopo l'avvio (almeno la maggior parte di essi lo fa) e non hanno una connessione Ethernet, quindi la batteria è ancora in uso in quasi tutti i computer. Inoltre, i computer desktop non dispongono di Internet in qualsiasi momento. Alcune persone chiudono i router di notte o semplicemente non usano Internet per giocare o guardare un film e non accendere il router. Non tutti vogliono essere sempre connessi a Internet.
yoyo_fun,

2

Quando si avvia Windows, ottiene l'accesso diretto alla memoria del Real Time Clock (RTC) e utilizza i valori di data e ora per impostare la data e l'ora del computer. Gli interrupt del timer mantengono l'ora del computer quando Windows è in esecuzione. Un Time Daemon in Windows viene eseguito all'incirca una volta ogni ora dopo l'avvio di Windows. Time Daemon confronta l'ora in Windows con l'ora nell'RTC. Se le due volte sono distanti più di un minuto, Windows modifica l'ora e la data in modo che corrispondano all'RTC. Non è possibile modificare l'intervallo di tempo per l'esecuzione del Time Daemon.

Se si utilizza un servizio di sincronizzazione dell'ora, ad esempio lo strumento TimeServ.exe incluso nel Resource Kit di Windows NT 4.0, lo strumento aggiorna l'ora in Windows e RTC del computer. Se il servizio ora di Windows viene eseguito su un computer basato su Windows 2000, il Time Daemon in Windows non può essere eseguito circa un'ora ogni ora dopo l'avvio di Windows.

Per maggiori dettagli visita questo link: http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx


Interessante. Quindi, in che modo Windows determina l'ora esatta corrente (in microsecondi) per rispondere a una chiamata da un programma (ad esempio time.time () in Python) e con quale frequenza e in che modo aggiorna il valore corrente per il tempo?
Jacanterbury,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.