مرجع
آخر الزيارات

توقيت يونكس

3٬788 كلمة•0 مشاهدة•🗒️ منذ 17 يوماً
باختصار: وقت يونكس هو تمثيل التاريخ والوقت المستعمل على نطاق واسع في الحوسبة. تتناول المقالة 13 قسماً، منها «الثواني الكبيسة»، «التاريخ» و«القيود».
المحتويات
  1. الثواني الكبيسة
  2. التاريخ
  3. القيود
  4. متغير يحسب الثواني الكبيسة
  5. دليل مبرمج يونكس، الطبعة الأولى
  6. الأحداث البارزة في وقت يونكس
  7. مجموعة من الأوقات القابلة للتمثيل
  8. البدائل
  9. قاعدة التوقيت العالمي المنسق
  10. التعريف
  11. الاستخدام
  12. في الثقافة الشعبية
  13. تمثيل الرقم
توقيت يونكس

بدايةً، وقت يونكس هو تمثيل التاريخ والوقت المستعمل على نطاق واسع في الحوسبة. يقيس الوقت بعدد الثواني غير الكبيسة التي انقضت منذ الساعة 00:00:00 بالتوقيت العالمي المنسق في يوم 1 يناير 1970، عصر يونكس. مثلًا، في منتصف ليل يوم 1 يناير 2010، كان وقت يونكس هو 1262304000. وفيما يلي تفاصيل أوسع عن ذلك.

في هذا الإطار، نشأ وقت يونكس باعتباره لأنظمة التشغيل يونكس. لقد أصبح مستعملًا على نطاق واسع في أنظمة تشغيل الكمبيوتر الأخرى، وأنظمة الملفات، ولغات البرمجة، وقواعد البيانات. في الحوسبة الحديثة، يتم تخزين القيم أحيانًا بحبيبات أعلى، مثل الميكروثانية أو النانوثانية.

الثواني الكبيسة

وعلى صعيد آخر، عند التعامل مع فترات لا تشمل ثانية كبيسة بتوقيت عالمي منسق، فإن الفرق بين رقمين زمنيين في نظام يونكس يساوي مدة الفترة بين النقاط المقابلة في الوقت بالثواني. هذه تقنية حسابية شائعة. ومع ذلك، عندما تحدث الثواني الكبيسة، فإن مثل هذه الحسابات تعطي إجابة خاطئة. في التطبيقات التي تتطلب هذا المستوى من الدقة، من الضروري استشارة جدول الثواني الكبيسة عند التعامل مع أوقات يونكس، وغالبًا ما يكون من الأفضل استخدام ترميز زمني مختلف لا يعاني من هذه المشكلة.

علاوةً على ذلك، في يوم توقيت عالمي منسق عادي، والذي تبلغ مدته ثانية، يتغير رقم وقت يونكس بطريقة مستمرة عبر منتصف الليل. مثلًا، في نهاية اليوم المستعمل في الأمثلة أعلاه، تتقدم تمثيلات الوقت على النحو التالي:

وفي هذا الصدد، تتكرر أرقام وقت يونكس في الثانية التي تلي الثانية الكبيسة الموجبة مباشرة. وبالتالي فإن رقم وقت يونكس غامض: يمكن أن يشير إما إلى بداية الثانية الكبيسة (2016-12-31 23:59:60) أو نهايتها، بعد ثانية واحدة (2017-01-01 00:00:00). في الحالة النظرية عندما تحدث ثانية كبيسة سلبية، لا يحدث أي غموض، ولكن بدلاً من ذلك يوجد نطاق من أرقام وقت يونكس التي لا تشير إلى أي نقطة في توقيت عالمي منسق على الإطلاق.

في هذا الإطار، غالبًا ما يتم تنفيذ ساعة يونكس باستخدام نوع مختلف من التعامل مع الثواني الكبيسة الإيجابية المرتبطة ببروتوكول وقت الشبكة (NTP). ويؤدي هذا إلى إنشاء نظام لا يتوافق مع معيار واجهة أنظمة التشغيل المحمولة. راجع القسم أدناه فيما يتعلق بـ NTP للحصول على التفاصيل.

من جهة ثانية، يمكن بسهولة تحويل رقم وقت يونكس إلى توقيت عالمي منسق مرة أخرى عن طريق أخذ حاصل قسمة ومعامل رقم وقت يونكس، modulo . الحاصل هو عدد الأيام منذ العصر، والمعامل هو عدد الثواني منذ منتصف الليل بتوقيت عالمي منسق في ذلك اليوم. إذا تم إعطاء رقم وقت يونكس غامض بسبب ثانية كبيسة موجبة، فإن هذه الخوارزمية تفسر هذا الرقم على أنه الوقت بعد منتصف الليل مباشرة. فهو لا يولد أبدًا وقتًا يقع خلال الثانية الكبيسة. إذا تم إعطاء رقم وقت يونكس غير صالح بسبب ثانية كبيسة سلبية، فإنه يولد توقيت عالمي منسق غير صالح كذلك. إذا كانت هذه الظروف مهمة، فمن الضروري استشارة جدول الثواني الكبيسة لاكتشافها.

