Ho recentemente visto un Windows 98 al lavoro, senza problemi apparenti.
Ho fatto due conti e questo sistema è vivo da circa 20 anni, ha superato il bug dell’anno 2000, virus, ransomware…probabilmente sarà ancora lì fra 20 anni.
In pochi sanno che fra pochi giorni mancheranno 20 anni ad una data importante e abbastanza spaventosa per i sistemi UNIX a 32-bit (POSIX), e non pensate che siano solo vecchi scatoloni che non usa più nessuno (la maggior parte degli smartphone Android vi dice qualcosa?).
I sistemi UNIX che usano la notazione POSIX contano il tempo come offset in secondi rispetto alla mezzanotte (UTC) del 1º gennaio 1970 (chiamato epoch).
Questo tipo di rappresentazione, oltre che ad essere compatta, è indipendente dai fusi orari, ed è quindi direttamente confrontabile anche tra calcolatori situati a grandi distanze geografiche tra loro, ed evita di dover effettuare aggiustamenti nel caso per esempio di dati trasmessi da un fuso orario all’altro.
Questo valore viene messo in una variable a 32-bit (time_t)
Tale valore non può superare 2147483647 secondi da epoch, quindi le 03:14:07 del 19 gennaio 2038 (UTC)
Questo prende il nome di bug Y2038
(Gif animata di Monaneko – Opera propria, Pubblico dominio)
La data a quel punto andrà indietro al 13-12-1901 (-2147483648 secondi da epoch).
Il fatto che manchino 20 anni non dovrebbe far dimenticare questo problema, per vari motivi:
- molti dispositivi, anche importanti, non possono essere aggiornati per motivi più o meno validi
- molti software per settare una data molto avanti nel futuro (es. una nota senza scadenza) fissavano al 2038 la data di fine, oppure sommavano +20 anni alla data della nota.
Proprio questo ultimo punto dovrebbe far riflettere, il bug Y2038 si può manifestare anche in date precedenti al 2038 ovvero, nello specifico, ogni qual volta un software che ne è affetto debba calcolare una data futura successiva a quella critica. Nel maggio 2006, per esempio, il bug colpì il server web AOLserver che gestiva le richieste senza scadenza al proprio database assegnando alle stesse una data di scadenza pari ad un miliardo di secondi nel futuro.
Alle 21:27:28 del 12 maggio 2006 (data del server; un miliardo di secondi prima del 2038) il sistema di calcolo superò il limite critico restituendo, di conseguenza, una data di scadenza nel passato e causando un crash del sistema. (Wikipedia)
Altre date importanti per lo UNIX Time:
- 9 settembre 2001: Unix billenium, l’orologio segnava 1.000.000.000 secondi.
- 18 marzo 2005: l’orologio segnava 1.111.111.111 secondi.
- il 13 febbraio 2009 alle ore 23:31:30 (UTC), il Tempo Unix ha raggiunto la cifra ‘1234567890’. Si sono tenuti party e festeggiamenti vari in tutto il mondo per celebrare l’evento.
- 26 gennaio 2011 è stato il 15.000º giorno di UNIX.