वर्ष 2038 की समस्या [बंद]


जवाबों:


17

मुझे एक अंतर्निहित लिनक्स सिस्टम में इस समस्या का सामना करना पड़ा है जो कि कुछ दीर्घकालिक क्रिप्टोग्राफिक प्रमाणपत्रों में 2038 से पहले की तारीखों को संभालने की आवश्यकता थी, इसलिए मैं कहूंगा कि इसकी पसंद आपके आवेदन डोमेन पर निर्भर करती है।

जबकि अधिकांश प्रणालियां 2038 से पहले अच्छी तरह से तैयार होनी चाहिए, यदि आप खुद को आज भविष्य में तारीखों की गणना करते हुए पाते हैं, तो आपको समस्या हो सकती है।


अच्छा था! मैंने उस उदाहरण के बारे में नहीं सोचा था! प्रमाण पत्र के अंदर समय सिंटैक्स के रूप में पीकेआई मानक का उपयोग क्या है? मैंने कभी नहीं देखा!
जियोऑफ

@geoffc, वास्तव में यह एक मालिकाना प्रारूप था और इसकी आंतरिक तिथि / समय संरचनाएं थीं, जो खुद 2038 से पहले की तारीखों में फिट होने के लिए काफी बड़ी थीं, लेकिन इसने तारीख / समय रूपांतरण के लिए GLIBC फ़ंक्शन का उपयोग किया। अगर मुझे सही से याद है, तो mktimeकॉल चुपचाप विफल हो रहा था।
अलेक्स बी

13

मुझे लगता है कि यह एक महत्वपूर्ण समस्या होने जा रही है, 1999/2000 के Y2K मुद्दों की तुलना में बहुत अधिक खतरनाक है क्योंकि प्रभावित कोड आम तौर पर निचले स्तर (यह CTIME) है और इसलिए उन जगहों पर स्पॉट करना कठिन है जहां समय उस तरह से संग्रहीत किया जा रहा है।

आगे के मामलों को जटिल करने के लिए, तथ्य यह है कि वाई 2 के को नम स्क्वैब माना जाता था, इससे रनअप में होने वाली समस्या पर ध्यान आकर्षित करना मुश्किल हो जाएगा।

सांस्कृतिक संदर्भ:

कोरी डॉक्टरो, ओपन लाइसेंस के तहत लघु कथाएँ शुरू करने / प्रकाशन के लिए एक नया मॉडल आज़मा रहे थे, और मैंने उनमें से एक 2038 थीम ओ में से एक का सुझाव दिया, जिसे उन्होंने एपिक: http://craphound.com/?p=2337 में शानदार ढंग से किया।


उस समय के मुद्दे पर काम कर रहे किसी व्यक्ति के रूप में बोलते हुए, Y2K ने बहुत सारे काम और पहले से योजना बनाने के कारण जमकर काम किया। नम स्क्वीब धारणा को मीडिया में सभी अतिरंजित doomsaying द्वारा प्रबलित किया गया था। मुझे उम्मीद है कि 2035 या उसके बाद से बहुत सारी योजनाएं और काम शुरू हो जाएंगे, लेकिन अगर हम भाग्यशाली हैं कि हम मीडिया ब्लिट्ज को याद करेंगे।
डेविड थॉर्नले

लिंक मार्क के लिए चीयर्स।
बोहेज

9

कुछ साल पहले, 30-वर्षीय ऋण पर गणना करने वाले बंधक कार्यक्रमों जैसे क्षेत्रों में पहले से ही समस्याएं थीं: 2008 + 30 = 2038।


8

64 बिट OS अंततः 2037 की समस्या के लिए अप्रासंगिक है। (CTIME 2038 के मुकाबले 2037 के करीब चलता है)।

सवाल ओएस की थोड़ी गहराई का नहीं है, बल्कि यह है कि ओएस कैसे स्टोर करता है। या डेटाबेस कॉलम समय को स्टोर करने के लिए कैसे चुनता है। या यह निर्देशिका सेवा समय सिंटैक्स विशेषता स्टोर बैक बैक में कैसे करती है।

लोगों की सोच से यह बहुत बड़ी समस्या है, क्योंकि यह 32 बिट टाइम काउंटर्स का उपयोग करने के लिए इतना स्थानिक और आम है।

प्रत्येक उदाहरण जो समय को संग्रहीत करता है, उसे पुन: संशोधित करने की आवश्यकता होती है, और सभी एपीआई के अपडेट किए गए, और सभी उपकरण जो इसे अपडेट करते हैं, साथ ही अपडेट भी करते हैं।