كذلك، يمكن فك تشفير هذا بشكل صحيح من خلال الانتباه إلى متغير حالة الثانية الكبيسة، والذي يُشير بوضوح إلى ما إذا كانت القفزة قد أُجريت بالفعل. يتزامن تغيير متغير الحالة مع القفزة.

إضافةً إلى ذلك، عندما تحدث ثانية كبيسة، فإن يوم توقيت عالمي منسق ليس بالضبط ثانية، ويواجه رقم وقت يونكس (الذي يزداد دائمًا بمقدار بالضبط كل يوم) انقطاعًا. قد تكون الثواني الكبيسة موجبة أو سالبة. لم يتم الإعلان عن ثانية كبيسة سلبية على الإطلاق، ولكن إذا تم الإعلان عن واحدة، ففي نهاية اليوم الذي يحتوي على ثانية كبيسة سلبية، فإن رقم وقت يونكس سيقفز بمقدار 1 إلى بداية اليوم التالي. أثناء الثانية الكبيسة الموجبة في نهاية اليوم، وهو ما يحدث كل عام ونصف على وجه التقريب في المتوسط، يزداد روقت يونكسقم وقت يونكس بشكل مستمر في اليوم التالي أثناء الثانية الكبيسة ثم في نهاية الثانية الكبيسة يقفز للخلف بمقدار 1 (يعود إلى بداية اليوم التالي). مثلًا، هذا ما حدث في أنظمة واجهة أنظمة التشغيل المحمولة المطابقة تمامًا في نهاية عام 1998:

في هذا الإطار، يحدث موقف مشابه مع ثانية كبيسة سالبة، حيث تكون الثانية المُتخطاة متأخرة قليلاً. يُظهر النظام، باختصار شديد، رقمًا زمنيًا مستحيلًا ظاهريًا، ولكن يُمكن اكتشافه من خلال حالة حذف الوقت (TIME_DEL) وتصحيحه.

متغير قائم على بروتوكول وقت الشبكة غير المتزامن

وفي هذا السياق، إن منطق فك التشفير المطلوب للتعامل مع هذا النمط من ساعات يونكس سيتمكن كذلك من فك تشفير ساعة افتراضية متوافقة مع معايير واجهة أنظمة التشغيل المحمولة بشكل صحيح باستخدام الواجهة نفسها. يتحقق ذلك من خلال الإشارة إلى حالة TIME_INS طوال الثانية الكبيسة المُضافة، ثم الإشارة إلى حالة TIME_WAIT طوال الثانية التالية مع تكرار عدّ الثواني. يتطلب هذا معالجة متزامنة للثواني الكبيسة. ربما تكون هذه أفضل طريقة للتعبير عن وقت التوقيت العالمي المنسق بصيغة ساعة يونكس، عبر واجهة يونكس، عندما تكون الساعة الأساسية خالية تمامًا من الثواني الكبيسة.

وفي السياق ذاته، في هذا النوع من الأنظمة، يُخالف رقم وقت يونكس معيار واجهة أنظمة التشغيل المحمولة في كلا نوعي الثانية الكبيسة. يسمح جمع متغير حالة الثانية الكبيسة مع رقم الوقت بفك تشفير واضح، ما يُتيح توليد رقم وقت واجهة أنظمة التشغيل المحمولة الصحيح عند الرغبة، أو تخزين توقيت عالمي منسق الكامل بتنسيق أكثر ملاءمة.

إضافةً إلى ذلك، يختلف وقت يونكس عن التوقيت العالمي المنسق والتوقيت الذري الدولي في تعامله مع الثواني الكبيسة. يتضمن التوقيت العالمي المنسق ثوانٍ كبيسة تعدل التناقض بين الوقت الدقيق، كما يتم قياسه بواسطة الساعات الذرية، والوقت الشمسي، المتعلق بموقع الأرض بالنسبة للشمس. يتجاهل التوقيت الذري الدولي، الذي يبلغ طول كل يوم فيه ثانية بالضبط، الوقت الشمسي ويفقد التزامن مع دوران الأرض تدريجيًا بمعدل ثانية واحدة على وجه التقريب كل عام. في وقت يونكس، يحتوي كل يوم على ثانية بالضبط. تستعمل كل ثانية كبيسة طابعًا زمنيًا للثانية التي تسبقها أو تليها مباشرة.

