Anul 2020 este semnificativ pentru Unix: la începutul anului, sistemul de operare original a împlinit 50 de ani. Timpul Unix, cunoscut și sub numele de „data epocii”, este numărul de secunde care au trecut de la 1 ianuarie 1970. Dar ce îi îngrijorează pe dezvoltatorii nucleului în legătură cu jubileul de jumătate de secol al Unix?

Deși unele dintre dezvoltările timpurii ale Unix preced începutul oficial al „epocii” sale, 1 ianuarie 1970 rămâne punctul zero în timp pentru POSIX. Prin urmare, începând cu 1 ianuarie 2020, platforma a împlinit oficial exact 50 de ani.
Timp Unix versus timpul uman
Din perspectiva timpului uman, 50 de ani reprezintă o perioadă lungă. Din perspectiva timpului Unix, nu există nimic special în 50 de ani, iar 43 de ani ar fi la fel de semnificativi. Sistemele Unix (inclusiv Linux) își stochează valorile datei și timpului ca numărul de secunde care au trecut de la 1970-01-01 00:00:00 UTC, înregistrate pe 32 de biți. Pentru a determina câte secunde au trecut de la acel moment și, prin urmare, valoarea actuală a timpului Unix, se poate executa comanda:
$ date +%s
1576883876
Argumentul %s după comanda datează pentru a afișa data și ora curentă sub formă de număr de secunde de la începutul lui 1970-01-01.

Care este data maximă pe care o pot stoca sistemele Unix?
Pentru a înțelege cât timp poate gestiona un sistem Unix, trebuie să evaluăm capacitatea câmpului de 32 de biți. Acest lucru se poate calcula astfel:
$ echo ‘2^32’ | bc
4294967296
Cu toate acestea, deoarece Unix permite stocarea numerelor negative, un bit este rezervat pentru semn, reducând prin urmare valoarea timpului la:
$ echo ‘2^31’ | bc
2147483648
Și deoarece numerotarea Unix începe de la 0, aceasta înseamnă că avem 2.147.483.648 valori, dar cea mai mare este 2.147.483.647 — valoarea datei și timpului Unix nu poate depăși acest număr. Așa cum un odometru pe o mașină nu poate arăta mai mult de 999.999 de kilometri — adăugați 1 și valoarea se va reseta.
Cât durează un an în secunde?
Numărul de secunde dintr-un an poate fi calculat astfel:
$ expr 24 * 60 * 60 * 365
31536000
Într-un an bisect se adaugă o zi în plus:
$ expr 24 * 60 * 60 * 366
31622400

Cum își marchează Unix cea de-a 50-a aniversare?
La 1 ianuarie 2020, la ora 00:00, va fi timpul 1577836800. Calculul devine puțin mai complicat, deoarece trebuie să ținem cont de anii bisecți. De la începutul epocii Unix au fost 12 astfel de ani, începând din 1972 și terminând în 2016. Adică au trecut 38 de ani obișnuiți.
Iată cum arată comanda expr pentru a calcula secunde în ultimele 50 de ani:
$ expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
Sau așa, având în vedere calculele efectuate anterior:
$ expr 31536000 * 38 + 31622400 * 12
1577836800
Această modalitate de a înregistra timpul a făcut ca sistemele Unix să fie imune la problema Y2K, din cauza căreia oamenii la sfârșitul anului 1999 erau îngrijorați că trecerea în anul 2000 ar putea afecta sistemele informatice. Dificultățile au fost mult mai puține decât se așteptau. De fapt, doar aplicațiile care înregistrau anii într-un format cu două cifre s-au confruntat cu resetarea datelor. Mulți dezvoltatori au realizat muncă suplimentară pentru a se asigura că aplicațiile lor nu vor fi afectate de problema Y2K.
Când va Unix se va confrunta cu probleme?
Dificultăți similare așteaptă sistemele Unix nu mai devreme de anul 2038, când datele stocate în formatul descris mai sus vor depăși spațiul de 32 de biți. Mai sunt încă 18 ani, dar dezvoltatorii nucleului lucrează deja pentru a evita defecțiunile viitoare.
Problema anului 2038 este uneori menționată ca problema Y2K38. Dacă nu va fi rezolvată până marți, 19 ianuarie 2038, după această dată sistemele ar putea crede că a venit anul 1901. O modalitate de a aborda această problemă este trecerea la o reprezentare pe 64 de biți a informației despre dată și timp. Unii cred că și aceasta va fi mult mai complicat decât pare.
În orice caz, este prea devreme pentru panică. Ce este cu adevărat important astăzi este aniversarea de 50 de ani a sistemelor Unix, care sunt recunoscute ca fiind unele dintre cele mai importante sisteme de operare din istorie.
Sursa: 3dnews.ru
