اول ژانویه سالروز آغاز زمان در جهان دیجیتال
به گزارش سی دی دریا، از اول ژانویه ۱۹۷۰ تا امروز، تمام کامپیوتر ها و گوشیهای جهان زمان را با یک شمارنده ساده می سنجند: تعداد ثانیه هایی که از یک لحظه ثابت گذشته است. تصمیمی مهندسی در لابراتوار های بل که با گذشت ۵۶ سال، هنوز پایه درک زمان در دنیای دیجیتال است.
به گزارش سی دی دریا به نقل از ایسنا، تمام کامپیوتر ها، تلفن های هوشمند و سرورهای در جهان، زمان را به یک روش اندازه گیری می کنند بصورت تعداد ثانیه های سپری شده از ساعت ۰۰: ۰۰: ۰۰ به وقت ساعت هماهنگ جهانی (UTC) که از اولین روز ژانویه ۱۹۷۰ شروع شده است. این لحظه با نام «مبدا یونیکس» (Unix epoch) شناخته می شود و پایه و اساس درک زمان برای دستگاه های دیجیتال است.
چرا اول ژانویه ۱۹۷۰ بعنوان مبدا انتخاب شد؟ پاسخ این پرسش به توسعه سیستم عامل یونیکس در لابراتوار های بل در اوایل دهه ۱۹۷۰ بازمی گردد.
به نقل از یوتی سی تایم، وقتی کن تامپسون و دنیس ریچی درحال ساخت یونیکس بودند، به روشی ساده برای نمایش تاریخ و زمان نیاز داشتند. بجای ذخیره تاریخ ها بصورت ترکیب های پیچیده ای از سال، ماه، روز، ساعت، دقیقه و ثانیه، آنها تصمیم گرفتند از یک عدد واحد استفاده کنند: تعداد ثانیه ها از یک نقطه ثابت در زمان.
انتخاب اول ژانویه ۱۹۷۰ تصادفی نبود. توسعه دهندگان یونیکس به یک تاریخ «نسبتا جدید» نیاز داشتند که:
رُند و به یادماندنی باشد: اول ژانویه یک سال رُند به اندازه کافی جدید باشد: آن قدر قدیمی نباشد که بیت ها را هدر دهد به اندازه کافی قدیمی باشد: بتواند تاریخ های قبل از ساخت یونیکس را پوشش دهد کاربردی باشد: نزدیک به زمانی که آنها واقعاً روی سیستم کار می کردند، باشد سال ۱۹۷۰ انتخابی عالی بود، چونکه توسعه یونیکس در سالیان ۱۹۶۹ تا ۱۹۷۰ شروع شده بود و این سال یک عدد رُند و نزدیک به زمان توسعه محسوب می شد. توسعه دهندگان می توانستند سال ۱۹۰۰ یا ۱۹۵۰ را انتخاب کنند، اما این کار در دورانی که حافظه خیلی محدود بود، بیت های باارزش را هدر می داد.
این سیستم چندین مزیت داشت:
سادگی: محاسبات زمانی به حساب و کتاب ساده تبدیل می شود. برای یافتن اختلاف زمان بین دو رویداد، فقط کافی است برچسب های زمانی آنها را از هم کم کنید. کارایی: ذخیره زمان بصورت یک عدد صحیح خیلی کارآمدتر از ذخیره جداگانه سال، ماه، روز و غیره بود. جهان شمولی: زمان یونیکس همیشه برمبنای ساعت هماهنگ جهانی است و از پیچیدگی های مربوط به منطقه های زمانی در هسته سیستم جلوگیری می کند. با این وجود، این سیستم یک مشکل مشهور هم ایجاد کرد: مشکل سال ۲۰۳۸.
مشکل سال ۲۰۳۸ چیست؟
در سیستم هایی که هنوز زمان را با عدد صحیح ۳۲ بیتی نگه می دارند، شمارنده «تعداد ثانیه های گذشته از یک ژانویه ۱۹۷۰» فقط تا یک عدد مشخص می تواند بالا برود. بیشترین عددی که یک عدد صحیحِ علامت دار ۳۲ بیتی می تواند نگه دارد، ۲، ۱۴۷، ۴۸۳، ۶۴۷ است.
وقتی تعداد ثانیه ها از این مقدار بیشتر شود، دیگر جا برای ادامه شمارش وجود ندارد و اصطلاحا عدد «سرریز» می کند؛ یعنی بجای اینکه به عدد بعدی برود، ناگهان به یک عدد منفی می پرد.
در روز ۱۹ ژانویه سال ۲۰۳۸، ساعت ۰۳: ۱۴: ۰۷ به وقت ساعت هماهنگ جهانی، برچسب های زمانی یونیکس ۳۲ بیتی سرریز (overflow) خواهند شد. این مقدار به یک عدد منفی تبدیل می شود و ممکنست سیستم ها تصور کنند تاریخ، ۱۳ دسامبر ۱۹۰۱ است. این مشکل هر سیستمی را که هنوز از اعداد صحیح ۳۲ بیتی برای زمان استفاده می نماید، تحت تاثیر قرار می دهد.
خوشبختانه، بیشتر سیستم های مدرن به برچسب های زمانی ۶۴ بیتی تغییر کرده اند که تا حدود ۲۹۲ میلیارد سال آینده سرریز نخواهند شد و این زمان خیلی فراتر از زمانی است که خورشید برای همیشه خاموش خواهد شد.
مبدأ یونیکس آن قدر بنیادی شده است که خیلی فراتر از سیستم های یونیکس استفاده می شود. ویندوز، macOS، لینوکس، اندروید، iOS و تقریباً هر زبان برنامه نویسی از زمان یونیکس درونی استفاده می نمایند، حتی اگر تاریخ را به صورت متفاوتی به کاربر نمایش دهند.
چند نقطه عطف جالب در برچسب زمانی یونیکس
در روز ۹ سپتامبر سال ۲۰۰۱ برچسب زمانی یونیکس به ۱، ۰۰۰، ۰۰۰، ۰۰۰ رسید که توسط برنامه نویسان در سرتاسر جهان جشن گرفته شد.
در روز ۱۳ فوریه سال ۲۰۰۹ این برچسب زمانی به عدد ۱، ۲۳۴، ۵۶۷، ۸۹۰ رسید.
در روز ۱۴ ژوئیه سال ۲۰۱۷ این عدد به ۱، ۵۰۰، ۰۰۰، ۰۰۰ رسید و در روز ۱۸ مه سال ۲۰۳۳ به ۲، ۰۰۰، ۰۰۰، ۰۰۰ می رسد.
امروز، وقتی زمان را روی هر دستگاه دیجیتالی بررسی می کنید، در حقیقت ترجمه ای قابل فهم برای انسان از تعداد ثانیه هایی را می بینید که از آن لحظه که بالاتر از ۵۰ سال پیش توسط توسعه دهندگان یونیکس انتخاب شد، گذشته است. اول ژانویه ۱۹۷۰، ساعت ۰۰: ۰۰: ۰۰ به مهم ترین لحظه در تاریخ محاسبات تبدیل شد نه به این علت که اتفاق مهمی در آن زمان رخداده، بلکه چون بعنوان نقطه شروع اندازه گیری تمام زمان دیجیتال انتخاب شده است.
شگفت آور است که یک تصمیم مهندسی ساده که در اوایل دهه ۱۹۷۰ گرفته شد، بازهم تعیین می کند که میلیاردها دستگاه در سرتاسر جهان چه طور زمان را درک می کنند؛ و مبدأ یونیکس را به یکی از ماندگارترین و تأثیرگذارترین استانداردهای فنی تاریخ تبدیل نموده است.
بطور خلاصه، توسعه دهندگان یونیکس به یک تاریخ نسبتا جدید نیاز داشتند که: رُند و به یادماندنی باشد: اول ژانویه یک سال رُند به قدر لازم جدید باشد: آن قدر قدیمی نباشد که بیت ها را هدر دهد به قدر لازم قدیمی باشد: بتواند تاریخ های پیش از ساخت یونیکس را پوشش دهد کاربردی باشد: نزدیک به زمانی که آنها واقعا روی سیستم کار می کردند، باشد سال ۱۹۷۰ انتخابی عالی بود، چراکه توسعه یونیکس در سالیان ۱۹۶۹ تا ۱۹۷۰ آغاز شده بود و این سال یک عدد رُند و نزدیک به زمان توسعه محسوب می شد. با این حال، این سیستم یک مشکل مشهور هم ایجاد کرد: مشکل سال ۲۰۳۸. اول ژانویه ۱۹۷۰، ساعت ۰۰: ۰۰: ۰۰ به مهم ترین لحظه در تاریخ محاسبات تبدیل شد نه به این دلیل که اتفاق مهمی در آن زمان رخداده، بلکه چون به عنوان نقطه آغاز اندازه گیری تمام زمان دیجیتال انتخاب شده است.
این مطلب را می پسندید؟
(0)
(0)
تازه ترین مطالب مرتبط
نظرات بینندگان در مورد این مطلب