وفي السياق ذاته، بشكل عام، يتم تنفيذ ساعة يونكس على غرار ميلز مع التعامل مع الثواني الكبيسة غير المتزامنة مع تغيير رقم وقت يونكس. يبدأ رقم الوقت في البداية بالتناقص في المكان الذي كان من المفترض أن تحدث فيه القفزة، ثم يقفز إلى الوقت الصحيح بعد ثانية واحدة من القفزة. وهذا يجعل التنفيذ أسهل، وهو ما وصفه بحث ميلز. وهذا ما يحدث عبر ثانية كبيسة موجبة:

التاريخ

وعلى صعيد آخر، لقد قام إصدار 2001 من واجهة أنظمة التشغيل المحمولة بتصحيح قاعدة السنة الكبيسة الخاطئة في تعريف وقت يونكس، لكنه احتفظ بالتعريف الأساسي لوقت يونكس باعتباره ترميزًا لتوقيت توقيت عالمي منسق وليس مقياسًا زمنيًا خطيًا. منذ منتصف تسعينيات القرن العشرين، تم ضبط ساعات الكمبيوتر بشكل روتيني بدقة كافية ليكون لهذا الأمر أهمية، وكانت يتم ضبطها في أغلب الأحيان باستخدام تعريف التوقيت العالمي المنسق لوقت يونكس. وقد أدى هذا إلى تعقيد كبير في تنفيذات يونكس، وفي بروتوكول وقت الشبكة، لتنفيذ الخطوات في رقم وقت يونكس كلما حدثت ثوانٍ كبيسة.

إضافةً إلى ذلك، لقد تأثرت لجنة واجهة أنظمة التشغيل المحمولة بالحجج ضد التعقيد في وظائف المكتبة، وقام بتحديد وقت يونكس بشكل ثابت بطريقة بسيطة من حيث عناصر توقيت عالمي منسق. كان هذا التعريف بسيطًا للغاية حتى أنه لم يشمل قاعدة السنة الكبيسة في التقويم الغريغوري بالكامل، مما يجعل عام 2100 سنة كبيسة.

علاوةً على ذلك، كانت الإصدارات الأولى من نظام يونكس تحتوي على عدد صحيح مكون من 32 بت يتزايد بمعدل 60 هرتز، وهو معدل ساعة النظام على الأجهزة في أنظمة يونكس المبكرة. لا يمكن للطوابع الزمنية المخزنة بهذه الطريقة أن تمثل سوى نطاق يزيد قليلاً عن عامين وربع العام. تم تغيير العصر الذي يتم العد منه مع إصدارات يونكس لمنع التدفق الزائد، مع منتصف الليل في 1 يناير 1971 و 1 يناير 1972 تم استخدامهما كعصرين خلال التطوير المبكر لنظام يونكس. كانت التعريفات المبكرة لوقت يونكس تفتقر كذلك إلى المناطق الزمنية.

من جانب آخر، عندما تمت كتابة واجهة أنظمة التشغيل المحمولة، نشأ السؤال حول كيفية تعريف time_t بدقة في مواجهة الثواني الكبيسة. نظرت لجنة واجهة أنظمة التشغيل المحمولة في ما إذا كان ينبغي أن يظل وقت يونكس، كما هو مقصود، عبارة عن عدد خطي من الثواني منذ العصر، على حساب التعقيد في التحويلات باستخدام الوقت المدني أو تمثيل الوقت المدني، على حساب التناقض حول الثواني الكبيسة. لم تكن ساعات الكمبيوتر في ذلك العصر مضبوطة بدقة كافية لتشكل سابقة في اتجاه أو آخر.

وفي السياق ذاته، تم اختيار التاريخ الحالي، 1 يناير 1970، الساعة 00:00:00 بالتوقيت العالمي المنسق، بشكل تعسفي من قِبل مهندسي يونكس لأنه كان يُعتبر تاريخًا مناسبًا للعمل. تم تغيير الدقة إلى الثواني لتجنب تجاوز الحد الأقصى للوقت.

القيود

وفي السياق ذاته، صُمم وقت يونكس لترميز تواريخ وأوقات التقويم بطريقة مُختصرة، مُصممة للاستخدام الداخلي لأجهزة الكمبيوتر. ليس من المُصمم أن يُقرأ بسهولة من قِبَل البشر أو لتخزين قيم مُرتبطة بالمنطقة الزمنية. كما أنه مُقيد افتراضيًا بتمثيل الوقت بالثواني، مما يجعله غير مُناسب للاستخدام عند الحاجة إلى قياس دقيق للوقت، مثل قياس وقت تنفيذ البرامج.

متغير يحسب الثواني الكبيسة

