سیستم عامل

باگ سال ۲۰۳۸ هنوز برخی از سیستم‌ها را تهدید می‌کند

هشدارهای تازه نشان می‌دهد باگ سرریز زمان ۳۲ بیتی در سال ۲۰۳۸ همچنان پایداری برخی تجهیزات صنعتی قدیمی و سامانه‌های تعبیه‌شده را تهدید می‌کند. مشکل معروف «سال ۲۰۳۸» هنوز به‌طور کامل از دنیای فناوری کنار نرفته است. شرکت NI در تابستان ۲۰۲۶ راهنمایی تازه‌ای درباره‌…

3 دقیقه مطالعه
  • پشتیبانی شبکه
  • زمان
  • ۲۰۳۸
  • می‌شود
  • بیتی
  • سال
  • سیستم‌های
  • تاریخ
باگ سال ۲۰۳۸ هنوز برخی از سیستم‌ها را تهدید می‌کند

خلاصه تحلیلی خبر

هشدارهای تازه نشان می‌دهد باگ سرریز زمان ۳۲ بیتی در سال ۲۰۳۸ همچنان پایداری برخی تجهیزات صنعتی قدیمی و سامانه‌های تعبیه‌شده را تهدید می‌کند. مشکل معروف «سال ۲۰۳۸» هنوز به‌طور کامل از دنیای فناوری کنار نرفته است. شرکت NI در تابستان ۲۰۲۶ راهنمایی تازه‌ای درباره‌…

موضوعات اصلی: پشتیبانی شبکه، زمان، ۲۰۳۸، می‌شود، بیتی، سال

نمایش خطای سرریز عدد در صفحه نمایش با تاریخ ۱۹ ژانویه ۲۰۳۸

هشدارهای تازه نشان می‌دهد باگ سرریز زمان ۳۲ بیتی در سال ۲۰۳۸ همچنان پایداری برخی تجهیزات صنعتی قدیمی و سامانه‌های تعبیه‌شده را تهدید می‌کند.

مشکل معروف «سال ۲۰۳۸» هنوز به‌طور کامل از دنیای فناوری کنار نرفته است. شرکت NI در تابستان ۲۰۲۶ راهنمایی تازه‌ای درباره‌ی مشکل سرریز زمان در برخی سیستم‌های NI Linux Real-Time منتشر کرد؛ مشکلی که به نحوه‌ی ذخیره‌سازی زمان در قالب عدد صحیح علامت‌دار ۳۲ بیتی مربوط می‌شود.

در سیستم‌هایی که زمان یونیکس با عدد ۳۲ بیتی علامت‌دار ذخیره می‌شود، بیشترین مقدار قابل ثبت ۲٬۱۴۷٬۴۸۳٬۶۴۷ است. این عدد دقیقاً به ساعت ۰۳:۱۴:۰۷ روز ۱۹ ژانویه‌ی ۲۰۳۸ به وقت UTC (۳۰ دی ۱۴۱۶) می‌رسد. یک ثانیه بعد، مقدار از محدوده خارج می‌شود.

در این لحظه، سیستم‌عامل به‌جای خواندن یک تاریخ در سال ۲۰۳۸، ناگهان به گذشته پرتاب می‌شود و تاریخ را ۱۳ دسامبر ۱۹۰۱ (۲۲ آذر ۱۲۸۰) تفسیر می‌کند؛ اتفاقی که می‌تواند باعث از کار افتادن سیستم‌های حیاتی، بروز خطاهای محاسباتی در تراکنش‌های مالی، اختلال در مسیریابی و هر فرآیندی شود که به زمان‌بندی دقیق وابسته است.

در بسیاری از سیستم‌های کامپیوتری، زمان به‌جای ذخیره‌ی مستقیم تاریخ و ساعت، به شکل تعداد ثانیه‌های سپری‌شده از ۱ ژانویه‌ی ۱۹۷۰ ساعت ۰۰:۰۰ ذخیره می‌شود. به این مقدار Unix Timestamp یا زمان یونیکس گفته می‌شود.

اگر می‌خواهید ببینید عدد دقیقاً به چه تاریخی تبدیل می‌شود، می‌توانید آن را در ابزار مخصوص کاویزو وارد کنید

راه‌حل اصلی، استفاده از زمان ۶۴ بیتی است که محدوده‌ی بسیار بزرگ‌تری را پوشش می‌دهد. کتابخانه‌ی GNU C نیز برای پلتفرم‌های قدیمی‌تر امکان استفاده از time_t با اندازه‌ی ۶۴ بیت را فراهم کرده است.

هشدار تازه‌ی NI نشان می‌دهد که حتی در پروژه‌های صنعتی با چرخه‌ی عمر طولانی، جزئیات قدیمی سیستم‌عامل می‌توانند به مسئله‌ای برای سال ۲۰۳۸ تبدیل شوند.

در برخی نسخه‌های NI Linux Real-Time، فایل‌سیستم‌های ext4 با inode-های ۱۲۸ بایتی ایجاد شده بودند که برای ذخیره‌ی زمان‌های فراتر از مرز ۲۰۳۸ محدودیت داشتند. NI می‌گوید این مشکل در سیستم‌های مبتنی‌بر x64 از نسخه‌ی NI Linux RT 2022 Q3 برطرف شده و استفاده از inode-های ۲۵۶ بایتی امکان ثبت زمان‌های پس از ۲۰۳۸ را فراهم می‌کند.

البته این اصلاح برای همه‌ی سخت‌افزارها یکسان نیست. NI می‌گوید سازگاری کامل با مشکل سال ۲۰۳۸ در سیستم‌های ARM32 هنوز حل نشده است. برای برخی تجهیزات قدیمی که باید سال‌ها بدون تعویض سخت‌افزار کار کنند، چنین محدودیت‌هایی همچنان اهمیت دارند.

بنابراین «باگ سال ۲۰۳۸» به معنای آن نیست که تمام کامپیوترها در آن تاریخ از کار خواهند افتاد. مشکل فقط سیستم‌ها، نرم‌افزارها و تجهیزات قدیمی یا خاصی را تهدید می‌کند که هنوز به زمان ۳۲ بیتی وابسته‌اند؛ بسیاری از سامانه‌های مدرن از زمان ۶۴ بیتی استفاده می‌کنند و با این محدودیت مواجه نیستند.

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.