1404/08/24 |
6
سرریز زمان: از ۱۹۷۰ تا ۲۰۳۸
طبق گزارش زومیت، ریشه مشکلی که در سال ۲۰۳۸ به نام «سرریز زمان» (Year 2038 Bug) ظاهر خواهد شد، مربوطه به بسیاری از سیستمعاملهای قدیمی و نرمافزارهای ۳۲ بیتی خواهد بود. این سیستمها، زمان را با شمارش تعداد ثانیههای سپری شده از یک مبدأ مشخص محاسبه میکنند. این مبدأ، به نام «Unix Epoch» (استاندارد جهانی UTC) مشهور است.
چگونه این مشکل رخ میدهد؟
چالش اصلی در اینجاست: این شمارشگر ثانیه، در سیستمهای ۳۲ بیتی، در یک متغیر عددی به نام «علامتدار» (Signed Integer) ذخیره میشود. این نوع متغیر محدودیت ظرفیت دارد و حداکثر توانایی ذخیره، تا عدد ۲,۱۴۷,۴۸۳,۶۴۷ را دارد.
لحظه «سرریز»
این سقف عددی، دقیقاً در لحظه (که با زمان جهانی UTC مشخص شده است) ساعت ۰۳:۱۴:۰۷ روز سهشنبه، ۱۹ ژانویه ۲۰۳۸ (۳۰ دی ۱۴۱۶) پر خواهد شد. یک ثانیه بعد، بهعنوان یک اصطلاح، «سرریز» (Overflow) میکند. بیت علامت (Sign Bit) این متغیر از ۰ (که نشاندهنده عدد مثبت بودن آن بود) به ۱ (که نشاندهنده منفی بودن میشود) تغییر میکند. مقدار متغیر ناگهان به منفی ۲,۱۴۷,۴۸۳,۶۴۸ تبدیل میشود.
نتیجه و خطرات
در این لحظه حاد، سیستمعامل، بهجای خواندن یک تاریخ در سال ۲۰۳۸، ناگهان (به محض اینکه به عدد منفی میرسد) به سالهای پیش از مبدأ خود یعنی گذشته پرتاب میشود. تاریخ زمان را به ۱۳ دسامبر ۱۹۰۱ (۲۲ آذر ۱۲۸۰) تفسیر میکند. این اتفاق بسیار خطرناک است و میتواند باعث از کار افتادن (Crash) سیستمهای حیاتی (مثل سیستمهای پشتیبانی پزشکی، هواپیماها، سیستمهای بانکی و غیره) شود. همچنین میتواند منجر به خطاهای محاسباتی در تراکنشهای مالی، اختلال در مسیریابی شبکه و هرگونه فرآیندی باشد که به زمانبندی دقیق نیاز دارد.
آیا سیستمهای مدرن در امان هستند؟
کامپیوترهای شخصی و گوشیهای هوشمند مدرن، در امانند. آنها در بیشتر موارد به معماری ۶۴ بیتی مهاجرت کردهاند. در یک سیستم ۶۴ بیتی، ظرفیت شمارشگر زمان بسیار بزرگتر است. بهطوری که سرریز بعدی (Overflow) تا حدود ۲۹۲ میلیارد سال دیگر رخ نخواهد داد. به عبارت دیگر، این مشکل تا سالها پس از پایان عمر خورشید رخ خواهد داد.
khabaronline.ir