إضافةً إلى ذلك، تتضمن متغيرات أخرى غير متوافقة وأكثر ندرة في نظام يونكس لقياس الوقت زيادة القيمة لجميع الثواني، بما في ذلك الثواني الكبيسة؛ يتم تكوين بعض أنظمة لينكس بهذه الطريقة. يُشار أحيانًا إلى الوقت المحفوظ بهذه الطريقة باسم «التوقيت الذري العالمي» (على الرغم من أنه يمكن تحويل الطوابع الزمنية إلى توقيت عالمي منسق إذا كانت القيمة تتوافق مع وقت يكون فيه الفرق بين TAI وتوقيت عالمي منسق معروفًا)، على عكس «التوقيت العالمي المنسق» (على الرغم من أن ليس كل قيم توقيت عالمي منسق لها مرجع فريد في الأنظمة التي لا تحسب الثواني الكبيسة).

إضافةً إلى ذلك، لأن TAI لا يحتوي على ثوانٍ كبيسة، وطول كل يوم في TAI هو 86400 ثانية بالضبط، فإن هذا الترميز هو في الواقع عدّ خطي للثواني المنقضية منذ 1970-01-01T00:00:10 TAI. هذا يُسهّل حساب الفواصل الزمنية إلى حدّ كبير. قيم الوقت من هذه الأنظمة لا تعاني من الغموض الذي تعاني منه أنظمة واجهة أنظمة التشغيل المحمولة المتوافقة تمامًا أو الأنظمة التي تعمل بنظام NTP.

وفي هذا السياق، هذا النظام، على الرغم من تشابهه الظاهري، ليس زمن يونكس. يقوم بترميز الأوقات بقيم تختلف بعدة ثوانٍ عن قيم وقت واجهة أنظمة التشغيل المحمولة. نسخة من هذا النظام، حيث كان العصر 1970-01-01T00:00:00TAI بدلاً من 1970-01-01T00:00:10تم اقتراح تضمين TAI في الخاص بإيزو سي، ولكن تم قبول جزء توقيت عالمي منسق فقط في سنة 2011. ومع ذلك، توجد في سي++20.

وفي هذا الصدد، في هذه الأنظمة، من الضروري استشارة جدول الثواني الكبيسة للتحويل بشكل صحيح بين توقيت عالمي منسق وتمثيل وقت يونكس الزائف. يشبه هذا الطريقة التي يجب بها استشارة جداول المنطقة الزمنية للتحويل من وإلى ؛ تتضمن قاعدة بيانات المنطقة الزمنية IANA معلومات الثانية الكبيسة، ويستعمل كود العينة المتاح من نفس المصدر هذه المعلومات للتحويل بين الطوابع الزمنية المستندة إلى TAI والوقت المحلي. ويواجه التحويل كذلك مشاكل تعريفية قبل بدء العمل بالشكل الحالي للتوقيت العالمي المنسق في سنة 1972 (انظر قسم أساس التوقيت العالمي المنسق أدناه).

دليل مبرمج يونكس، الطبعة الأولى

ومن جهة أخرى، خوارزميات التاريخ منخفضة المستوى المتوافقة مع الكرونو – خوارزميات لتحويل التاريخ بين الميلادي واليولياني وعدد الأيام منذ بداية وقت يونكس

الحساب الشخصي لقرارات واجهة أنظمة التشغيل المحمولة بقلم

الأحداث البارزة في وقت يونكس

ومن ناحية أخرى، يتم وصف الأحداث التي يحتفل بها هؤلاء عادةً بأنها «إن ثانية منذ عصر يونكس»، ولكن هذا غير دقيق؛ كما تمت مناقشته أعلاه، بسبب التعامل مع الثواني الكبيسة في وقت يونكس فإن عدد الثواني المنقضية منذ عصر يونكس أكبر قليلاً من رقم وقت يونكس للأوقات اللاحقة للعصر.

من جانب آخر، لدى عشاق يونكس تاريخ في إقامة (تُنطق «حفلات شاي الوقت») للاحتفال بالقيم المهمة لرقم وقت يونكس. وهذه تشبه بشكل مباشر احتفالات رأس السنة الجديدة التي تحدث عند تغيير العام في الكثير من التقويمات. مع انتشار استخدام وقت يونكس، انتشرت كذلك ممارسة الاحتفال بإنجازاته. عادةً ما يتم الاحتفال بقيم الوقت التي تكون عبارة عن أرقام تقريبية في النظام العشري، بحسب اتفاقية يونكس لعرض قيم time_t في النظام العشري. ومن بين بعض المجموعات يتم الاحتفال كذلك بالأرقام الثنائية المستديرة، مثل +2 30، الذي حدث في الساعة 13:37:04 بالتوقيت العالمي المنسق يوم السبت، 10 يناير 2004.

ومن ناحية أخرى، في الساعة 18:36:57 بتوقيت عالمي منسق يوم الأربعاء 17 في أكتوبر 1973، حدث أول ظهور للتاريخ بتنسيق أيزو 8601 ضمن أرقام وقت يونكس (119731017).

