Il 2020 è un anno significativo per Unix: il sistema operativo originale ha compiuto 50 anni proprio all'inizio dell'anno. Il tempo Unix, noto anche come "data dell'epoca", è il numero di secondi trascorsi dal 1° gennaio 1970. Ma cosa preoccupa gli sviluppatori del kernel in merito al 50° anniversario di Unix?

Sebbene alcuni dei primi sviluppi di Unix siano antecedenti all'inizio ufficiale della sua "era", il 1° gennaio 1970 rimane il punto zero nel tempo POSIX. Pertanto, con l'inizio del 1° gennaio 2020, la piattaforma compie ufficialmente 50 anni.
Tempo Unix contro il tempo umano
In termini di tempo umano, 50 anni sono un lungo periodo. In termini di tempo Unix, 50 anni non sono niente di speciale e 43 anni non sarebbero meno significativi. I sistemi Unix (inclusi Linux) memorizza i valori di data e ora come numero di secondi trascorsi dal 1970-01-01 00:00:00 UTC, scritti a 32 bit. Per determinare quanti secondi sono trascorsi da allora, e quindi il valore corrente dell'ora Unix, è possibile eseguire il comando:
$ data +%s
1576883876
L'argomento %s del comando date fa sì che la data e l'ora correnti vengano visualizzate come numero di secondi trascorsi dal 1970-01-01.

Qual è la data massima che i sistemi possono memorizzare? Unix?
Per capire quanto tempo può memorizzare un sistema Unix, è necessario stimare la capacità di un campo a 32 bit. Questo può essere calcolato come segue:
$ echo '2^32' | bc
4294967296
Tuttavia, poiché Unix consente la memorizzazione di numeri negativi, un bit è riservato al segno, riducendo così il valore temporale a:
$ echo '2^31' | bc
2147483648
E poiché la numerazione Unix inizia da 0, significa che abbiamo 2.147.483.648 valori, ma il più grande è 2.147.483.647: un valore di data e ora Unix non può superare questo numero. Proprio come il contachilometri di un'auto non può indicare più di 999.999 chilometri: aggiungi 1 e il valore torna a zero.
Quanto è lungo un anno in secondi?
Il numero di secondi in un anno può essere calcolato come segue:
$ espr 24 * 60 * 60 * 365
31536000
In un anno bisestile, viene aggiunto un giorno in più:
$ espr 24 * 60 * 60 * 366
31622400

Come festeggia Unix il suo 50° compleanno?
Il 1° gennaio 2020, alle 00:12, l'ora sarà 1577836800. Il calcolo è un po' più complicato perché bisogna tenere conto degli anni bisestili. Dall'alba dell'era Unix, ci sono stati 12 anni bisestili, a partire dal 1972 e fino al 2016. Ciò significa che sono trascorsi 38 anni ordinari.
Ecco come appare il comando expr per contare i secondi negli ultimi 50 anni:
$expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
Oppure così, tenendo conto dei calcoli effettuati in precedenza:
$expr 31536000 * 38 + 31622400 * 12
1577836800
Questo metodo di registrazione dell'ora rese i sistemi Unix immuni al problema dell'anno 2000, che alla fine del 1999 fece temere che la transizione all'anno 2 avrebbe devastato i sistemi informatici. I problemi si rivelarono molto meno numerosi del previsto. Infatti, solo le applicazioni che registravano gli anni in formato a due cifre subirono il rollover delle date. Molti sviluppatori adottarono misure aggiuntive per garantire che le loro applicazioni non fossero interessate dal problema dell'anno 2.
Quando è il momento Unix incontrerà problemi?
I sistemi Unix affronteranno sfide simili non prima del 2038, quando le date memorizzate nel formato sopra descritto supereranno lo spazio a 32 bit. Ci vorranno ancora 18 anni, ma gli sviluppatori del kernel stanno già lavorando per evitare questi futuri fallimenti.
Il problema dell'anno 2038 è talvolta chiamato problema Y2K38. Se non viene risolto entro martedì 19 gennaio 2038, i sistemi successivi a tale data potrebbero pensare che sia il 1901. Un modo per risolvere questo problema è passare a una rappresentazione a 64 bit delle informazioni di data e ora. Alcuni ritengono che sarà molto più difficile di quanto sembri.
In ogni caso, è troppo presto per farsi prendere dal panico. Ciò che conta davvero oggi è il 50° anniversario dei sistemi Unix, riconosciuti come alcuni dei sistemi operativi più importanti della storia.
Fonte: 3dnews.ru
