به گزارش رصد اقتصادی ، تمام رایانهها، تلفنهای هوشمند و سرورهای در جهان، زمان را به یک روش اندازهگیری میکنند بهصورت تعداد ثانیههای سپریشده از ساعت 00:00:00 به وقت ساعت هماهنگ جهانی (UTC) که از نخستین روز ژانویه 1970 آغاز شده است. این لحظه با نام «مبدا یونیکس» (Unix epoch) شناخته میشود و پایه و اساس درک زمان برای دستگاههای دیجیتال است.
چرا اول ژانویه 1970 به عنوان مبدا انتخاب شد؟ پاسخ این پرسش به توسعه سیستمعامل یونیکس در آزمایشگاههای بل در اوایل دهه 1970 بازمیگردد.
به نقل از یوتیسی تایم، وقتی کن تامپسون و دنیس ریچی در حال ساخت یونیکس بودند، به روشی ساده برای نمایش تاریخ و زمان نیاز داشتند. بهجای ذخیره تاریخها بهصورت ترکیبهای پیچیدهای از سال، ماه، روز، ساعت، دقیقه و ثانیه، آنها تصمیم گرفتند از یک عدد واحد استفاده کنند: تعداد ثانیهها از یک نقطه ثابت در زمان.
انتخاب اول ژانویه 1970 تصادفی نبود. توسعهدهندگان یونیکس به یک تاریخ «نسبتا جدید» نیاز داشتند که:
رُند و بهیادماندنی باشد: اول ژانویه یک سال رُند
به اندازه کافی جدید باشد: آنقدر قدیمی نباشد که بیتها را هدر دهد
به اندازه کافی قدیمی باشد: بتواند تاریخهای پیش از ساخت یونیکس را پوشش دهد
کاربردی باشد: نزدیک به زمانی که آنها واقعا روی سیستم کار میکردند، باشد
سال 1970 انتخابی عالی بود، زیرا توسعه یونیکس در سالهای 1969 تا 1970 آغاز شده بود و این سال یک عدد رُند و نزدیک به زمان توسعه محسوب میشد. توسعهدهندگان میتوانستند سال 1900 یا 1950 را انتخاب کنند، اما این کار در دورانی که حافظه بسیار محدود بود، بیتهای ارزشمند را هدر میداد.
این سیستم چندین مزیت داشت:
سادگی: محاسبات زمانی به حساب و کتاب ساده تبدیل میشود. برای یافتن اختلاف زمان بین دو رویداد، فقط کافی است برچسبهای زمانی آنها را از هم کم کنید.
کارایی: ذخیره زمان به صورت یک عدد صحیح بسیار کارآمدتر از ذخیره جداگانه سال، ماه، روز و غیره بود.
جهانشمولی: زمان یونیکس همیشه بر اساس ساعت هماهنگ جهانی است و از پیچیدگیهای مربوط به منطقههای زمانی در هسته سیستم جلوگیری میکند.
با این حال، این سیستم یک مشکل مشهور نیز ایجاد کرد: مشکل سال 2038.
مشکل سال 2038 چیست؟
اول ژانویه؛ سالروز آغاز زمان در جهان دیجیتال
در سیستمهایی که هنوز زمان را با عدد صحیح 32 بیتی نگه میدارند، شمارنده «تعداد ثانیههای گذشته از یک ژانویه 1970» فقط تا یک عدد مشخص میتواند بالا برود. بیشترین عددی که یک عدد صحیحِ علامتدار 32 بیتی میتواند نگه دارد، 2,147,483,647 است.
وقتی تعداد ثانیهها از این مقدار بیشتر شود، دیگر جا برای ادامه شمارش وجود ندارد و اصطلاحا عدد «سرریز» میکند؛ یعنی بهجای اینکه به عدد بعدی برود، ناگهان به یک عدد منفی میپرد.
در روز 19 ژانویه سال 2038، ساعت 03:14:07 به وقت ساعت هماهنگ جهانی، برچسبهای زمانی یونیکس 32 بیتی سرریز (overflow) خواهند شد. این مقدار به یک عدد منفی تبدیل میشود و ممکن است سیستمها تصور کنند تاریخ، 13 دسامبر 1901 است. این مشکل هر سیستمی را که هنوز از اعداد صحیح 32 بیتی برای زمان استفاده میکند، تحت تأثیر قرار میدهد.
خوشبختانه، بیشتر سیستمهای مدرن به برچسبهای زمانی 64 بیتی تغییر کردهاند که تا حدود 292 میلیارد سال آینده سرریز نخواهند شد و این زمان بسیار فراتر از زمانی است که خورشید برای همیشه خاموش خواهد شد.
مبدأ یونیکس آنقدر بنیادی شده است که بسیار فراتر از سیستمهای یونیکس استفاده میشود. ویندوز، macOS، لینوکس، اندروید، iOS و تقریبا هر زبان برنامهنویسی از زمان یونیکس درونی استفاده میکنند، حتی اگر تاریخ را به شکل متفاوتی به کاربر نمایش دهند.
چند نقطه عطف جالب در برچسب زمانی یونیکس
در روز 9 سپتامبر سال 2001 برچسب زمانی یونیکس به 1,000,000,000 رسید که توسط برنامهنویسان در سراسر جهان جشن گرفته شد.
در روز 13 فوریه سال 2009 این برچسب زمانی به عدد 1,234,567,890 رسید.
در روز 14 ژوئیه سال 2017 این عدد به 1,500,000,000 رسید و در روز 18 مه سال 2033 به 2,000,000,000 میرسد.
امروز، وقتی زمان را روی هر دستگاه دیجیتالی بررسی میکنید، در واقع ترجمهای قابلفهم برای انسان از تعداد ثانیههایی را میبینید که از آن لحظه که بیش از 50 سال پیش توسط توسعهدهندگان یونیکس انتخاب شد، گذشته است. اول ژانویه 1970، ساعت 00:00:00 به مهمترین لحظه در تاریخ محاسبات تبدیل شد نه به این دلیل که اتفاق مهمی در آن زمان رخ داده، بلکه چون بهعنوان نقطه شروع اندازهگیری تمام زمان دیجیتال انتخاب شده است.
شگفتآور است که یک تصمیم مهندسی ساده که در اوایل دهه 1970 گرفته شد، همچنان تعیین میکند که میلیاردها دستگاه در سراسر جهان چگونه زمان را درک میکنند؛ و مبدأ یونیکس را به یکی از ماندگارترین و تأثیرگذارترین استانداردهای فنی تاریخ تبدیل کرده است.

0 دیدگاه