علاوةً على ذلك، في الساعة 01:46:40 بالتوقيت العالمي المنسق يوم الأحد 9 في سبتمبر 2001، تم الاحتفال بمليارية يونكس (رقم وقت يونكس ). اسم المليار هو عبارة عن كلمة مليار وألفية. واجهت بعض البرامج التي تخزن الطوابع الزمنية باستخدام تمثيل نصي أخطاء في الفرز، كما هو الحال في فرز النص، حيث تم فرز الأوقات بعد الدورة التي تبدأ برقم واحد بشكل خاطئ قبل الأوقات السابقة التي تبدأ برقم 9. وشملت البرامج المتأثرة قارئ يوزنت الشهير متراسلك وعميل البريد الإلكتروني متراسلك، وهو جزء من بيئة سطح مكتب كيدي. كانت مثل هذه الأخطاء تجميلية في طبيعتها بشكل عام، وتم إصلاحها بسرعة بمجرد ظهور المشاكل. أثرت المشكلة كذلك على الكثير من مرشحات تنسيق المستندات فيلتركس المتوفرة مع إصدارات لينكس من ووردبيرفكت ؛ وقد تم إنشاء تصحيح بواسطة مجتمع المستعملين لحل هذه المشكلة، حيث لم تعد شركة كوريل تبيع أو تدعم هذا الإصدار من البرنامج.

من جانب آخر، في الساعة 23:31:30 بالتوقيت العالمي المنسق يوم الجمعة 13 في فبراير 2009، وصل التمثيل العشري لوقت يونكس . احتفلت جوجل بهذا من خلال رسم جوجل دودل. أقيمت الحفلات والاحتفالات الأخرى في جميع أنحاء العالم، بين مختلف الثقافات الفرعية التقنية، للاحتفال بالثانية

مجموعة من الأوقات القابلة للتمثيل

من جانب آخر، لا يتطلب وقت يونكس حسب التصميم حجمًا محددًا للتخزين، ولكن أغلب التنفيذات الشائعة لوقت يونكس تستعمل عددًا صحيحًا موقّعًا بنفس حجم حجم كلمة الأجهزة الأساسية. نظرًا لأن غالبية أجهزة الكمبيوتر الحديثة هي 32 بت أو 64 بت، ولا يزال عدد كبير من البرامج مكتوبًا في وضع التوافق 32 بت، فهذا يعني أن الكثير من البرامج التي تستعمل وقت يونكس تستعمل حقول عدد صحيح موقعة 32 بت. القيمة القصوى لعدد صحيح مكون من 32 بت هي ، والقيمة الدنيا هي ، مما يجعل من المستحيل تمثيل التواريخ قبل 13 ديسمبر 1901 (في الساعة 20:45:52 بالتوقيت العالمي المنسق) أو بعد 19 يناير 2038 (في الساعة 03:14:07 بالتوقيت العالمي المنسق). يمكن أن يكون للقطع المبكر تأثير على قواعد البيانات التي تخزن المعلومات التاريخية؛ في بعض قواعد البيانات حيث يتم استخدام وقت يونكس 32 بت للطوابع الزمنية، قد يكون من الضروري تخزين الوقت في شكل مختلف من الحقول، مثل سلسلة، لتمثيل التواريخ قبل عام 1901. تُعرف عملية القطع المتأخرة باسم مشكلة عام 2038 ولديها القدرة على التسبب في مشكلات مع اقتراب التاريخ، حيث ستعود التواريخ التي تقع بعد عملية القطع لعام 2038 إلى بداية النطاق القابل للتمثيل في سنة 1901.

كذلك، لا تشكل حدود نطاق التاريخ مشكلة مع التمثيلات المكونة من 64 بت لوقت يونكس، حيث أن النطاق الفعال للتواريخ التي يمكن تمثيلها باستخدام وقت يونكس المخزن في عدد صحيح مكون من 64 بت يزيد عن 584 مليار سنة، أو 292 مليار سنة في أي اتجاه من عصر 1970.

البدائل

كذلك، يستعمل بروتوكول وقت الشبكة المستعمل لتنسيق الوقت بين أجهزة الكمبيوتر حقبة زمنية قدرها 1 يناير 1900، تم حسابه في عدد صحيح غير موقّع مكون من 32 بت للثواني وعدد صحيح غير موقّع آخر مكون من 32 بت للثواني الكسرية، والذي يتكرر كل 2 ثانية (مرة واحدة كل 136 عامًا على وجه التقريب).

وفي السياق ذاته، توفر الكثير من التطبيقات ولغات البرمجة طرقًا لتخزين الوقت باستخدام منطقة زمنية محددة. هناك كذلك عدد من معايير تنسيق الوقت التي تم إنشاؤها لتكون قابلة للقراءة من قبل البشر وأجهزة الكمبيوتر، مثل إيزو 8601.