अमूर्त परतें जो आपको एक मानव पठनीय समय प्रारूप के माध्यम से समय निर्धारित करने देती हैं, बजाय बाहर लिखे कच्चे आंकड़ों के बजाय इसे आसान बनाती हैं, लेकिन यह केवल एक मामला है।

मुझे लगता है कि यह ज्यादातर लोगों की तुलना में बहुत बड़ा सौदा होने जा रहा है।


1
सबसे बड़ी समस्या जो मुझे दिखाई दे रही है, वह फ़ाइल स्वरूप और फाइलस्टीन हैं, हालाँकि ext4 के लिए तिथि सीमा 2514 है, vfat 2107 है। समस्या reiserfs (2038) के साथ है।
मैकीज पीचोटका

ReiserFS में अभी भी अन्य मुद्दे हैं। मुझे अभी भी लगता है कि CTIME में उस स्टोर टाइम के बारे में लोगों के सोचने की तुलना में कई और छिपे हुए स्थान हैं। यह एक आसान और उपयोगी समय प्रारूप है। बेशक, अहस्ताक्षरित CTIME में 2037 समस्या नहीं है। मुझे लगता है कि 2107 टाइमस्टैम्प मामला है।
जियोऑफ

1
आप Apple HFS के बारे में सोच रहे हैं। वसा बिल्कुल उपयोग नहीं करता है time_t। यह वर्ष, महीने और दिन को एक 16-बिट मान में फ़ील्ड के रूप में संग्रहीत करता है: दिन के लिए 5 बिट्स, महीने के लिए 4, वर्ष के लिए 7 छोड़कर। 2107 1980 (FAT भूमि में वर्ष शून्य) + 2 ^ 7-1 है। अधिक मज़ा के लिए, एफएटी दिन के समय को दूसरे 16-बिट मान में उसी तरह संग्रहीत करता है, लेकिन यदि आप गणित करते हैं, तो आप पाते हैं कि आपको दिन के समय को स्टोर करने के लिए 17 बिट्स की आवश्यकता है। सेकंड के लिए एक बिट रिज़ॉल्यूशन छोड़ने से FAT इसके आसपास हो जाता है; FAT 2 सेकंड से कम के बदलाव को अलग नहीं कर सकता। आह, Microsoft, यह एक उबाऊ दुनिया आपकी अनावश्यक असंगतियों के बिना क्या होगा!
वॉरेन यंग

8

यह मेरी राय है, लेकिन यह समस्या 32 बिट काउंटर समस्या के कारण है, आज अधिकांश ओएस 64 बिट (कम से कम 64 बिट कंप्यूटर) पर समय को संभालने के लिए अपडेट किए जाते हैं, इसलिए मुझे लगता है कि सभी ओएस और सॉफ्टवेयर एक लंबा तैयार हो जाएगा २०३ only से पहले का समय, चलो २०२० कहते हैं। इसलिए आपको केवल समस्याएँ हो सकती हैं यदि २०३ let's में आप अभी भी २०२० से सॉफ़्टवेयर चला रहे हैं।
यह लगभग सभी मामलों में समस्या नहीं होगी। मुझे उम्मीद है।


मैंने Ubuntu 32 बिट संस्करण की कोशिश की और इसने 2038 समस्याएं दिखाईं लेकिन Ubuntu 64 बिट संस्करण को चलाने से 2038 समस्या का कोई संकेत नहीं मिला। मैंने किसी अन्य यूनिक्स की कोशिश नहीं की है।
जिमी हेडमैन

हां, अधिकांश 32 बिट संस्करण पर आपको समस्या दिखाई देगी, लेकिन 64 बिट संस्करण पर नहीं। आप 2038 में अब कोई 32 बिट ओएस होने की उम्मीद कर सकते हैं।
त्रिज्या

2
यह एक हास्यास्पद धारणा है। हम आज भी दुनिया में 16 (और यहां तक ​​कि 8 बिट) माइक्रोप्रोसेसरों का उपयोग करते हैं, क्या कहना है कि 32 बिट माइक्रोप्रोसेसर भविष्य में जादुई रूप से गायब हो जाएंगे? यह कहना उचित है कि यह औसत उपयोगकर्ता को प्रभावित नहीं करेगा, लेकिन किनारे के मामलों में यह एक समस्या बन सकता है।
एली फ्रे

अच्छी तरह से - 16-बिट और 8-बिट कंप्यूटर 1. तारीख को स्थानांतरित कर सकते हैं 0 (1970-01-01 से उदाहरण के लिए 2010-01-01 तक) - हालांकि यह कुछ एपीआई / एबीआई सम्मेलनों को तोड़ देगा 2. टाइमर क्षेत्र का विस्तार करें ( जो कुछ मामलों में 'केवल' एबीआई) को तोड़ सकता है।
मैकियाज पीचोटका

