2020 යුනික්ස් සඳහා වැදගත් වසරකි: මුල් මෙහෙයුම් පද්ධතිය වසර ආරම්භයේදීම වසර 50 ක් සපිරුණි. යුනික්ස් කාලය, "යුග දිනය" ලෙසද හැඳින්වේ, එය 1970 ජනවාරි 1 සිට ගත වූ තත්පර ගණනයි. නමුත් යුනික්ස් හි 50 වන සංවත්සරය ගැන කර්නල් සංවර්ධකයින් සැලකිලිමත් වන්නේ කුමක් ද?

යුනික්ස් හි මුල් කාලීන වර්ධනයන් කිහිපයක් එහි "යුගයේ" නිල ආරම්භයට පෙර සිදු වුවද, එනම් 1970 ජනවාරි 1, POSIX කාලයේ ශුන්ය ලක්ෂ්යය ලෙස පවතී. එබැවින්, 2020 ජනවාරි 1 වන දින ආරම්භයත් සමඟ, වේදිකාව නිල වශයෙන් වසර 50 ක් සපිරේ.
කාලය යුනික්ස් එදිරිව මිනිස් කාලය
මිනිස් කාලය අනුව, අවුරුදු 50ක් යනු දිගු කාලයකි. යුනික්ස් කාලය අනුව, අවුරුදු 50ක් විශේෂ දෙයක් නොවන අතර, අවුරුදු 43ක් අඩු වැදගත්කමක් නොදක්වයි. යුනික්ස් පද්ධති (ඇතුළුව Linux) 1970-01-01 00:00:00 UTC සිට ගත වූ තත්පර ගණන ලෙස දිනය සහ කාල අගයන් ගබඩා කරන්න, බිටු 32 කින් ලියා ඇත. එතැන් සිට තත්පර කීයක් ගත වී ඇත්දැයි සහ එම නිසා වත්මන් Unix කාල අගය තීරණය කිරීමට, ඔබට විධානය ක්රියාත්මක කළ හැකිය:
$ දිනය +%s
1576883876
දින විධානයට %s තර්කය මඟින් වත්මන් දිනය සහ වේලාව 1970-01-01 සිට තත්පර ගණන ලෙස පෙන්වීමට හේතු වේ.

පද්ධතිවලට ගබඩා කළ හැකි උපරිම දිනය කුමක්ද? යුනික්ස්?
යුනික්ස් පද්ධතියකට කොපමණ කාලයක් ගබඩා කළ හැකිද යන්න තේරුම් ගැනීමට, ඔබ බිට් 32 ක්ෂේත්රයක ධාරිතාව ඇස්තමේන්තු කළ යුතුය. මෙය පහත පරිදි ගණනය කළ හැකිය:
$ දෝංකාරය '2^32' | bc
4294967296
කෙසේ වෙතත්, යුනික්ස් සෘණ සංඛ්යා ගබඩා කිරීමට ඉඩ සලසන බැවින්, ලකුණ සඳහා එක් බිට් එකක් වෙන් කර ඇති අතර එමඟින් කාල අගය පහත පරිදි අඩු කරයි:
$ දෝංකාරය '2^31' | bc
2147483648
යුනික්ස් අංකනය 0 න් ආරම්භ වන බැවින්, මෙයින් අදහස් කරන්නේ අපට අගයන් 2,147,483,648 ක් ඇති බවයි, නමුත් විශාලතම අගය 2,147,483,647 වේ - යුනික්ස් දිනය සහ වේලාව අගය මෙම අංකය ඉක්මවා යා නොහැක. මෝටර් රථයක ඕඩෝමීටරයට කිලෝමීටර් 999,999 ට වඩා පෙන්විය නොහැකි සේම - 1 ක් එකතු කරන්න, එවිට අගය ශුන්යයට නැවත සකසනු ලැබේ.
තත්පර වලින් අවුරුද්දක් කොපමණ කාලයක්ද?
වසරක තත්පර ගණන පහත පරිදි ගණනය කළ හැකිය:
ඩොලර් 24 * 60 * 60 * 365 ට පෙර
31536000
අධික අවුරුද්දකදී, තවත් එක් දිනක් එකතු වේ:
ඩොලර් 24 * 60 * 60 * 366 ට පෙර
31622400

