يعد عام 2020 عامًا مهمًا بالنسبة لنظام التشغيل Unix: حيث بلغ نظام التشغيل الأصلي 50 عامًا في بداية العام. وقت يونكس، المعروف أيضًا باسم "تاريخ العصر"، هو عدد الثواني التي مرت منذ الأول من يناير عام 1. ولكن ما الذي يقلق مطوري نواة يونكس مع بلوغ يونكس عامه الخمسين؟

على الرغم من أن بعض التطورات المبكرة في نظام يونكس سبقت البداية الرسمية لـ"عصره"، إلا أن الأول من يناير 1 يظل نقطة الصفر في زمن POSIX. وبذلك، مع بداية الأول من يناير 1970، تكمل المنصة رسميًا عامها الخمسين بالضبط.
وقت يونكس مقابل الوقت البشري
من منظور الزمن البشري، تُعتبر 50 سنة مدة طويلة. أما من منظور زمن يونكس، فـ 50 سنة ليست مدة استثنائية، و43 سنة لا تقل أهمية. أنظمة يونكس (بما في ذلك Linuxيُخزّن التاريخ والوقت كعدد الثواني المنقضية منذ 1970-01-01 00:00:00 بالتوقيت العالمي المنسق، مكتوبًا بـ 32 بت. لتحديد عدد الثواني التي انقضت منذ ذلك الحين، وبالتالي قيمة وقت يونكس الحالي، يمكنك تشغيل الأمر التالي:
التاريخ +%s
1576883876
تؤدي وسيطة %s لأمر التاريخ إلى عرض التاريخ والوقت الحاليين كعدد الثواني منذ 1970-01-01.

ما هو الحد الأقصى للتاريخ الذي يمكن للنظام تخزينه؟ يونكس؟
لفهم مقدار الوقت الذي يمكن أن يحتفظ به نظام Unix، تحتاج إلى تقدير سعة حقل 32 بت. يمكن حساب ذلك على النحو التالي:
$ صدى '2^32' | قبل الميلاد
4294967296
ومع ذلك، نظرًا لأن نظام يونكس يسمح بتخزين الأرقام السالبة، يتم حجز بت واحد للإشارة، وبالتالي تقليل قيمة الوقت إلى:
$ صدى '2^31' | قبل الميلاد
2147483648
وبما أن ترقيم يونكس يبدأ من 0، فهذا يعني أن لدينا 2 قيمة، ولكن الأكبر هو 147 - لا يمكن لقيم التاريخ والوقت في يونكس أن تتجاوز هذا الرقم. تمامًا كما لا يمكن لعداد المسافات في السيارة أن يظهر أكثر من 483 كيلومترًا - أضف 648 وستتم إعادة تعيين القيمة إلى الصفر.
كم يبلغ طول السنة بالثواني؟
يمكن حساب عدد الثواني في السنة على النحو التالي:
$ expr 24 * 60 * 60 * 365
31536000
في السنة الكبيسة، يتم إضافة يوم واحد آخر:
$ expr 24 * 60 * 60 * 366
31622400

كيف يحتفل يونكس بعيد ميلاده الخمسين؟
في يوم 1 يناير 2020 الساعة 12:00 صباحًا سيكون الوقت 1577836800. الحساب أكثر تعقيدًا بعض الشيء لأنه يجب أخذ السنوات الكبيسة في الاعتبار. لقد مرت 12 سنة منذ بداية عصر يونكس، بدءًا من عام 1972 وانتهاءً بعام 2016. وهذا يعني أن 38 عامًا عاديًا قد مرت.
هكذا يبدو الأمر expr لحساب الثواني على مدى السنوات الخمسين الماضية:
$expr 24 * 60 * 60 * 365 * 38 + 24 * 60 * 60 * 366 * 12
1577836800
أو هكذا، مع الأخذ بعين الاعتبار الحسابات التي أجريت مسبقًا:
$expr 31536000 * 38 + 31622400 * 12
1577836800
لقد جعلت هذه الطريقة في تسجيل الوقت أنظمة يونكس محصنة ضد مشكلة عام 2، الأمر الذي تسبب في قلق الناس في أواخر عام 1999 من أن يؤدي التحول إلى عام 2000 إلى الإضرار بأنظمة الكمبيوتر. كانت الصعوبات أقل بكثير من المتوقع. في الواقع، فقط التطبيقات التي تكتب السنوات بتنسيق مكون من رقمين واجهت عمليات ترحيل التاريخ. لقد بذل العديد من المطورين جهدًا إضافيًا للتأكد من أن تطبيقاتهم لا تتأثر بمشكلة عام 2.
متى الوقت هل سيواجه يونكس مشاكل؟
وتنتظر أنظمة يونكس صعوبات مماثلة ليس قبل عام 2038، عندما تتجاوز التواريخ المخزنة بالتنسيق الموصوف أعلاه المساحة المكونة من 32 بت. لا يزال أمامنا 18 عامًا، لكن مطوري النواة يعملون بالفعل على تجنب الأعطال المستقبلية.
يشار إلى مشكلة عام 2038 أحيانًا باسم مشكلة Y2K38. إذا لم يتم حل هذه المشكلة بحلول يوم الثلاثاء 19 يناير 2038، فقد تعتقد الأنظمة بعد هذا التاريخ أن الوقت هو عام 1901. إحدى الطرق لحل هذه المشكلة هي التبديل إلى تمثيل 64 بت لمعلومات التاريخ والوقت. ويعتقد البعض أن هذا أيضًا سيكون أكثر صعوبة مما قد يبدو.
على أية حال، من المبكر جدًا أن نشعر بالذعر. ما هو مهم حقًا اليوم هو الذكرى الخمسين لأنظمة يونكس، التي تم الاعتراف بها كواحدة من أهم أنظمة التشغيل في التاريخ.
المصدر: 3dnews.ru
