La ricorrenza del 1.234.567.890 di secondi dell’epoca Unix

Nel 2009 anche chi non era innamorato (e felicemente corrisposto) ha avuto una buona occasione per festeggiare San Valentino. In quel giorno è stato infatti raggiunto il 1.234.567.890 di secondi della cosiddetta epoca Unix, con il primo valore capace di mettere ordinatamente in fila tutte le cifre del sistema numerico decimale.

Un evento storico previsto per le 23:31:30 UTC di venerdì 13 febbraio 2009 e che quindi in Italia, avanti di un’ora rispetto al Meridiano di Greenwich, è caduto poco dopo la mezzanotte di sabato 14. I fan dei sistemi operativi della famiglia GNU/Linux hanno così celebrato nel modo più romantico il matrimonio informatico con il Software Libero.

L’epoca Unix è iniziata il 1º gennaio 1970

Ideata per permettere a tutti i computer del pianeta di essere perfettamente sincronizzati a prescindere dai fusi orari, la misurazione del tempo della epoca Unix viene condotta dal 1º gennaio 1970. Partendo dalla data considerata la nascita del primo personal computer della storia, si rappresenta il numero di giorni, mesi e anni trascorsi da allora con la corrispondente quantità di secondi.

Per verificare quale sia il valore attribuito all’attimo in cui ci troviamo è sufficiente digitare da terminale: date +%s. Per vedere invece quando cadrà un particolare istante si può ricorrere alla seguente stringa di perl: perl -e ‘print scalar localtime(1234567890), “/n”;’.

Una ricorrenza festeggiata in tutto il mondo

Chi da tempo attendeva l’arrivo della memorabile combinazione di cifre non è stato chiuso in casa a smanettare con la console di GNU/Linux. Il 13 e il 14 febbraio in tutto il mondo sono stati allestiti pubblici raduni per celebrare l’evento unico e irripetibile. Pantagrueliche abbuffate di torta e brindisi sono stati ripresi da webcam sistemate dappertutto. Sul sito dedicato all’appuntamento 1234567890day.com è stato stilato un elenco dei party a tema organizzati in ogni angolo del pianeta. La presenza di tutti e cinque i continenti ha certificato il clima di grande complicità che regnava ovunque.

Sulle pagine dei social network e i blog sparsi per la Rete, le ipotesi su ciò che sarebbe accaduto allo scoccare della fatidica ora si sono sprecate. Chi attendeva l’arrivo degli extraterrestri è rimasto deluso, ma su Youtube qualcuno ha giurato di aver visto piovere gelatine dal cielo di Seattle. Qualcun altro ha ammesso di avere approfittato della storica ricorrenza per trascorrere momenti molto piacevoli, altri invece si sono lamentati di aver saputo troppo tardi del verificarsi del particolare evento per festeggiarlo adeguatamente.

In realtà l’offset dello Unix Time aveva già fatto parlare di sé il 18 marzo 2005, quando alle 2:58 (ora del mattino in Italia) aveva fatto segnare il passaggio di 1.111.111.111 secondi, con il valore contenente il più alto numero di cifre uguali consecutive nella storia della particolare misurazione.

Il bug del 2038

Finora i particolari traguardi raggiunti dallo Unix Time sono sempre stati accolti con benevolenza nel mondo, grazie alla loro stravagante unicità. In futuro però lo scorrere del tempo emulato dai computer potrebbe creare non poche preoccupazioni.

Nel 2038 infatti i sistemi a 32 bit raggiungeranno il limite di memoria concesso al dato time_t – un numero intero a 32 bit di tipo signed – per conteggiare lo scorrere dei secondi. Alle 3:14:07 UTC di martedì 19 gennaio, con l’arrivo del valore 2147483648 (ovvero 2³¹), lo spazio si esaurirà e la variabile, per continuare la misurazione del tempo, sarà costretta a ripartire dalle cifre negative.

La rappresentazione della data riprenderà quindi dalle 20:45:52 UTC di venerdì 13 dicembre 1901, causando errori di calcolo e mandando probabilmente in crash il sistema. Una sorta di rivincita del Millennium Bug che è già stata battezzata Y2K38. Per ovviare all’inconveniente, basterebbe dotarsi di sistemi a 64 bit che usino già numeri interi a 64 bit per il time_t. Tale migrazione è effettivamente in corso ma, con centinaia di milioni di 32 bit in giro per il mondo, è possibile che alcuni di essi saranno ancora in funzione nel 2038, magari all’interno di sistemi integrati.

I 9.876.543.210 di secondi arriveranno nel 2282

Il problema inoltre non riguarderebbe solo i computer, visto che l’uso di time_t a 32 bit è stato inserito anche in vari formati di file, che potrebbero essere adoperati pure da altre macchine. Trasformare time_t in un intero unsigned consentirebbe di rimandare l’impiccio al 2106, ma provocherebbe comunque problemi a molti programmi, senza contare che impedirebbe di arrivare alla ricorrenza inversa di quella appena festeggiata, ovvero il raggiungimento dei 9.876.543.210 di secondi, previsto per le 15:13 del 22 dicembre 2282!

I nuovi valori di tipo signed a 64 bit ci permetteranno invece di vivere tranquilli per almeno altri 290 miliardi di anni, sostituendo il problema del bug del 2038 con quello dell’estinzione della razza umana o almeno della fine del sistema solare. Per sfruttare al meglio le potenzialità della nuova data massima calcolabile, i più accorti hanno già proposto di includere nel conteggio delle ore anche i millisecondi o i microsecondi. In questo modo però la vita utile dei computer si abbrevierebbe a soli trecentomila anni, lasciando i nostri pronipoti alla prese con l’eventuale bug del 302038.

Marco Vallarino