2020 is in wichtich jier foar Unix: oan it begjin fan it jier waard it orizjinele bestjoeringssysteem 50 jier âld. Unix-tiden, ek wol bekend as "epochdatums", binne it oantal sekonden dat is ferrûn sûnt 1 jannewaris 1970. Mar wat makket kernelûntwikkelders yn ferbân mei it heale-iuwske jubileum fan Unix?

Hoewol guon fan 'e iere ûntjouwings fan Unix foarôfgeane oan it offisjele begjin fan har "tiidrek", bliuwt 1 jannewaris 1970 it nulpunt yn POSIX-tiid. Dêrom waard it platfoarm mei it begjin fan 1 jannewaris 2020 offisjeel presys 50 jier âld.
Время Unix vs minsklike tiid
Yn termen fan minsklike tiid is 50 jier in lange tiid. Yn termen fan Unix-tiid is 50 jier neat bysûnders, en 43 jier soene net minder wichtich wêze. Unix-systemen (ynklusyf Linux) bewarje datum- en tiidwearden as it oantal sekonden dat ferrûn is sûnt 1970-01-01 00:00:00 UTC, skreaun yn 32 bits. Om te bepalen hoefolle sekonden der sûnt ferrûn binne, en dus de hjoeddeiske Unix-tiidwearde, kinne jo it kommando útfiere:
$datum +%s
1576883876
It argumint %s nei it datum kommando toant de aktuele datum en tiid as it oantal sekonden sûnt 1970-01-01.

Wat is de maksimale datum systemen kinne opslaan? Unix?
Om te begripen hoefolle tiid in Unix-systeem kin hâlde, moatte jo de kapasiteit fan in 32-bit fjild skatte. It kin sa berekkene wurde:
$ echo '2^32' | bc
4294967296
Om't Unix lykwols ek negative sifers opslacht, wurdt ien bit reservearre foar it teken, sadat de tiidwearde fermindert nei:
$ echo '2^31' | bc
2147483648
En om't Unix-nûmering begjint by 0, betsjut dat dat wy 2 wearden hawwe, mar de grutste is 147 - Unix datetime-wearden kinne dat getal net oerskriuwe. Krekt as de kilometerteller op in auto kin net sjen litte mear as 483 kilometer - add 648 en de wearde giet nei nul.
Hoe lang is in jier yn sekonden?
It oantal sekonden yn in jier kin as folget wurde berekkene:
$expr 24 * 60 * 60 * 365
31536000
Yn in skrikkeljier komt der noch ien dei by:
$expr 24 * 60 * 60 * 366
31622400

Hoe toant Unix syn 50e jierdei?
Op 1 jannewaris 2020 om 12 oere is de tiid 00. De berekkening is wat yngewikkelder omdat der mei in skrikkeljier rekkene wurde moat. Sûnt it begjin fan it Unix-tiidrek binne der 1577836800 sokke jierren west, begjinnend yn 12 en einigje yn 1972. Dat is, 2016 gewoane jierren binne foarby.
Dit is hoe't it kommando expr derút sjocht om sekonden te tellen yn 'e ôfrûne 50 jier:
$expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
Of sa, mei rekken hâldend mei eardere berekkeningen:
$expr 31536000 * 38 + 31622400 * 12
1577836800
Dizze manier om tiid op te nimmen makke Unix-systemen ymmún foar it Y2K-probleem, wêrtroch minsken ein 1999 soargen hiene dat de oergong fan it jier 2000 ferneatiging soe meitsje op kompjûtersystemen. De swierrichheden bliken folle minder te wêzen as ferwachte. Yn feite, allinich applikaasjes dy't jierren opnimme yn twa-sifers formaat hawwe belibbe dat datums wurde reset. In protte ûntwikkelders hawwe ekstra wurk dien om te soargjen dat har applikaasjes net wurde beynfloede troch it Y2K-probleem.
Wannear is de tiid Sil Unix problemen hawwe?
Soartgelikense swierrichheden wachtsje op Unix-systemen net earder as 2038, as datums opslein yn it hjirboppe beskreaune formaat 32-bit romte sille wêze. D'r binne noch 18 jier oer, mar kernelûntwikkelders wurkje al om takomstige mislearrings te foarkommen.
It 2038-probleem wurdt soms oantsjutten as it Y2K38-probleem. As it net oplost is troch tiisdei 19. Jannewaris 2038, kinne systemen nei dy datum tinke dat it 1901. Ien manier om dit probleem op te lossen is om te wikseljen nei in 64-bit foarstelling fan datum- en tiidynformaasje. Guon leauwe dat dit folle dreger sil wêze as it liket.
It is yn alle gefallen te betiid foar panyk. Wat hjoed echt wichtich is, is it 50e jubileum fan Unix-systemen, dy't wurde erkend as ien fan 'e wichtichste bestjoeringssystemen yn' e skiednis.
Boarne: 3dnews.ru