1

इतनी बड़ी बात नहीं।

पहले Y2K ब्लिट्ज के दौरान, जिसमें सॉफ्टवेयर और हार्डवेयर विक्रेताओं को अपने उत्पादों को "Y2K कंप्लेंट" के रूप में प्रमाणित करने की आवश्यकता होती थी, (मुझे याद है कि पीसी कनेक्शन पर नेटवर्क केबल प्रमाणित Y2K कंप्लेंट होने के कारण) बहुत सारी कंपनियों ने सभी चीजों का विस्तृत ऑडिट किया था। , भविष्य में घड़ियों की स्थापना और परीक्षण द्वारा।

उस समय, चूंकि परीक्षण की लागत इतनी अधिक थी, उन्होंने लगभग हमेशा कई तिथियों के साथ परीक्षण किया, जैसे कि 1/1/99 (कुछ डेवलपर्स ने 99 को एक संतरी के रूप में इस्तेमाल किया हो सकता है), 12/31/99, 1/1 /। 00, 2000 की छलांग, 1/19/38, और कई अन्य। एक थकाऊ सूची के लिए यहाँ देखें ।

इस प्रकार मेरा मानना ​​है कि १ ९९९ के आसपास जो भी महत्वपूर्ण सॉफ्टवेयर था, उसमें २०३ but बग्स नहीं होंगे, लेकिन तब से लिखे गए नए सॉफ्टवेयर शायद अज्ञानी सैनिकों के हो सकते हैं। पूरे Y2K पराजय के बाद प्रोग्रामर आम तौर पर तारीख एन्कोडिंग मुद्दों के बारे में अधिक जागरूक हो जाते हैं, इसलिए यह उतना बड़ा प्रभाव होने की संभावना नहीं है जितना कि Y2K था (जो कि, अपने आप में एक एंटीक्लामेक्स का कुछ था)।


सिवाय इसके कि यह समस्या UNIX time_t प्रकार 32-बिट होने के कारण है।
युहोंग बाओ

1

32 बिट सिस्टम तब भी चल रहा है, एक समस्या होगी।


2
क्या आप इस बारे में विस्तार से बता सकते हैं कि यह अधिक स्पष्ट है कि वास्तव में समस्या क्या है, और उस पर कैसे प्रतिक्रिया दें?
एंथन

समस्या 32 बिट पूर्णांक के साथ है जिसका उपयोग समय की गणना के लिए किया जाता है। समय 01 जनवरी 1970 से बीता हुआ सेकंड की संख्या में मापा जाता है। उदाहरण के लिए एक दिन के बाद यह काउंटर 86400 पर होगा। इसलिए 2038 में यह मूल्य ओवरफ्लो हो जाएगा क्योंकि यह उस मूल्य से अधिक होगा जो उस संख्या से अधिक हो सकता है जिसे एक में रखा जा सकता है। अहस्ताक्षरित 32 बिट पूर्णांक। टाइमस्टैम्प के लिए 64 बिट्स का उपयोग करने वाले 64 बिट सिस्टम में यह समस्या नहीं होगी क्योंकि यह रविवार 15:30:08 बजे तक काम करने में सक्षम होगा, 4 दिसंबर 292,277,026,596 (292 बिलियन वर्ष)
राहुल कडुकर

0
#include <time.h>
#include <stdio.h>

int main() {
  time_t t = (time_t)(1L << (sizeof(time_t)*8 - 9));
  printf("%d\n", sizeof(time_t));
}

यह 9 के बजाय 1 होना चाहिए, लेकिन ctime बड़ी तारीख को नहीं संभालती है:

8 - Sun Jun 13 07:26:08 1141709097

मेरा सिस्टम (64 बिट) का समय 1 मिलियन वर्ष अधिक चल सकता है। समाधान 64 बिट्स के लिए सिस्टम को अद्यतन करना है।

