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 intervista 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: un orologio hardware (noto come RTC o Real Time Clock) alimentato da una pila interna di durata decennale. É l’orologio “del BIOS” letto dal sistema operativo all’atto dell’avvio per 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) 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 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 (che a prima vista potrebbe sembrare banale ma che banale non è) per i sistemi GNU/Linux è stata approfondita nel numero 191 della rivista, con un articolo sul protocollo NTP.

Potrebbero interessarti anche...