كذلك، وقت يونكس ليس هو المعيار الوحيد للوقت الذي يتم احتسابه بعيدًا عن العصر. في نظام التشغيل Windows، يخزن نوع FILETIME الوقت كعدد من الفواصل الزمنية التي تبلغ 100 نانوثانية والتي انقضت منذ الساعة 0:00 بتوقيت جرينتش في يوم 1 يناير 1601. يتم استخدام وقت عصر Windows لتخزين الطوابع الزمنية للملفات وفي البروتوكولات مثل خدمة وقت أكتيف ديريكتوري و.

قاعدة التوقيت العالمي المنسق

وفي هذا الصدد، إن معنى قيم وقت يونكس التي تقل عن +63 072 000 (أي قبل 1 يناير 1972) غير محدد بدقة. ويُفهم أن أساس أوقات يونكس هذه هو تقريب غير محدد للتوقيت العالمي المنسق. نادرًا ما كانت أجهزة الكمبيوتر في تلك الحقبة مزودة بساعات دقيقة بما يكفي لتوفير طوابع زمنية دقيقة بأجزاء من الثانية. لا يُعد وقت يونكس طريقة مناسبة لتمثيل الأوقات قبل عام 1972 في التطبيقات التي تتطلب دقة بأجزاء من الثانية؛ ويجب على هذه التطبيقات، على الأقل، تحديد شكل التوقيت العالمي المنسق أو توقيت غرينتش الذي تستعمله.

من جهة ثانية، إن التعريف الدقيق لتوقيت يونكس كترميز للتوقيت العالمي المنسق لا يثير الجدل إلا عند تطبيقه على الشكل الحالي منه. ولا يؤثر تاريخ يونكس السابق لبداية هذا الشكل من التوقيت العالمي المنسق على استخدامه في هذا العصر: فعدد الأيام من 1 يناير 1970 (عصر يونكس) إلى 1 يناير 1972 (بداية التوقيت العالمي المنسق) ليس محل شك، وعدد الأيام هو كل ما يهم في توقيت يونكس.

وفي هذا الصدد، الشكل الحالي للتوقيت العالمي المنسق، مع الثواني الكبيسة، يتم تعريفه فقط بدءًا من 1 يناير 1972. قبل ذلك، منذ عام 1 في يناير 1961 كان هناك شكل أقدم من التوقيت العالمي المنسق، والذي لم يتضمن فقط خطوات زمنية عرضية، والتي كانت بأعداد غير صحيحة من الثواني، ولكن كذلك كانت ثانية التوقيت العالمي المنسق أطول قليلاً من ثانية النظام الدولي للوحدات، وكانت تتغير بشكل دوري لتقريب دوران الأرض باستمرار. قبل عام 1961 لم يكن هناك توقيت عالمي منسق، وقبل عام 1958 لم يكن هناك قياس واسع النطاق للوقت الذري ؛ في هذه العصور، تم استخدام تقريبات توقيت جرينتش (بناءً على دوران الأرض مباشرة) بدلاً من مقياس الوقت الذري.

كذلك، اعتبارًا من عام 2009، يتم النظر في إمكانية إنهاء استخدام الثواني الكبيسة في التوقيت المدني. إحدى الوسائل المحتملة لتنفيذ هذا التغيير هي تحديد مقياس زمني جديد، يسمى التوقيت الدولي، والذي يتطابق في البداية مع التوقيت العالمي المنسق ولكن فيما بعد لا يحتوي على ثوانٍ كبيسة، وبالتالي يبقى عند إزاحة ثابتة عن التوقيت الدولي القياسي. إذا حدث هذا، فمن المحتمل أن يتم تعريف وقت يونكس مستقبليًا من حيث هذا المقياس الزمني الجديد، بدلاً من التوقيت العالمي المنسق. إن عدم اليقين بشأن ما إذا كان هذا سيحدث يجعل وقت يونكس المستقبلي لا يقل قابلية للتنبؤ عما هو عليه بالفعل: إذا لم يكن للتوقيت العالمي المنسق أي ثوانٍ كبيسة أخرى، فستكون النتيجة هي نفسها.

التعريف

ومن ناحية أخرى، يتم تعريف وقت يونكس في الوقت الحالي على أنه عدد الثواني غير الكبيسة التي مرت منذ 00:00:00توقيت عالمي منسق يوم الخميس 1 يناير 1970، والذي يشار إليه باسم عصر يونكس. يتم عادةً ترميز وقت يونكس كعدد صحيح موقّع.

علاوةً على ذلك، يُشار إلى وقت يونكس أحيانًا باسم وقت العصر. قد يكون هذا مضللًا نظرًا لأن وقت يونكس ليس نظام الوقت الوحيد الذي يعتمد على عصر معين، كما أن عصر يونكس ليس العصر الوحيد المستعمل بواسطة أنظمة الوقت الأخرى.

