Red Hot Cyber

Sicurezza informatica, cybercrime, hack
news, e altro ancora
  • English

19 gennaio 2038 finisce il tempo di Unix. Comprendiamo l’Epoch Date.

Autore: Brolli Massimiliano
Data Pubblicazione: 30/11/2021

Spesso chi ha lavorato con i sistemi UNIX, ne avrà sentito parlare. In questo articolo vogliamo analizzare l’epoch date, comprendere come funziona, i suoi limiti e quale è stata la sua genesi.

Ci dobbiamo catapultare alla fine degli anni 60, precisamente nel 1969 nei laboratori Bell, quando Dennis Ritchie e Ken Thompson rilasciarono la prima versione del sistema operativo UNIX.

Che cos’è l’epoch date

In informatica, una data epoch, è un timestemp dal quale un computer misura la data di sistema. La maggior parte dei sistemi informatici determina il tempo come un numero che rappresenta i secondi rimossi da una particolare data e ora arbitraria.

Advertisements

Ad esempio, Unix e POSIX misurano il tempo come il numero di secondi trascorsi da giovedì 1 gennaio 1970 00:00:00 UT, un momento noto come l’epoch Unix.

L’epoca di Unix è la mezzanotte del 1 gennaio 1970. È importante ricordare che questo non è il “compleanno” di Unix: negli anni ’60 esistevano versioni approssimative del sistema operativo. Invece, la data è stata programmata nel sistema all’inizio degli anni ’70 solo perché era conveniente farlo, secondo Dennis Ritchie, uno degli ingegneri che hanno lavorato su Unix presso i Bell Labs all’inizio.

Uno sguardo tecnico

Ogni giorno nel mondo Posix/Unix, viene trattato come se contenesse esattamente 86.400 secondi e le prime versioni dell’ora Unix avevano un numero intero a 32 bit che aumentava a una frequenza di 60Hz, che era la frequenza del clock di sistema sull’hardware dei primi sistemi Unix.

Di conseguenza, il valore 60Hz appare ancora in alcune interfacce software. Anche l’epoca differiva dal valore attuale. La prima edizione del Manuale del programmatore Unix datata 3 novembre 1971 definisce il tempo Unix come

Advertisements

“il tempo dalle 00:00:00, 1 gennaio 1971, misurato in sessantesimo di secondo”.

Come indicato dalla definizione citata sopra, la scala temporale Unix era originariamente intesa come una semplice rappresentazione lineare del tempo trascorso da un’epoca.

Un intero con segno a 32 bit può rappresentare numeri interi compresi tra -2147483648 e 2147483647.

Limiti dell’epoch date a 32 bit

Poiché Unix Time inizia da 0, i valori Unix Time negativi tornano indietro nel tempo dall’epoch time ei numeri positivi vanno avanti nel tempo. Ciò significa che Unix Time va dal valore Unix Time di -2147483648 o 20:45:52 GMT del 13 dicembre 1901 al valore Unix Time di 2147483647 o 3:14:07 GMT del 19 gennaio 2038.

Queste date rappresentano l’inizio, la preistoria e la fine del tempo Unix.

Advertisements

infatti, la fine di Unix Time avverrà il 19 gennaio 2038 03:14:07 GMT. Il 19 gennaio 2038 alle 03:14:08 GMT tutti i computer che utilizzano ancora Unix Time a 32 bit andranno in overflow. Questo è noto come il “problema dell’anno 2038”.

Alcuni credono che questo sarà un problema più significativo della data 2000. La soluzione per il problema dell’anno 2038 è memorizzare Unix Time in un intero a 64 bit. Questo è già in corso nella maggior parte dei sistemi operativi a 64 bit, ma molti sistemi potrebbero non essere aggiornati per il 2038.

Una situazione simile al “problema dell’anno 2038”, è stata osservata con il video musicale Gangnam Style di Psy caricato su YouTube, che in precedenza utilizzava un valore a 32 bit per tenere traccia del numero di visualizzazioni per un video. Quel video ha raccolto così tante visualizzazioni che ha superato la soglia dei 32 bit.

Da allora YouTube ha iniziato ad utilizzare un valore a 64 bit per tenere traccia del numero di visualizzazioni per i suoi video, affermando che non si aspettavano che il numero di visualizzazioni per un video attraversasse il valore a 32 bit.

Advertisements

L’epoch time, non per tutti uguali.

L’epoch UNIX è relativa a unix, ma molti altri sistemi hanno le loro epoch date. Epoch Time nel mondo reale inizia alle 00:00:00 UTC, dove UTC sta per Coordinated Universal Time. Ma Apple macOS considera Epoch Time a partire dal 1 gennaio 1904, mentre Microsoft Windows considera Epoch Time a partire dal 1 gennaio 1601.