යුනික්ස් එහි 50 වන උපන්දිනය ප්රදර්ශනය කරන්නේ කෙසේද?
2020 ජනවාරි 1 වන දින, අලුයම 12:00 ට, වේලාව 1577836800 වනු ඇත. අධික වර්ෂ සැලකිල්ලට ගත යුතු බැවින් ගණනය කිරීම තරමක් සංකීර්ණ වේ. යුනික්ස් යුගයේ ආරම්භයේ සිට, එවැනි වසර 12 ක් පැවතුනි, 1972 දී ආරම්භ වී 2016 දී අවසන් වේ. ඒ කියන්නේ සාමාන්ය වසර 38 ක් ගතවී ඇත.
පසුගිය වසර 50 තුළ තත්පර ගණන් කිරීමට expr විධානය පෙනෙන්නේ මෙයයි:
ඩොලර් 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
නැතහොත් මේ ආකාරයට, කලින් සිදු කරන ලද ගණනය කිරීම් සැලකිල්ලට ගනිමින්:
ඩොලර් 31536000 * 38 + 31622400 * 12
1577836800
කාලය සටහන් කිරීමේ මෙම ක්රමය Unix පද්ධති Y2K ගැටලුවට ප්රතිශක්තිකරණය කළේය, 1999 අගභාගයේදී Y2K සංක්රාන්තිය පරිගණක පද්ධතිවලට විනාශයක් ඇති කරයි යැයි මිනිසුන් කනස්සල්ලට පත් කළේය. ගැටළු අපේක්ෂා කළ ප්රමාණයට වඩා බෙහෙවින් අඩු විය. ඇත්ත වශයෙන්ම, ඉලක්කම් දෙකක ආකෘතියෙන් වසර වාර්තා කළ යෙදුම් පමණක් දින පෙරළීම්වලට ලක් විය. බොහෝ සංවර්ධකයින් ඔවුන්ගේ යෙදුම් Y2000K ගැටලුවෙන් බලපෑමට ලක් නොවන බව සහතික කිරීමට අමතර පියවර ගත්හ.
වෙලාව කීයටද? යුනික්ස් වලට ගැටළු ඇති වෙයිද?
ඉහත විස්තර කර ඇති ආකෘතියෙන් ගබඩා කර ඇති දිනයන් 32-බිට් අවකාශය ඉක්මවා යන 2038 ට පෙර Unix පද්ධති සමාන අභියෝගවලට මුහුණ දෙනු ඇත. එය තවමත් වසර 18 ක් ගතවී ඇත, නමුත් කර්නල් සංවර්ධකයින් මෙම අනාගත අසාර්ථකත්වයන් වළක්වා ගැනීමට දැනටමත් කටයුතු කරමින් සිටී.
2038 වර්ෂයේ ගැටලුව සමහර විට Y2K38 ගැටළුව ලෙස හැඳින්වේ. 2038 ජනවාරි 19 වන අඟහරුවාදා වන විට එය විසඳා නොගතහොත්, එම දිනයෙන් පසු පද්ධති එය 1901 යැයි සිතිය හැකිය. මෙම ගැටළුව විසඳීමට එක් ක්රමයක් නම් දිනය සහ කාල තොරතුරු වල 64-බිට් නිරූපණයකට මාරු වීමයි. සමහරු විශ්වාස කරන්නේ මෙය පෙනෙන ආකාරයට වඩා බෙහෙවින් දුෂ්කර වනු ඇති බවයි.
කෙසේ වෙතත්, කලබල වීමට තවමත් කල් වැඩියි. අද සැබවින්ම වැදගත් වන්නේ ඉතිහාසයේ වැදගත්ම මෙහෙයුම් පද්ධති කිහිපයක් ලෙස පිළිගැනෙන යුනික්ස් පද්ධතිවල 50 වන සංවත්සරයයි.
මූලාශ්රය: 3dnews.ru