كذلك، وقت يونكس هو منتصف الليل بالضبط بتوقيت عالمي منسق في يوم 1 يناير 1970، مع زيادة وقت يونكس بمقدار 1 لكل ثانية غير كبيسة لاحقًا. مثلًا، 00:00:00توقيت عالمي منسق على 1 يمثل شهر يناير 1971 بتوقيت يونكس . تشير القيم السلبية، على الأنظمة التي تدعمها، إلى الأوقات التي سبقت عصر يونكس، مع انخفاض القيمة بمقدار 1 لكل ثانية غير كبيسة قبل العصر. مثلًا، 00:00:00توقيت عالمي منسق على 1 يتم تمثيل شهر يناير 1969 بتوقيت يونكس على أنه . يتكون كل يوم في وقت يونكس من ثانية بالضبط.

الاستخدام

ومن جهة أخرى، يوفر نظام التشغيل iOS واجهة برمجة تطبيقات سويفت والتي تستعمل افتراضيًا عصرًا واحدًا يناير 2001 ولكن يمكن استخدامه كذلك مع الطوابع الزمنية الخاصة بيونكس. يستعمل أندرويد وقت يونكس إلى جانب المنطقة الزمنية لواجهة برمجة تطبيقات وقت النظام الخاصة به.

من جهة ثانية، ينفذ فري باسكال وقت يونكس باستخدام الوظيفتين (32 بت غير موقعة) و (64 بت غير موقعة) بدقة 1 مللي ثانية على منصات شبيهة بيونكس.

ومن ناحية أخرى، يتم اعتماد وقت يونكس على نطاق واسع في الحوسبة بما يتجاوز تطبيقه الأصلي كوقت النظام ليونكس. يتوفر وقت يونكس في جميع واجهات برمجة التطبيقات البرمجية للنظام على وجه التقريب، بما في ذلك تلك التي توفرها أنظمة التشغيل المستندة إلى يونكس وغير المستندة إلى يونكس. توفر جميع لغات البرمجة الحديثة على وجه التقريب واجهات برمجة التطبيقات للعمل مع وقت يونكس أو تحويلها إلى بنية بيانات أخرى. يتم استخدام وقت يونكس كذلك كآلية لتخزين الطوابع الزمنية في عدد من أنظمة الملفات وتنسيقات الملفات وقواعد البيانات.

وعلى صعيد آخر، يتوفر وقت يونكس عادةً في لغات البرمجة الرئيسية ويُستعمل على نطاق واسع في برمجة تطبيقات سطح المكتب والهواتف المحمولة والويب. توفر جافا كائنًا فوريًا يحمل طابعًا زمنيًا لنظام يونكس بالثواني والنانوثانية. يوفر بايثون مكتبة وقت تستعمل وقت يونكس. توفر جافا سكريبت مكتبة تاريخ توفر وتخزن الطوابع الزمنية بالمللي ثانية منذ عصر يونكس ويتم تنفيذها في جميع متصفحات الويب الحديثة لأجهزة الكمبيوتر المكتبية والمحمولة إلى جانب بيئات خادم جافا سكريبت مثل نود.جي إس

علاوةً على ذلك، لا يستعمل Windows وقت يونكس لتخزين الوقت داخليًا ولكنه يستعمله في واجهات برمجة التطبيقات للنظام، والتي يتم توفيرها في سي++ وتنفذ مواصفات مكتبة سي القياسية. يتم استخدام وقت يونكس في تنسيق بي إس للملفات القابلة للتنفيذ في نظام التشغيل Windows.

علاوةً على ذلك، تميل أنظمة الملفات المصممة للاستخدام مع أنظمة التشغيل المستندة إلى يونكس إلى استخدام وقت يونكس. يستعمل كل من ، المستعمل افتراضيًا عبر جميع أجهزة أبل، ونظام الملفات إكس تي 4، المستعمل على نطاق واسع على أجهزة لينكس وأندرويد، وقت يونكس بالنانوثانية لطوابع زمنية للملفات. يمكن للعديد من تنسيقات ملفات الأرشيف تخزين الطوابع الزمنية في وقت يونكس، بما في ذلك رار وتار. يُستعمل وقت يونكس كذلك بشكل شائع لتخزين الطوابع الزمنية في قواعد البيانات، بما في ذلك ماي إس كيو إل وبوستجري إس كيو إل.

وفي هذا السياق، تستعمل مكتبة سي القياسية وقت يونكس لجميع وظائف التاريخ والوقت، ويشار إلى وقت يونكس أحيانًا باسم time_t، وهو اسم نوع البيانات المستعمل للطوابع الزمنية في سي وسي++. يتم تعريف وظائف وقت يونكس في لغة سي باعتبارها واجهة برمجة تطبيقات وقت النظام في مواصفات واجهة أنظمة التشغيل المحمولة. تُستعمل مكتبة سي القياسية على نطاق واسع في جميع أنظمة تشغيل سطح المكتب الحديثة، بما في ذلك مايكروسوفت ويندوز وأنظمة شبيهة بيونكس مثل ماك أو إس ولينكس، حيث تعد واجهة برمجة قياسية.

