Questa volta, voglio trattare un problema prettamente informatico. Diverse volte, anzi per dirla tutta il blog stesso nasce per questo motivo, abbiamo discusso non solo della causa, ma soprattutto delle innumerevoli date profetizzate per una fine del mondo.
Come sappiamo, quella del 21 Dicembre 2012, ha avuto una risonanza mondiale. Il motivo di questo e’ ovviamente da ricercarsi nelle tantissime ipotesi profetiche fatte partendo dal calendario Maya, ma soprattutto cio’ che ha reso il 21/12 un fenomeno mondiale e’ stato senza dubbio l’apporto di internet.
Come detto in altre occasioni, la rete ci consente di scambiare informazioni in tempo reale con qualsiasi parte del mondo. Ogni qual volta scriviamo qualcosa su un sito, un forum, un blog, dobbiamo tenere sempre a mente che potenzialmente quanto scritto potrebbe essere letto all’istante anche dall’altra parte del mondo.
Prima del 21/12, l’altra data che tanto aveva fatto discutere su scenari apocalittici era ovviamente l’inizio del nuovo millennio nel 2000. Oltre alle tente ipotesi catastrofiste classiche, per il 2000 ampio spazio era stato dato al cosiddetto “millenium bug”, cioe’ al problema della gestione della data dei nostri computer.
Come forse ricorderete, il problema principale era che molti sistemi utilizzano una data espressa con solo due cifre. Per questo motivo, allo scattare del nuovo millennio, i computer sarebbero passati dalla data 99 a 00 e proprio questo valore poteva essere interpretato, invece che come 1 gennaio 2000, come 1 gennaio 1900.
Sul millenium bug si e’ parlato tantissimo. Si sono ipotizzati scenari da film di fantascienza con i nostri sistemi informatici che sarebbero impazziti mandando in tilt gran parte della nostra societa’ che, come sappiamo, e’ fortemente legata a questo tipo di controlli.
Come forse sapete ancora meglio, il millenium bug e’ stato un po’ come un 21/12 in piccolo. Se ne e’ parlato tanto, ma niente di particolarmente problematico e’ poi realmente accaduto.
Bene, ora ci risiamo. Per il 2038 e’ atteso un nuovo importante bug per i nostri pc, sempre legato alla gestione della data.
Cerchiamo di andare con ordine.
Molti dei sistemi di controllo informatico, utilizzano sistemi operativi basati su Unix e Linux. In questi sistemi operativi, per la gestione della data, viene usato il cosiddetto sistema POSIX, cioe’ il tempo viene contato come il numero di secondi trascorsi dallo Unix Epoch Time, il 1 Gennaio 1970.
Cosa significa questo?
Semplice, avete un punto di inizio fissato al 1 gennaio del 1970. Tutte le date, a livello di architettura interna si intende, vengono calcolate come il numero di secondi trascorsi da questo punto di partenza.
Sembra un po’ macchinoso, ma fino a questo punto non sembrano esserci problemi.
Quello che pero’ accade e’ che la gestione di questo tempo trascorso, viene gestita da un controllo a 32 bit utilizzato per dare il valore al dato detto time.h, un semplice contatore del numero di secondi trascorsi.
Se ci pensate, non e’ niente di complicato. Contiamo le date a partire dal 1 gennaio 1970, attraverso il numero di secondi trascorsi da questo giorno iniziale. Bene, questo numero di secondi, che ovviamente e’ un numero intero, viene gestito da una variabile a 32 bit.
Ora, il fatto di avere 32 bit, implica necessariamente che ad un certo punto ci saranno problemi di overflow, cioe’ la vostra variabile non sara’ piu’ in grado di aggiornarsi. Per dirla tutta, dal momento che la variabile e’ dotata di un segno, al termine dei valori concessi time.h assumera’ valori negativi.
Quando avverra’ questo overflow della data? Esattamente martedi 19 gennaio 2038 alle 3.14 e 07 secondi UTC. Dopo questo istante, i valori negativi del contatore dei secondi riporteranno la data al 13 Dicembre 1901.
Cosa implica questo? Siamo di nuovo di fronte ad un problema del tutto simile a quello del 2000. Anche in questo caso, in un preciso momento, i nostri sistemi informatici potrebbero entrare in confusione non riuscendo piu’ a distinguere tra le diverse date. Il problema del time.h non e’ in realta’ solo dei sistemi operativi basati su UNIX. Anche molti altri sistemi operativi utilizzano una struttura di questo tipo, cosi’ come moltissimi software che richiedono l’informazione della data per poter funzionare. Detto questo, nel 2038, tutti questi sistemi potrebbero dunque smettere di funzionare di colpo.
E’ possibile scongiurarare l’eventuale pericolo?
In linea di principio assolutamente si. Prima di tutto, ad oggi, abbiamo circa 25 anni di tempo per risolvere questo problema. Anche se, al ritmo attuale, c’e’ un rinnovamento delle tecnologie informatiche ogni 18 mesi circa, questo problema, noto gia’ da tempo, non e’ ancora stato risolto.
Molti dei nuovi sistemi a 64 bit, utilizzano gia’ un time.h in questo formato. In questo caso, ci sarebbe comunque il problema del numero non infinito di secondi che possiamo contare ma, partendo sempre dal 1 gennaio 1970, il sistema potrebbe funzionare senza problemi per molto piu’ tempo, sicuramente un tempo maggiore di quello di esistenza anche del pc stesso e del sistema che questo controlla.
Sul mercato pero’ esistono ancora tantissimi sistemi a 32 bit, alcuni anche strategi per specifici controlli. Evitando gli scenari apocalittici che gia’ si sentono in rete parlando di questo bug, con 25 anni di tempo per pensarci, non mi preoccuperei assolutamente del time.h e del cosiddetto Y2038 bug.