யூனிக்ஸ் நேரத்தைப் பற்றிய புரோகிராமர்களின் தவறான கருத்துகள்

நான் மன்னிப்பு வேண்டுகிறேன் பேட்ரிக் மெக்கென்சி.

நேற்று டேனி யூனிக்ஸ் நேரத்தைப் பற்றிய சில சுவாரஸ்யமான உண்மைகளைப் பற்றி நான் கேட்டேன், சில சமயங்களில் இது முற்றிலும் புரிந்துகொள்ள முடியாததாக வேலை செய்கிறது என்பதை நான் நினைவில் வைத்தேன்.

இந்த மூன்று உண்மைகளும் மிகவும் நியாயமானதாகவும் தர்க்கரீதியானதாகவும் தெரிகிறது, இல்லையா?

  1. யுனிக்ஸ் நேரம் என்பது ஜனவரி 1, 1970 00:00:00 UTC முதல் உள்ள வினாடிகளின் எண்ணிக்கை.
  2. நீங்கள் சரியாக ஒரு நொடி காத்திருந்தால், யூனிக்ஸ் நேரம் சரியாக ஒரு நொடி மாறும்.
  3. யுனிக்ஸ் நேரம் பின்னோக்கி நகராது.

இதில் எதுவுமே உண்மை இல்லை.

ஆனால், “இதில் எதுவுமே உண்மை இல்லை” என்று விளக்காமல் வெறுமனே சொன்னால் மட்டும் போதாது. ஏன். விளக்கங்களுக்கு கீழே பார்க்கவும். ஆனால் நீங்களே சிந்திக்க விரும்பினால், கடிகாரத்தின் படத்தைக் கடந்து செல்ல வேண்டாம்!

யூனிக்ஸ் நேரத்தைப் பற்றிய புரோகிராமர்களின் தவறான கருத்துகள்
1770 களில் இருந்து அட்டவணை கடிகாரம். ஜான் லெரோக்ஸால் தொகுக்கப்பட்டது. இருந்து வரவேற்பு சேகரிப்புகள். உரிமத்தின் கீழ் வெளியிடப்பட்டது CC BY

மூன்று தவறான கருத்துகளுக்கும் ஒரு காரணம் உள்ளது: லீப் விநாடிகள். லீப் விநாடிகள் உங்களுக்குத் தெரியாவிட்டால், இதோ ஒரு விரைவான குறிப்பு:

UTC நேரம் இரண்டு காரணிகளால் தீர்மானிக்கப்படுகிறது:

  • சர்வதேச அணு நேரம்: உலகம் முழுவதும் உள்ள நூற்றுக்கணக்கான அணுக் கடிகாரங்களிலிருந்து சராசரி அளவீடுகள். ஒரு அணுவின் மின்காந்த பண்புகளால் நாம் இரண்டாவது அளவிட முடியும், மேலும் இது அறிவியலுக்குத் தெரிந்த நேரத்தை மிகத் துல்லியமாக அளவிடும்.
  • உலக நேரம், அதன் சொந்த அச்சில் பூமியின் சுழற்சியை அடிப்படையாகக் கொண்டது. ஒரு முழுப் புரட்சி ஒரு நாள்.

பிரச்சனை என்னவென்றால், இந்த இரண்டு எண்களும் எப்போதும் பொருந்தவில்லை. பூமியின் சுழற்சி சீராக இல்லை - அது படிப்படியாக குறைகிறது, எனவே யுனிவர்சல் டைமில் நாட்கள் நீளமாகிறது. மறுபுறம், அணு கடிகாரங்கள் மில்லியன் கணக்கான ஆண்டுகளில் பிசாசுத்தனமாக துல்லியமாகவும் நிலையானதாகவும் உள்ளன.

இரண்டு முறை ஒத்திசைவு இல்லாமல் இருக்கும்போது, ​​அவற்றை மீண்டும் ஒத்திசைக்க UTC இலிருந்து ஒரு நொடி சேர்க்கப்படும் அல்லது அகற்றப்படும். 1972 முதல் சேவை IERS (இந்த வழக்கை இயக்கும்) 27 கூடுதல் வினாடிகளைச் சேர்த்தது. இதன் விளைவாக 27 UTC நாட்கள் 86 வினாடிகள் ஆகும். கோட்பாட்டளவில், 401 வினாடிகள் (மைனஸ் ஒன்று) கொண்ட ஒரு நாள் சாத்தியமாகும். இரண்டு விருப்பங்களும் யூனிக்ஸ் நேரத்தின் அடிப்படை அனுமானத்துடன் முரண்படுகின்றன.