في الثقافة الشعبية

إضافةً إلى ذلك، رواية «عمق في السماء» للكاتب فيرنور فينج تصف حضارة تجارية فضائية بعد آلاف السنين في المستقبل والتي لا تزال تستعمل عصر يونكس. يعتقد «مبرمج الآثار» المسؤول عن العثور على الكود القابل للاستخدام وصيانته في أنظمة الكمبيوتر الناضجة في البداية أن العصر يشير إلى الوقت الذي مشى فيه الإنسان لأول مرة على القمر، لكنه يدرك فيما بعد أنه «الثانية 0 من أحد أنظمة تشغيل الكمبيوتر الأولى للبشرية».

  • الملاحظات
  • المراجع
  • وصلات خارجية

تمثيل الرقم

من جانب آخر، كان هناك في الأصل بعض الجدل حول ما إذا كان يجب توقيع يونكس time_t أم لا. إذا لم يتم توقيعه، فسيتم مضاعفة نطاقه في المستقبل، مما يؤدي إلى تأجيل تجاوز 32 بت (بمقدار 68 عامًا). ومع ذلك، فإنه لن يكون قادرا على تمثيل الأوقات السابقة لهذا العصر. الإجماع هو أن يتم توقيع time_t، وهذه هي الممارسة المعتادة. تحتوي منصة تطوير البرامج لإصدار 6 من نظام التشغيل كيو إن إكس على time_t غير موقّع 32 بت، على الرغم من أن الإصدارات الأقدم استعملت نوعًا موقّعًا.

في هذا الإطار، نوع بيانات يونكس time_t الذي يمثل نقطة في الوقت هو، على الكثير من المنصات، عدد صحيح موقّع، تقليديًا يتكون من 32بتات (ولكن انظر أدناه)، تقوم بتشفير رقم وقت يونكس بشكل مباشر كما هو موضح في القسم السابق. تغطي القيمة الموقعة المكونة من 32 بت ما يقرب من 68 عامًا قبل وبعد عصر 1970-01-01. الحد الأدنى للتاريخ القابل للتمثيل هو الجمعة 1901-12-13، والحد الأقصى للتاريخ القابل للتمثيل هو الثلاثاء 2038-01-19. بعد ثانية واحدة من 2038-01-19T03:14:07Z سوف يفيض هذا التمثيل في ما يعرف بمشكلة عام 2038.

ومن ناحية أخرى، يمكن تمثيل رقم يونكس الزمني بأي شكل قادر على تمثيل الأرقام. في بعض التطبيقات، يُمثَّل الرقم نصيًا كسلسلة من الأرقام العشرية، مما يُثير مشاكل إضافية بسيطة. مع ذلك، تُعد بعض التمثيلات الثنائية لأرقام يونكس زمنية ذات أهمية خاصة.

من جهة ثانية، في بعض أنظمة التشغيل الأحدث، تم توسيع time_t إلى 64 بت. يؤدي هذا إلى توسيع الأوقات القابلة للتمثيل إلى قرابة في كلا الاتجاهين، وهو ما يزيد عن عشرين ضعف عمر الكون الحالي.

من جانب آخر، تتضمن مواصفات واجهة أنظمة التشغيل المحمولة والمجموعة المفتوحة يونكس مكتبة سي القياسية، والتي تتضمن أنواع الوقت والوظائف المحددة في ملف الرأس < time.h >. تنص معايير إيزو سي على أن time_t يجب أن يكون نوعًا حسابيًا، لكنها لا تفرض أي نوع أو ترميز محدد له. يتطلب نظام واجهة أنظمة التشغيل المحمولة أن يكون time_t نوع عدد صحيح، لكنه لا يفرض أن يكون موقّعًا أو غير موقّع.

من جانب آخر، يقوم المعرف الفريد العالمي 7 بتشفير الطابع الزمني لعصر يونكس (بالمللي ثانية) في حقل غير موقّع مكون من 48 بت. هذا التمثيل صالح حتى عام 10889 م.

وعلى صعيد آخر، لا يوجد لدى يونكس تقليد لتمثيل أرقام وقت يونكس غير الصحيحة بشكل مباشر على شكل كسور ثنائية. بدلاً من ذلك، يتم تمثيل الأوقات ذات الدقة الفرعية من الثانية باستخدام التي تتكون من عددين صحيحين، الأول هو time_t (الجزء المتكامل من وقت يونكس)، والثاني هو الجزء الكسري من رقم الوقت بالمليون (في struct timeval) أو المليارات (في struct timespec). توفر هذه الهياكل تنسيق بيانات العشري، وهو مفيد لبعض التطبيقات، وسهل التحويل لتطبيقات أخرى.

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.