पकड़ यह है कि कार्यक्रम इसे संभाल नहीं सकते हैं। विशेष रूप से पुराने, उचित और बनाए नहीं रखा। देवों का उपयोग निम्नलिखित तथ्यों के लिए किया जाता है:

  • int32 बिट्स हैं (वास्तव में वे दूसरों के बीच 64-बिट सिस्टम पर 32 बिट्स के रूप में संरक्षित हैं क्योंकि यह माना गया था कि वे 32 बिट्स हैं:
  • अधिकांश प्रकार (जैसे time_t) सुरक्षित रूप से डाले जा सकते हैंint

लोकप्रिय FLOSS सॉफ्टवेयर में दोनों चीजें संभवत: 'कई आंखों की समीक्षा' के माध्यम से नहीं मिलेंगी। कम लोकप्रिय और उचित पर यह बड़े पैमाने पर लेखक पर निर्भर करेगा।

मुझे लगता है कि नि: शुल्क * निक्स दुनिया पर 2038 का ध्यान नहीं जाएगा, जबकि मैं "प्रॉपरटरी" प्लेटफॉर्म पर समस्या की उम्मीद करता हूं (यानी बड़ी संख्या में प्रॉपर सॉफ्टवेयर के साथ) - खासकर अगर कुछ क्रूटिकल पार्ट का रखरखाव नहीं किया जाएगा।


यह 'सिस्टम' या 'OS' नहीं है। किसी भी पिछले 32 बिट ओएस (बिल्ली भी 16 बिट ओएस है) 64 बिट गणित कर सकता है। ओएस स्तर पर 64 बिट गहराई मूल रूप से मेमोरी मॉडल का संदर्भ है, गणित करने की क्षमता नहीं। और समय गणित का है।
जियोफॉक

हां और ना। यह सच है कि 32 बिट और 64 बिट ओएस 64 बिट अंकगणितीय प्रदर्शन कर सकते हैं (आप किसी भी अंकगणित का अनुकरण कर सकते हैं)। हालाँकि time_t(या समतुल्य) 32 बिट OS पर होता है जबकि 32 बिट्स time_t(या समतुल्य) 64 बिट OS पर होता है जबकि 64 बिट्स होता है। मुझे लगा कि कुछ सरलीकरण के साथ भी यह पर्याप्त रूप से स्पष्ट है।
मकीज पीचोटका

0

यदि यह Y2K जैसा कुछ भी है, तो कुछ लोग पहले से ही प्रभावित हैं और सॉफ्टवेयर को बदल रहे हैं, लेकिन अधिकांश डेवलपर्स इसे 2030 के दशक में, शायद 2035 या इसके बाद तक अनदेखा करेंगे, जिस बिंदु पर बहुत काम किया जाएगा, और कोई भी पुराना K & R C को जानने के लिए और अभी तक बहुत कम पैसे के लिए अचानक से अनुबंध करने में सक्षम नहीं होगा। वास्तविक संक्रमण बहुत सारी चीजें दिखाएगा जो अभी तक नहीं किया गया है, शायद यह सब महत्वपूर्ण नहीं है।


-5

Y2K समस्या चार के बजाय वर्ष का प्रतिनिधित्व करने वाले दो चार्टर्स थे।

कई प्रणालियों में 1900 से 2000 के बीच अंतर करने का कोई तरीका नहीं था क्योंकि उन्होंने केवल '00' संग्रहीत किया था।

लगभग सभी सिस्टम या तो अब वर्ष को संग्रहीत करने के लिए 4 वर्णों का उपयोग करते हैं, या वे किसी प्रकार के पुस्तकालय का उपयोग करते हैं।

तो इसके बजाय सभी वर्ष 10000 (Y10K) के बारे में चिंता करते हैं। ओएस और लाइब्रेरी लेखकों को छोड़कर ...


संभवतः दोपहर (अच्छी तरह से व्यावहारिक रूप से) भंडारण की तारीख है ऐसा प्रारूप (यानी डीसीडी या स्ट्रिंग) है। समय आमतौर पर वस्तुओं या किलों (इसलिए केवल प्रदर्शन कोड को अद्यतन करने की आवश्यकता होती है) द्वारा नियंत्रित किया जाता है।
मिकीज पीचोटका

हाँ, बिल्कुल मेरी बात। Y2K ने प्रभावी रूप से निश्चित लंबाई के तार के रूप में तारीखों का प्रतिनिधित्व करने के विचार को मार दिया।
स्टीफन जज़्दवेस्की

@ स्टीफन: COBOL दुनिया में नहीं है, लेकिन Unix / Linux पर सौभाग्य से कुछ COBOL कार्यान्वयन हैं।
डेविड थॉर्नले

@ डेविड: कॉबोल प्रोग्राम अधिकांश भाग के लिए Y2K समस्या थे। क्या लिनक्स / यूनिक्स सिस्टम, एक उपयोगकर्ता के दृष्टिकोण से, कभी एक Y2K मुद्दा है? मूल प्रश्न का सरल उत्तर नहीं है।
स्टीफन जज़्दवेस्की 16

4
पोस्टर y2k समस्या के बारे में नहीं पूछ रहा है; वे y2k38 समस्या के बारे में पूछ रहे हैं, जो एक पूरी तरह से अलग जानवर है। विवरण के लिए en.wikipedia.org/wiki/Y2K38 की जाँच करें ।
केविन एम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.