யூனிக்ஸ் நேரம் ஒவ்வொரு நாளும் சரியாக 86 வினாடிகள் (400 × 60 × 60 = 24), கூடுதல் வினாடிகள் இல்லாமல் நீடிக்கும் என்று கருதுகிறது. அத்தகைய ஜம்ப் ஏற்பட்டால், யுனிக்ஸ் நேரம் ஒரு வினாடி தாண்டுகிறது அல்லது ஒன்றில் இரண்டு வினாடிகளைக் கணக்கிடுகிறது. 86 இல், இது 400 லீப் வினாடிகளைக் காணவில்லை.

எனவே நமது தவறான எண்ணங்கள் பின்வருமாறு துணைபுரிய வேண்டும்:

  • யூனிக்ஸ் நேரம் என்பது ஜனவரி 1, 1970 00:00:00 UTC முதல் உள்ள வினாடிகளின் எண்ணிக்கை. மைனஸ் லீப் வினாடிகள்.
  • நீங்கள் சரியாக ஒரு நொடி காத்திருந்தால், யூனிக்ஸ் நேரம் சரியாக ஒரு நொடி மாறும், லீப் செகண்ட் நீக்கப்பட்டாலன்றி.

    இதுவரை, நடைமுறையில் வினாடிகள் அகற்றப்படவில்லை (மற்றும் பூமியின் சுழற்சியின் வேகம் குறைவதால் இது சாத்தியமில்லை), ஆனால் அது எப்போதாவது நடந்தால், UTC நாள் ஒரு வினாடி குறைவாக இருக்கும் என்று அர்த்தம். இந்த நிலையில், UTC இன் கடைசி வினாடி (23:59:59) நிராகரிக்கப்பட்டது.

    ஒவ்வொரு யுனிக்ஸ் நாளுக்கும் ஒரே எண்ணிக்கையிலான வினாடிகள் உள்ளன, எனவே சுருக்கப்பட்ட நாளின் கடைசி யுனிக்ஸ் வினாடி எந்த யுடிசி நேரத்திற்கும் பொருந்தாது. கால்-இரண்டாவது இடைவெளியில் இது எப்படி இருக்கும் என்பது இங்கே:

    யூனிக்ஸ் நேரத்தைப் பற்றிய புரோகிராமர்களின் தவறான கருத்துகள்

    நீங்கள் 23:59:58:00 UTC இல் தொடங்கி ஒரு வினாடி காத்திருந்தால், Unix நேரம் இரண்டு UTC வினாடிகள் முன்னேறும் மற்றும் Unix 101 நேர முத்திரை யாருக்கும் ஒதுக்கப்படாது.

  • Unix நேரம் ஒருபோதும் திரும்ப முடியாது, ஒரு லீப் நொடி சேர்க்கப்படும் வரை.

    இது நடைமுறையில் ஏற்கனவே 27 முறை நடந்துள்ளது. UTC நாளின் முடிவில், 23:59:60 இல் கூடுதல் வினாடி சேர்க்கப்படும். யுனிக்ஸ் ஒரு நாளில் அதே எண்ணிக்கையிலான வினாடிகளைக் கொண்டுள்ளது, எனவே கூடுதல் வினாடியைச் சேர்க்க முடியாது - அதற்குப் பதிலாக கடைசி வினாடிக்கான யுனிக்ஸ் நேர முத்திரைகளை மீண்டும் செய்ய வேண்டும். கால்-இரண்டாவது இடைவெளியில் இது எப்படி இருக்கும் என்பது இங்கே:

    யூனிக்ஸ் நேரத்தைப் பற்றிய புரோகிராமர்களின் தவறான கருத்துகள்

    நீங்கள் 23:59:60.50 இல் தொடங்கி அரை வினாடி காத்திருந்தால், யூனிக்ஸ் நேரம் மீண்டும் வருகிறது அரை வினாடி, மற்றும் Unix 101 நேர முத்திரை இரண்டு UTC வினாடிகளுக்கு ஒத்திருக்கிறது.

இவை யூனிக்ஸ் காலத்தின் ஒரே வினோதங்கள் அல்ல - நேற்று நான் நினைவில் வைத்தவை.

நேரம் - மிகவும் விசித்திரமான விஷயம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்