2020. aasta on Unixile oluline: aasta alguses tĂ€itus originaalsel operatsioonisĂŒsteemil 50 aastat. Unix'i aeg, tuntud ka kui âajavahemiku kuupĂ€evadâ, on sekundite arv, mis on möödunud 1. jaanuarist 1970. Mis aga hĂ€irib tuumaarendajaid seoses Unix'i poole sajandi juubeliga?

Kuigi mĂ”ned varased Unix'i arengud eelnevad ametlikule algusele tema âajaloosâ, jÀÀb 1. jaanuar 1970 nullpunktiks POSIX'i ajaloos. Seega, alates 1. jaanuarist 2020, sai platvorm ametlikult just 50 aastat vanaks.
Aeg Unix inimese ajaga
Inimeste mÔÔtmes on 50 aastat pikk aeg. Unix'i ajas ei ole 50 aastat millegi erilisena, 43 aastat oleks olnud mitte vĂ€hem mĂ€rkimisvÀÀrne. Unix'i sĂŒsteemid (sealhulgas Linux) salvestavad kuupĂ€eva ja kellaaja vÀÀrtused kui sekundite arv, mis on möödunud ajast 1970-01-01 00:00:00 UTC, 32-bitise salvestusena. Sekundite arvu mÀÀramiseks, mis on möödunud sellest ajast ning seega praeguse Unix'i aja vÀÀrtuse mÀÀramiseks, saab kasutada kĂ€sku:
$ date +%s
1576883876
Argument %s kÀsu date jÀrel mÀÀrab kuupÀeva ja kellaaja kuvamise praeguses vormis sekundite arvuna 1970-01-01 algusest.

Milliseid maksimaalseid kuupĂ€evi saavad Unix sĂŒsteemid hoida? Unix?
Selleks, et mĂ”ista, kui kaugele vĂ”ib Unix'i sĂŒsteem minna, tuleb hinnata 32-bitise vĂ€lja mahtu. Selle saab arvutada jĂ€rgmiselt:
$ echo '2^32' | bc
4294967296
Kuid kuna Unix vĂ”imaldab salvestada ka negatiivseid numbreid, on ĂŒks bitt reserveeritud mĂ€rgiks, vĂ€hendades seega aja vÀÀrtust:
$ echo '2^31' | bc
2147483648
Kuna Unix'i numbrimine algab nullist, tĂ€hendab see, et meil on 2 147 483 648 vÀÀrtust, kuid suurim vÀÀrtus on 2 147 483 647 â Unix'i kuupĂ€eva ja kellaaja vÀÀrtus ei saa ĂŒletada seda numbrit. Nii nagu auto odomeeter ei saa nĂ€idata rohkem kui 999 999 kilomeetrit â lisades 1, nullitakse vÀÀrtus.
Kui palju sekundeid kestab aasta?
Aasta sekundeid saab arvutada jÀrgmiselt:
$ expr 24 * 60 * 60 * 365
31536000
KĂ€imist juhtub veelgi, kui see on liiga hĂŒppeaasta:
$ expr 24 * 60 * 60 * 366
31622400

Kuidas Unix tĂ€histab oma 50. sĂŒnnipĂ€eva?
1. jaanuaril 2020 kell 00:00 on aeg 1577836800. Arvutamine on pisut keeruline, kuna tuleb arvestada hĂŒppeaastaid. Unix'i ajastu jooksul on olnud 12 sellist aastat, alates 1972. aastast kuni 2016. aastani. Seega oli tavaliselt 38 aastat.
Nii nÀeb vÀlja kÀsk expr, et arvestada 50 aasta jooksul sekundeid:
$ expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
VÔi nii, arvestades eelnevalt tehtud arvutusi:
$ expr 31536000 * 38 + 31622400 * 12
1577836800
Selline kuupĂ€eva vormindamine teeb Unix'i sĂŒsteemid immuunsaks Y2K probleemile, mille ĂŒle muretseti 1999. aastal, et ĂŒleminek 2000. aastasse vĂ”ib pĂ”hjustada arvutite sĂŒsteemides hĂ€ireid. Tegelikult oli raskusi palju vĂ€hem, kui oodati. Ainult rakendused, mis salvestasid aasta kahesilbilise formaadina, kogesid kuupĂ€evade nullimist. Paljude arendajate jaoks oli lisatööd selle tagamiseks, et nende rakendusi ei puudutaks Y2K probleem.
Millal Unix seisab silmitsi probleemidega?
Sarnased raskused ootavad Unix'i sĂŒsteeme mitte varem kui 2038. aastal, kui kuupĂ€evad, mis on salvestatud ĂŒlaltoodud formaadis, ĂŒletavad 32-bitise mahtsuse. JÀÀnud on veel 18 aastat, kuid tuumaravi arendajad töötavad juba selle nimel, et vĂ€ltida tulevasi ebaĂ”nnestumisi.
2038. aasta probleem, mida mĂ”nikord nimetatakse Y2K38 probleemiks. Kui seda ei lahendata teisipĂ€evaks, 19. jaanuariks 2038, vĂ”ivad sĂŒsteemid pĂ€rast seda kuupĂ€eva arvata, et on kĂ€es 1901. aasta. Ăks vĂ”imalus selle probleemi lahendamiseks on ĂŒle minna 64-bitisele kuupĂ€eva ja kellaaja esindusele. MĂ”ned arvavad, et ka see on palju keerulisem, kui esmapilgul tundub.
Igal juhul pole veel aeg paanikaks. TĂ€na on tĂ”eliselt oluline Unix'i sĂŒsteemide 50-aastane juubelitĂ€his, mida peetakse teiste hulgas ajaloo kĂ”ige olulisemaks operatsioonisĂŒsteemiks.
Allikas: 3dnews.ru
