Come viene eseguito il calcolo del tempo da un computer?

6

Ho bisogno di aggiungere una determinata funzione a un modulo in un dato progetto per quanto riguarda il calcolo del tempo. Per questo caso specifico sto usando Java e leggendo la documentazione della classe Date che ho scoperto, il tempo è calcolato in millisecondi a partire dal 1 gennaio 1970, 00:00:00 GMT. Penso che sia lecito ritenere che esista una "data di inizio" simile in altre lingue, quindi suppongo che l'implementazione specifica in Java non abbia importanza.

Come viene eseguito il calcolo del tempo dal computer? Come fa a sapere esattamente quanti millisecondi sono passati da quella data "data e ora di inizio" alla data e ora correnti?

    
posta Jorge Mendoza 29.10.2012 - 23:47
fonte

3 risposte

11

I think it's safe to assume there is a similar "starting date" in other languages so I guess the specific implementation in Java doesn't matter.

Praticamente tutti i computer usano questa o una variazione simile di tempo Unix .

How is the time calculation performed by the computer? How does it know exactly how many milliseconds have passed from that given "starting date and time" to the current date and time?

In genere, un computer include uno o più dispositivi hardware che contano il tempo, in genere basati su un oscillatore a cristalli (lo stesso utilizzato nella maggior parte dei clock moderni). Esistono variazioni / standard server per tali dispositivi:

Questi dispositivi timer di solito hanno una batteria separata che consente loro di continuare a funzionare quando il computer è spento. Il computer interagisce con loro in due modi:

  • Quando si avvia, legge l'ora corrente dal dispositivo
  • A intervalli regolari, il dispositivo causa un interrupt hardware gestito dal sistema operativo per eseguire qualsiasi attività dipendente dal tempo .

Tuttavia, gli oscillatori a cristallo usati nei timer hardware hanno una precisione limitata e nel tempo si allontanano dal tempo corretto. Per le applicazioni in cui è importante avere un orologio preciso (o semplicemente per evitare il fastidio di doverlo aggiustare manualmente), i computer sincronizzare regolarmente il loro tempo tramite il Network Time Protocol con un server orario, che è collegato (direttamente o indirettamente) ad un precisione orologio atomico .

    
risposta data 30.10.2012 - 00:15
fonte
5

Ci sono 60 secondi in un minuto, 60 minuti in un'ora e 24 ore in un giorno. Sono 86400 secondi al giorno. Moltiplicalo per 1000 e hai il numero di millisecondi in un giorno.

Ora dovresti essere in grado di calcolare il numero di giorni dall'inizio del tempo (1 gennaio 1970, 00:00:00 GMT). Moltiplicalo per il numero di millisecondi in un giorno e ora hai il numero interno che l'orologio del computer memorizza per rappresentare la data / ora corrente.

    
risposta data 29.10.2012 - 23:58
fonte
3

Il BIOS memorizza il tempo per te nell'orologio di sistema . Il sistema operativo fornisce una funzione di sistema per recuperare l'ora nel loro formato (sistemi Unix, corrisponde al framework Java, Windows utilizza una diversa Epoch - la data di inizio-- ma il Java Runtime traduce il risultato in modo che corrisponda a quanto previsto.

    
risposta data 29.10.2012 - 23:59
fonte

Leggi altre domande sui tag