Orologi e tempi di Linux

Tutti i sistemi Unix-like  (e GNU/Linux non fa eccezione) mantengono due distinti tipi di tempo: il calendar time e il process(or) time. Il primo (detto anche tempo assoluto) riporta il numero di secondi trascorsi dalla mezzanotte del 1 gennaio 1970. Il processor time è il tempo di esecuzione dei processi e viene impiegato, ad esempio, per i calcoli necessari allo schedulatore e da specifici comandi come ps, top e time. Eseguiamo in un terminale il comando time ls e osserviamo l’output.
Dopo l’elenco di file e cartelle noteremo 3 righe:

real 0m0.002s
user 0m0.001s
sys 0m0.001s

La prima (real) indica il tempo impiegato per l’esecuzione del comando, la seconda (user) il tempo per l’esecuzione in user space e la terza (sys) il tempo utilizzato nello spazio kernel per eseguire le chiamate di sistema (syscall). Il tempo reale è sempre maggiore degli altri due poiché tiene conto di una possibile attesa (sleep states) di un I/O nella quale il process/execution time è molto basso rispetto al calendar time. Sui sistemi multi-core è possibile, però, che il tempo di esecuzione superi il calendar time: questo è dovuto al fatto che il processo è stato in grado di eseguire lavori in parallelo tra i vari core. Così come GNU/Linux mantiene due tipi di tempo, un computer (desktop o portatile che sia) presenta due distinti orologi. Il primo è un orologio hardware (noto come RTC o Real Time Clock) alimentato da una pila interna di durata decennale. Quest’ultimo è l’orologio “del BIOS” letto dal sistema operativo all’atto dell’avvio del PC utile ad impostare il proprio orologio (il secondo) detto orologio di sistema. Per interrogare l’orologio del sistema operativo è sufficiente utilizzare il comando date senza argomenti (man date se volete dare uno sguardo al manuale) ottenendo così:

mer 13 feb 2019, 14.49.57, CET

La sigla CET indica il Central European Time. A seconda del mese (ora legale o meno) potremmo trovare anche la sigla CEST, Central European Summer Time, 1 ora avanti rispetto al CET. Per l’orologio hardware il comando da utilizzare è sudo hwclock (per poterlo eseguire sono necessari i permessi dell’amministratore) che impartito senza argomenti mostrerà l’output:

2019-02-13 14:56:52.451641+1:00

I due orologi possono differire tra di loro poiché subito dopo l’avvio ognuno va avanti per i fatti propri. In genere quello hardware è molto più preciso perché presenta una deriva bassissima, ma questo non vuol dire che periodicamente non necessiti di una regolazione. Per mostrare l’orologio di sistema e l’orologio hardware è sufficiente impartire date; hwclock con l’output su due righe:

mer 13 feb 2019, 15.06.28, CET
2019-02-13 15:06:28.936029+1:00

La gestione del tempo a prima vista potrebbe sembrare banale, ma che banale non è. Chi vuole approfondire può scoprire il protocollo NTP.

Joker

Joker

Informatico per passione, divulgatore per attitudine. Nato da papà Commodore e mamma Sinclair, dal lontano ‘97 scrivo, correggo e coordino a vario titolo magazine e siti tech editi da una nota casa editrice. E non mi sono ancora stufato.

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *