লিনাক্স ঘড়ি জানুয়ারী 19, 2038 3:14:08 এ ব্যর্থ হবে?


23

আমি এই সম্পর্কে কিছুটা উদ্বিগ্ন। এটিকে "বছর 2038 সমস্যা" বলা হয়। লিনাক্স কার্নেল বা উবুন্টু 12.04 তারিখের পরে কি এখনও তারিখগুলি পরিচালনা করতে প্রস্তুত?


8
আপনি কি 19 ই জানুয়ারী 2038 3:14:07 এর মতো কিছুতে নিজের ঘড়িটি সেট করার চেষ্টা করেছেন এবং এক মুহূর্ত অপেক্ষা করেছেন?
জার্মটভিডিজক

2
আসুন ধরে নেওয়া যাক এই সমস্যাটি বিদ্যমান এবং এটি এখনও ঠিক হয়নি। 12.04 চিরকালের জন্য সমর্থিত হবে না, সুতরাং অনেক বছর অবধি এই ঘটনাটি না হওয়া পর্যন্ত আপনি এবং অন্যান্য সমস্ত লোক আপডেট বিতরণে থাকবেন। আপডেট করা সহজ। এই আপডেটগুলির মধ্যে একটিতে অবশ্যই একটি ফিক্স থাকবে। তাই উদ্বিগ্ন হওয়ার কোনও কারণ নেই, তবে এটি সত্যই একটি আকর্ষণীয় প্রশ্ন।
ভেরিফিল্ট

3
বাগটি ইতিমধ্যে ঠিক করা হয়েছিল।
ThePiercingPrince

সিস্টেমের ঘড়িটি (যাইহোক সাম্প্রতিক কার্নেলের উপরে নেই); কিছু ডেটা স্ট্রাকচার (এবং এটি ব্যবহার করে প্রোগ্রামগুলি) ব্যতিক্রমী আচরণ প্রদর্শন করতে পারে। আমার মতে, এম্বেড থাকা ডিভাইসগুলির সাথে এটি একটি সমস্যা হবে - সেগুলি বর্তমান কোডটি চালিত হওয়ার সম্ভাবনা খুব কম।
পিসকভোর

1
@hmayag: আমি "টোস্টার", "ট্র্যাফিক লাইট নিয়ামক" এর মতো আরও কিছু ভাবছিলাম না। গ্রাহক-গ্রেড ইলেক্ট্রনিক্সের তুলনায় এই জিনিসগুলি কিছুটা বেশি জটলা, এবং সহজেই এই জীবনকালকে ছাড়িয়ে যেতে পারে ( অংশ প্রতিস্থাপন সহ, তবে সম্ভবত আপগ্রেড ছাড়াই) - আইআইআরসি, ওয়াই 2 কে এর ঠিক পরে 1980 এর দশকের ইলেকট্রনিক্স নিয়ে কিছু সমস্যা ছিল।
পিসকভোর

উত্তর:


13

না, এটি ব্যর্থ হবে না। সবচেয়ে খারাপ ক্ষেত্রে, কোনও প্রোগ্রামারের দৃষ্টিকোণ থেকে এটি প্রত্যাশার মতো কাজ করবে: এটি 1901-12-13 20:45:52 তারিখে পুনরায় পাঠানো হবে:

এখানে চিত্র বর্ণনা লিখুন

এটি না হওয়া পর্যন্ত আপনি আপনার বর্তমান বিতরণগুলি আপডেট করবেন না। " আপডেট করা সহজ these এই আপডেটগুলির মধ্যে একটিতে অবশ্যই একটি ফিক্স থাকবে " "যেমন চকোবাই বলেছিলেন।

আমার মনে আছে 2000 এর আগে 16 বিট মেশিনগুলির সাথে এটি একই সমস্যা / প্রশ্ন ছিল এবং শেষ পর্যন্ত এটি কোনও সমস্যা ছিল না।

উইকিপিডিয়া থেকে একটি সমাধান:

Operating৪-বিট হার্ডওয়্যারটিতে চলার জন্য ডিজাইন করা বেশিরভাগ অপারেটিং সিস্টেম ইতিমধ্যে স্বাক্ষরিত -৪-বিট time_tপূর্ণসংখ্যা ব্যবহার করে। একটি স্বাক্ষরিত 64৪-বিট মান ব্যবহার করে একটি নতুন মোড়কের তারিখ প্রবর্তিত যা মহাবিশ্বের আনুমানিক বয়সের চেয়ে বিশ গুণ বেশি: এখন থেকে প্রায় 292 বিলিয়ন বছর, রবিবার, 4 ডিসেম্বর 292,277,026,596 এ। খেজুরগুলিতে গণনা করার ক্ষমতা এই কারণে সীমাবদ্ধtm_yearবছরের জন্য 1900 থেকে শুরু করে একটি স্বাক্ষরিত 32 বিট ইনট মান ব্যবহার করে। এটি বছরের সর্বাধিক 2,147,485,547 (2,147,483,647 + 1900) সীমাবদ্ধ করে। যদিও এটি প্রোগ্রামগুলি সম্পাদন করার জন্য সমস্যার সমাধান করে, এটি বাইনারি ডেটা ফাইলগুলির মধ্যে তারিখের মানগুলি সংরক্ষণ করার সমস্যাটিকে সমাধান করে না, যার মধ্যে অনেকগুলি অনমনীয় স্টোরেজ ফর্ম্যাটগুলিকে নিয়োগ করে। এটি সামঞ্জস্যতা স্তরগুলির অধীনে চলমান 32-বিট প্রোগ্রামগুলির জন্য সমস্যাটিও সমাধান করে না এবং যে প্রোগ্রামগুলি ভুলভাবে সময় মানগুলি ব্যতীত অন্য ধরণের ভেরিয়েবেলে সংরক্ষণ করে তা সমস্যার সমাধান করতে পারে না time_t

আমি 64-বিটে উবুন্টু 13.04 ব্যবহার করি এবং কৌতূহলের দ্বারা আমি নিজে হাতে সময়টি 2038-01-19 03:13:00 এ পরিবর্তিত করি। 03:14:08 এর পরে কিছুই ঘটেনি:

2038-01-19 03:14:08 এর আগে তারিখ এবং সময় 2038-01-19 03:14:08 এর পরে তারিখ এবং সময়

সুতরাং এই সমস্যাটি নিয়ে উদ্বিগ্ন হওয়ার কিছু নেই।

আরও সম্পর্কে:


9
যদি এটি পুনরায় সেট করা হয় তবে এটি ব্যর্থ হয় কারণ "ব্যর্থ" দ্বারা আমি "কাজ করি না বা ভুলভাবে কাজ করি না" এর অর্থ।
দ্য পিয়ার্সিংপ্রিন্স

1
@ লিনাক্সডাস্টেন্স এটি আপনার দৃষ্টিকোণ থেকে ঘটে। তবে কোনও প্রোগ্রামারের দৃষ্টিকোণ থেকে এটি প্রত্যাশার মতো কাজ করবে: এটি পুনরায় সেট হবে । মায়ান ক্যালেন্ডারের সমাপ্তির সাথে এটি একই রকম ছিল: এর কারণে বিশ্ব ব্যর্থ হয়নি।
রাদু রেডানু

10
আমি একমত না? প্রোগ্রামারের দৃষ্টিকোণ থেকে একটি ঘড়ি পুনরায় সেট করার কথা নয়, তাই এটি ব্যর্থ হবে
Nanne

3
মন্তব্যে এই আলোচনা অর্থহীন ইমো। প্রশ্নটি হল "লিনাক্স কার্নেল বা উবুন্টু এর পরে তারিখগুলি পরিচালনা করতে প্রস্তুত?"। ঠিক আছে, এটি এই জাতীয় তারিখগুলি পরিচালনা করতে সক্ষম নয়, সুতরাং এটি এই প্রশ্নের প্রসঙ্গে ব্যর্থ।
gertvdijk

2
@gertvdijk "" বর্তমান / প্রকৃত "লিনাক্স কার্নেল বা উবুন্টু এর পরে তারিখগুলি পরিচালনা করতে প্রস্তুত?"
রাদু রেডানু

7

নিম্নলিখিত পার্ল স্ক্রিপ্টটি ব্যবহার করে আপনার কম্পিউটারের সময় ক্রাশ হবে কিনা তা আপনি পরীক্ষা করতে পারেন:

#!/usr/bin/perl
use POSIX;
$ENV{'TZ'} = "GMT";
for ($clock = 2147483641; $clock < 2147483651; $clock++) {
    print ctime($clock);
}

যদি আপনার কম্পিউটারটি ঠিক থাকে তবে আপনি এটি পাবেন:

Tue Jan 19 03:14:01 2038
Tue Jan 19 03:14:02 2038
Tue Jan 19 03:14:03 2038
Tue Jan 19 03:14:04 2038
Tue Jan 19 03:14:05 2038
Tue Jan 19 03:14:06 2038
Tue Jan 19 03:14:07 2038       <-- Last second in 32-bit Unix systems
Tue Jan 19 03:14:08 2038
Tue Jan 19 03:14:09 2038
Tue Jan 19 03:14:10 2038

আপনার কম্পিউটারটি যদি আমার মতো হয় তবে এটি প্রায় এইভাবে মোড়ানো হবে:

Tue Jan 19 03:14:01 2038
Tue Jan 19 03:14:02 2038
Tue Jan 19 03:14:03 2038
Tue Jan 19 03:14:04 2038
Tue Jan 19 03:14:05 2038
Tue Jan 19 03:14:06 2038
Tue Jan 19 03:14:07 2038
Fri Dec 13 20:45:52 1901
Fri Dec 13 20:45:52 1901
Fri Dec 13 20:45:52 1901

এটি এটি করতে পারে:

Tue Jan 19 03:14:01 2038
Tue Jan 19 03:14:02 2038
Tue Jan 19 03:14:03 2038
Tue Jan 19 03:14:04 2038
Tue Jan 19 03:14:05 2038
Tue Jan 19 03:14:06 2038
Tue Jan 19 03:14:07 2038
Tue Jan 19 03:14:07 2038
Tue Jan 19 03:14:07 2038
Tue Jan 19 03:14:07 2038

আমি মনে করি আপনি এখানে পার্ল পরীক্ষা করছেন এবং মূল আসল অপারেটিং সিস্টেমটি নয়। নাকি আপনি ব্যবহারের সাথে ctime?
জার্মটভিডিজক

@gertvdijk ওয়েল, এটি প্যাচযুক্ত কম্পিউটারগুলিতে প্রথম আউটপুট দেয় এবং আমার উবুন্টু ল্যাপটপ দ্বিতীয়টি দেয়, তৃতীয়টি আমার ডেবিয়ান সার্ভার থেকে। আমি আসলে কোডটি লিখি নি, এটি পুরো ঠিক একই আকারে ইন্টারনেটে।
SkylarMT

2
নিশ্চিত করেছে। আপনার যদি 64 বিট মেশিন থাকে তবে এটি ঠিক আছে be এছাড়াও ... আমাদের মধ্যে কার 3220 বিট কেবল মেশিন 2020 সালে এখনও চলছে?
jrg

1
আমি একজন সহকর্মীর কাছে 2038 সমস্যাটি বর্ণনা করার জন্য এটি অনুসন্ধান করতে গিয়েছিলাম এবং উপরের মন্তব্য করার 2 বছর পরে, আমার খুব সামান্য সন্দেহ আছে যে 2038 সালে আমাদের 32 টি বিট মেশিন ব্যর্থ হবে। আহ, যৌবনের আশাবাদ optim
জিরগ

@ জেমস, সম্ভবত কিছু অজান্তেই। ততক্ষণে সম্ভবত IoT ডিভাইসগুলিতে 32 বিট লিনাক্স এম্বেড করা হবে, আনপ্যাচড। পৃথিবীর শেষ প্রান্তে? না? কিছু জায়গায় কিছু ঝামেলা? স্পষ্টভাবে.
অধ্যাপক ফ্যালকেন

3

আমি 1996 সালে এই পিছনে একটি সংক্ষিপ্ত কাগজ লিখেছিলাম এবং প্রকাশ করেছি। এর মধ্যে এটি প্রদর্শনের জন্য একটি ছোট সি প্রোগ্রাম অন্তর্ভুক্ত ছিল। এনটিপি-নেটওয়ার্ক টাইম প্রোটোকলের সাথে একই জাতীয় সমস্যা সম্পর্কে আমার ডেভিড মিলের সাথে ইমেলও ছিল। আমার উবুন্টু 14.04 64৪-বিট ল্যাপটপে পার্ল কোড সীমাবদ্ধতা প্রদর্শন করে নি তাই অন্তর্নিহিত -৪-বিট লিবগুলি সংশোধন করা উচিত।

যাইহোক, আমার দীর্ঘ-পূর্বের পরীক্ষা কোডটি চালানো সময়কে UNIX পর্বের কাছে ফিরে আসে। অতীতে থেকে 32-বিট কোড দিয়ে সমস্ত ঠিকঠাক নয়।

আমার 1996 পত্রিকা, ইউনিক্স সময় 2038 সালে শেষ হবে! আমার ওয়েবসাইটটি প্রায় 2000 সাল থেকে রয়েছে "


2

-৪-বিট লিনাক্স প্রস্তুত, কমপক্ষে যদি আপনি মূল ওএস ইন্টারফেসের বিষয়ে কথা বলছেন (স্বতন্ত্র অ্যাপ্লিকেশন অবশ্যই এখনও এটি স্ক্রু করতে পারে)। সময়_টি traditionতিহ্যগতভাবে "দীর্ঘ" এবং "বিট" এর জন্য একটি এলিফ হিসাবে সংজ্ঞা দেওয়া হয় 64-বিট লিনাক্সে 64-বিট is

৩২-বিট লিনাক্সের পরিস্থিতি (এবং bit৪-বিট লিনাক্সে 32-বিট বাইনারিগুলির জন্য সামঞ্জস্যতা স্তর) খুব কম রোজাদার। এটি ভেঙে গেছে এবং বিদ্যমান বিদ্যমান বাইনারিগুলি না ভেঙে এটি ঠিক করা সহজ কাজ নয়। পুরো গোছা API গুলি সময়_আত ব্যবহার করে এবং অনেক ক্ষেত্রে এটি ডেটা স্ট্রাকচারের অংশ হিসাবে এম্বেড করা থাকে, তাই কেবল API গুলিই নয় যেগুলি তারা কাজ করে এমন ডেটা স্ট্রাকচারগুলিও খুব বেশি হওয়া উচিত।

এমনকি যদি পিছনের দিকের সামঞ্জস্যের কিছু স্তর থাকে তবে সমস্ত বাইনারি যা সঠিক সময় পেতে চায় তাদের নতুন -৪-বিট সময়ের ইন্টারফেসগুলি ব্যবহার করতে পুনরায় তৈরি করা দরকার।

কিছু কাজ হয়েছে (উদাহরণস্বরূপ দেখুন https://lwn.net/Articles/643234/ এবং http://www.sourceware.org/ML/libc-alpha/2015-10/msg00893.html ) তবে আমরা আফিকা সম্পূর্ণ সমাধান থেকে এখনও অনেক দূরে। Y2K38 সুরক্ষিত 32-বিট বিতরণগুলি সাধারণ উদ্দেশ্য হবে কি না তা পরিষ্কার নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.