تاریخچه سیستم‌عامل یونیکس (Unix)؛ چطور یک بازی کامپیوتری فضاییِ ارزان‌قیمت، منجر به خلق هسته مدرن‌ترین سیستم‌عامل‌های جهان شد؟

سیستم‌عامل‌هایی که امروزه بر روی سرورهای بزرگ، کامپیوترهای شخصی و گوشی هوشمند خود استفاده می‌کنیم، همگی ریشه در یک شجره‌نامه مشترک دارند. تاریخچه سیستم‌عامل یونیکس (Unix) یکی از جذاب‌ترین داستان‌های دنیای نرم‌افزار است، چرا که نشان می‌دهد چگونه شکست یک پروژه بزرگ دولتی و اشتیاق یک برنامه‌نویس برای اجرای یک بازی کامپیوتری فضایی ارزان‌قیمت، منجر به تولد هسته مدرن‌ترین سیستم‌های جهان شد. در این مقاله قصد داریم بررسی کنیم که چگونه کن تامپسون (Ken Thompson) و دنیس ریچی (Dennis Ritchie) در آزمایشگاه‌های بل، سنگ بنای این معماری ماندگار را گذاشتند. آیا بدون یونیکس، اینترنت امروزی وجود خارجی داشت؟

درک فلسفه یونیکس و ساختار ماژولار آن به ما کمک می‌کند تا بفهمیم چرا این سیستم‌عامل پس از گذشت چندین دهه، هنوز هم الگوی اصلی طراحی سیستم‌های توزیع‌شده و ایمن است. در ادامه، مسیر پرفرازونشیب این فناوری را از اتاق‌های تاریک دهه ۱۹۶۰ تا دنیای ابرمتصل امروز دنبال می‌کنیم.

فهرست مطالب

پروژه‌ شکست‌خورده مولتیکس و زمینه‌ساز تغییر بزرگ

در اواسط دهه ۱۹۶۰ میلادی، کنسرسیومی متشکل از آزمایشگاه‌های بل، جنرال الکتریک و دانشگاه ام‌آی‌تی (MIT) بر روی یک پروژه سیستم‌عامل بلندپروازانه به نام مولتیکس (Multics) کار می‌کردند. هدف از این پروژه، ساخت یک سیستم اشتراک زمانی بزرگ بود که بتواند به صدها کاربر به طور هم‌زمان خدمات‌رسانی کند. اما پروژه به دلیل پیچیدگی بیش از حد، سرعت پایین و هزینه‌های سرسام‌آور با مشکلات جدی مواجه شد و آزمایشگاه‌های بل در نهایت تصمیم به خروج از این همکاری گرفت.

این تصمیم ناامیدکننده، گروهی از محققان برجسته از جمله کن تامپسون و دنیس ریچی را بدون یک سیستم‌عامل مدرن برای کارهای تحقیقاتی‌شان رها کرد. آن‌ها که طعم کار با سیستم‌های اشتراک زمانی را چشیده بودند، نمی‌توانستند به دوران پردازش بسته‌ای قدیمی بازگردند. این بن‌بست کاری، انگیزه‌ای شد تا آن‌ها به فکر طراحی یک سیستم‌عامل ساده‌تر، چابک‌تر و کارآمدتر بیافتند که متکی به سخت‌افزارهای گران‌قیمت دولتی نباشد.

کن تامپسون و بازی سفر فضایی روی سخت‌افزار قدیمی

کن تامپسون در آن دوران یک بازی کامپیوتری به نام سفر فضایی (Space Travel) نوشته بود که در آن حرکت سیارات و سفینه‌ها شبیه‌سازی می‌شد. او برای اجرای این بازی نیاز به یک سیستم‌عامل ارزان‌قیمت داشت تا بتواند آن را روی یک کامپیوتر قدیمی و از رده خارج به نام PDP-7 اجرا کند. این کامپیوتر حافظه بسیار محدودی داشت و تامپسون مجبور بود کدهای خود را به بهینه‌ترین شکل ممکن بنویسد تا سیستم دچار کرش نشود.

در حین بازنویسی بازی برای این سخت‌افزار ضعیف، تامپسون متوجه شد که می‌تواند یک هسته سیستم‌عامل کوچک نیز برای مدیریت فایل‌ها و پردازش‌ها طراحی کند. او در تابستان سال ۱۹۶۹، زمانی که همسرش به سفر رفته بود، از وقت خالی خود استفاده کرد و بخش‌های اصلی سیستم‌عامل جدید را به زبان اسمبلی نوشت. این تلاش شخصی و تفریحی برای اجرای یک بازی ساده، سنگ بنای اولین نسخه از یونیکس را گذاشت.

همکاری دنیس ریچی و تولد زبان برنامه‌نویسی سی

نخستین نسخه‌های یونیکس به زبان اسمبلی نوشته شده بودند که به این معنی بود که سیستم‌عامل فقط روی سخت‌افزار خاص PDP-7 قابل اجرا بود و پورت کردن آن به رایانه‌های دیگر به معنای بازنویسی کامل کدها بود. دنیس ریچی، همکار تامپسون، با درک این محدودیت بزرگ فیزیکی، شروع به طراحی یک زبان برنامه‌نویسی سطح بالا و در عین حال نزدیک به سخت‌افزار کرد که در نهایت به زبان برنامه‌نویسی سی (C) معروف شد.

ریچی و تامپسون در سال ۱۹۷۳ کل هسته یونیکس را با استفاده از زبان جدید سی بازنویسی کردند که این کار یک اقدام انقلابی در آن دوران به شمار می‌رفت؛ چرا که تا پیش از آن اعتقاد بر این بود که سیستم‌عامل‌ها به دلیل نیاز به سرعت بالا حتماً باید به زبان اسمبلی نوشته شوند. با این کار، یونیکس به اولین سیستم‌عامل پرتابل یا قابل حمل تاریخ تبدیل شد که می‌توانست با تغییرات جزئی روی هر معماری سخت‌افزاری جدیدی اجرا شود.

فلسفه یونیکس مبنی بر انجام ساده یک کار مشخص

یکی از دلایل اصلی ماندگاری یونیکس، فلسفه طراحی منحصر‌به‌فرد آن است که توسط توسعه‌دهندگان اولیه تدوین شد. این فلسفه بر این اصل استوار است که هر برنامه کوچک باید فقط و فقط یک کار را به بهترین شکل ممکن انجام دهد و از پیچیدگی‌های بی‌مورد پرهیز کند. برنامه‌ها به جای اینکه سعی کنند همه‌فن‌حریف باشند، خروجی خود را به عنوان ورودی به برنامه دیگری پاس می‌دهند.

این ارتباط از طریق مفهومی به نام لوله (Pipe) برقرار می‌شود که اجازه می‌دهد ابزارهای متنی ساده با ترکیب شدن با یکدیگر، کارهای پردازشی بسیار پیچیده‌ای را انجام دهند. این رویکرد پیمانه‌ای یا ماژولار باعث شد که یونیکس فوق‌العاده انعطاف‌پذیر باشد و توسعه‌دهندگان بتوانند بدون دستکاری هسته اصلی، ابزارهای جدیدی به آن اضافه کنند. این فلسفه طراحی ساده هنوز هم در مهندسی نرم‌افزار مدرن به عنوان یک الگو تدریس می‌شود.

آزمایشگاه‌های بل و توسعه تجاری سیستم‌عامل

در دهه ۱۹۷۰، شرکت مادر آزمایشگاه‌های بل، یعنی ای‌تی‌اندتی (AT&T)، به دلیل قوانین انحصار دولتی در آمریکا، از فروش مستقیم محصولات نرم‌افزاری منع شده بود. این محدودیت قانونی توفیق اجباری بزرگی برای دنیای فناوری شد؛ زیرا ای‌تی‌اندتی مجبور شد کدهای منبع یونیکس را با هزینه‌ای ناچیز در اختیار دانشگاه‌ها و مراکز تحقیقاتی قرار دهد. این دسترسی آزاد باعث شد که نسل جدیدی از برنامه‌نویسان با معماری یونیکس آشنا شوند و شروع به بهبود آن کنند.

دانشگاه‌ها کدهای یونیکس را کالبدشکافی می‌کردند و باگ‌های آن را برطرف می‌ساختند. اما در دهه ۱۹۸۰ با تغییر قوانین، ای‌تی‌اندتی تصمیم گرفت یونیکس را تجاری‌سازی کند و مجوزهای استفاده از آن را با قیمت‌های بسیار بالا بفروشد. این کار باعث شد که دسترسی رایگان به کدهای منبع محدود شود و تنش‌های حقوقی بزرگی در جامعه کاربران شکل بگیرد.

جنگ‌های یونیکس و انشعاب‌های گوناگون آن

تلاش شرکت ای‌تی‌اندتی برای کنترل بازار و بستن کدهای منبع، منجر به بروز دورانی تاریک معروف به «جنگ‌های یونیکس» شد. شرکت‌های بزرگ سخت‌افزاری هرکدام نسخه اختصاصی و غیرسازگار خود را از روی یونیکس توسعه دادند تا مشتریان را به سخت‌افزارهای خود وابسته کنند. این انشعاب‌های گوناگون باعث شد که برنامه‌های نوشته شده برای یک نسخه، روی نسخه دیگر اجرا نشوند.

این هرج‌ومرج و دعواهای حقوقی بر سر کپی‌رایت، سرعت رشد و پذیرش یونیکس را در بخش‌های تجاری کند کرد. توسعه‌دهندگان آزاد از این وضعیت ناراضی بودند و احساس می‌کردند که روح همکاری و اشتراک دانش که یونیکس بر پایه آن شکل گرفته بود، توسط اهداف تجاری شرکت‌ها از بین رفته است. این فضا بستر مناسبی را برای شکل‌گیری جنبش‌های جایگزین فراهم کرد.

ظهور بی‌اس‌دی و تأثیر آن بر سیستم‌های مدرن

دانشگاه برکلی کالیفرنیا یکی از مراکز اصلی توسعه یونیکس بود و نسخه‌ای بهینه از آن را به نام توزیع نرم‌افزاری برکلی یا بی‌اس‌دی (BSD) منتشر کرد. این نسخه شامل نوآوری‌های بزرگی نظیر پروتکل شبکه TCP/IP بود که اینترنت امروزی بر پایه آن کار می‌کند. بی‌اس‌دی به دلیل پایداری فوق‌العاده بالا به سرعت در میان دانشگاه‌ها و مراکز پژوهشی محبوب شد.

اما دعواهای حقوقی با ای‌تی‌اندتی بر سر کدهای مشترک، توسعه بی‌اس‌دی را برای سال‌ها با کندی مواجه کرد. پس از حل این چالش‌های حقوقی، نسخه‌های آزاد بی‌اس‌دی نظیر فری‌بی‌اس‌دی (FreeBSD) متولد شدند که امروزه نیز زیرساخت‌های اصلی شبکه جهان و سرورهای شرکت‌های بزرگی مانند نتفلیکس را تامین می‌کنند. میراث بی‌اس‌دی نشان داد که کدهای آکادمیک می‌توانند تجاری‌ترین بخش‌های وب را مدیریت کنند.

ریچارد استالمن و آغاز جنبش نرم‌افزار آزاد

در پاسخ به تجاری شدن و انحصارطلبی شرکت‌ها پیرامون یونیکس، ریچارد استالمن در سال ۱۹۸۳ پروژه گنو (GNU) را آغاز کرد. هدف استالمن ساخت یک سیستم‌عامل کاملاً آزاد و شبیه به یونیکس بود که هیچ کدی از ای‌تی‌اندتی در آن وجود نداشته باشد تا کاربران بتوانند آزادانه آن را مطالعه، اصلاح و توزیع کنند. نام گنو مخفف بازگشتی «گنو یونیکس نیست» (GNU’s Not Unix) انتخاب شد تا هم‌زمان احترام و استقلال خود را از سیستم قدیمی نشان دهد.

استالمن ابزارهای بسیار مهمی نظیر کامپایلر جی‌سی‌سی (GCC) و ویرایشگرهای متنی قدرتمندی را توسعه داد که برای ساخت یک سیستم‌عامل کامل ضروری بودند. تنها قطعه باقی‌مانده برای تکمیل پروژه گنو، یک هسته یا کرنی (Kernel) پایدار بود. این قطعه گمشده چند سال بعد از راه رسید و قطعه پازل دنیای نرم‌افزارهای آزاد را کامل کرد.

تولد لینوکس توسط لینوس توروالدز و تکامل یونیکس

در سال ۱۹۹۱، یک دانشجوی فنلاندی به نام لینوس توروالدز از محدودیت‌های سیستم‌عامل‌های آموزشی خسته شد و تصمیم گرفت هسته خود را بنویسد که با استانداردهای یونیکس سازگار باشد. این هسته که لینوکس (Linux) نام گرفت، با ترکیب شدن با ابزارهای سیستم‌عامل آزاد گنو، یک سیستم‌عامل کامل و کاملاً رایگان را تشکیل داد. لینوکس به دلیل ساختار باز خود به سرعت توسط هزاران برنامه‌نویس در سراسر جهان پذیرفته و توسعه داده شد.

امروزه لینوکس به عنوان موفق‌ترین فرزند معنوی یونیکس، بیش از ۹۰ درصد از سرورهای ابری جهان، ابرکامپیوترها و زیرساخت‌های اینترنت را مدیریت می‌کند. گرچه لینوکس کدهای اصلی یونیکس را در خود ندارد، اما از نظر فلسفه طراحی و معماری داخلی، کاملاً به آن وفادار مانده است. این تکامل نشان داد که چگونه یک ایده دانشگاهی ساده می‌تواند به دست جامعه کاربران جهانی به کمال برسد.

نفوذ یونیکس در معماری سیستم‌عامل مک و گوشی هوشمند

تأثیر یونیکس فراتر از سرورهای بزرگ و لینوکس است؛ هسته سیستم‌عامل‌های شرکت اپل از جمله مک‌او‌اس (macOS) و آی‌او‌اس (iOS) بر پایه یک سیستم یونیکسی به نام داروین (Darwin) بنا شده است. استیو جابز پس از خروج از اپل شرکت نکست (NeXT) را تاسیس کرد و سیستم‌عاملی بر پایه یونیکس ساخت که بعدها پس از بازگشت او به اپل، شالوده سیستم‌عامل‌های مدرن این شرکت شد.

همچنین اندروید که محبوب‌ترین سیستم‌عامل گوشی هوشمند در دنیاست، بر پایه هسته لینوکس که خود برگرفته از اصول یونیکس است کار می‌کند. این یعنی در جیب میلیاردها انسان در سراسر زمین، یک سیستم یونیکسی کوچک در حال کار است. این نفوذ همه‌جانبه نشان می‌دهد که اصول طراحی یونیکس تا چه حد انعطاف‌پذیر و کارآمد بوده‌اند که توانسته‌اند از ابررایانه‌ها تا ریزتراشه‌های موبایل را مدیریت کنند.

امنیت و پایداری ساختار یونیکس در مقایسه با رقبا

سیستم‌های خانواده یونیکس از ابتدا برای محیط‌های چندکاربره طراحی شده بودند و به همین دلیل سیستم مدیریت دسترسی فایل‌ها در آن‌ها بسیار سخت‌گیرانه و لایه‌بندی شده است. در یونیکس، هر کاربر قلمرو محدودی دارد و بدون دسترسی ریشه (Root) نمی‌تواند به فایل‌های حساس سیستم آسیب برساند. این ویژگی ساختاری تفاوت بزرگی با سیستم‌های اولیه ویندوز داشت که در آن‌ها برنامه‌ها دسترسی کاملی به هسته داشتند.

این معماری امنیتی باعث شده که یونیکس و توزیع‌های لینوکسی در برابر بدافزارها و ویروس‌ها بسیار مقاوم‌تر باشند. پایداری بالای این سیستم‌ها به گونه‌ای است که سرورهای یونیکسی می‌توانند سال‌ها بدون نیاز به ریبوت شدن کار کنند و فرآیندهای سنگین را مدیریت نمایند. این ویژگی‌ها یونیکس را به انتخاب اول برای زیرساخت‌های حیاتی، پایگاه‌های داده بزرگ و سیستم‌های مالی تبدیل کرده است.

آینده میراث یونیکس در پردازش ابری و اینترنت اشیا

با گذشت بیش از نیم قرن از تولد یونیکس، مفاهیم پایه‌ای آن همچنان در خط مقدم فناوری‌های نوین نظیر کانتینرها (Containers)، کوبرنتیز و پردازش ابری قرار دارند. ابزارهای مجازی‌سازی مدرن نظیر داکر به شدت به ویژگی‌های هسته لینوکس و ساختارهای ایزوله‌سازی یونیکسی متکی هستند. این فناوری‌ها اجازه می‌دهند هزاران برنامه به صورت ایزوله روی یک سرور فیزیکی اجرا شوند.

در حوزه اینترنت اشیا (IoT) و تجهیزات هوشمند خانگی نیز، نسخه‌های سبک‌شده از هسته‌های یونیکسی به دلیل پایداری بالا و مصرف کم منابع استفاده می‌شوند. به نظر می‌رسد تا زمانی که محاسبات رایانه‌ای بر پایه مدیریت فایل‌ها و پردازش‌ها استوار باشد، اصول طراحی کن تامپسون و دنیس ریچی زنده خواهند ماند. یونیکس اثبات کرد که نرم‌افزار خوب مانند یک اثر هنری کلاسیک با گذشت زمان ارزش خود را از دست نمی‌دهد.

جمع‌بندی نهایی

تاریخچه سیستم‌عامل یونیکس نشان می‌دهد که چگونه یک ایده سرگرم‌کننده برای اجرای یک بازی کامپیوتری ساده، می‌تواند جهان را دگرگون کند. همکاری تاریخی کن تامپسون و دنیس ریچی در آزمایشگاه‌های بل منجر به خلق زبانی جدید و سیستم‌عاملی شد که پایه‌گذار دنیای دیجیتال مدرن است. فلسفه یونیکس مبنی بر سادگی، ماژولار بودن و پرتابل بودن، استانداردهای جدیدی را در صنعت نرم‌افزار تعریف کرد. امروزه تمام دستگاه‌های هوشمند ما از مک‌بوک‌ها گرفته تا گوشی هوشمند اندرویدی و سرورهای اینترنت، همگی فرزندان مستقیم یا غیرمستقیم این شاهکار مهندسی هستند و این میراث همچنان ادامه دارد.

سوالات متداول

۱. بازی سفر فضایی چگونه منجر به نوشتن یونیکس شد؟
کن تامپسون برای اجرای این بازی روی کامپیوتر قدیمی PDP-7 نیاز به سیستمی برای مدیریت فایل‌ها داشت. این رایانه ضعیف فاقد سیستم‌عامل مناسب برای اجرای برنامه‌های کاربری تعاملی بود. تامپسون مجبور شد کدهای بهینه‌ای برای کنترل دیسک و پردازش‌ها به صورت مجزا بنویسد. این کدهای هسته اولیه در نهایت توسعه یافتند و به سیستم‌عامل یونیکس تبدیل شدند.
۲. چرا بازنویسی یونیکس به زبان C یک انقلاب فنی بود؟
تا پیش از آن تمام سیستم‌عامل‌ها به زبان اسمبلی که وابسته به سخت‌افزار خاصی بود نوشته می‌شدند. بازنویسی یونیکس به زبان سی باعث شد این سیستم‌عامل به راحتی روی دستگاه‌های جدید پورت شود. این کار سرعت توسعه نرم‌افزار و پایداری سیستم را به شدت افزایش داد. این حرکت مسیر استانداردسازی سیستم‌عامل‌ها را هموار کرد.
۳. مفهوم «لوله» (Pipe) در یونیکس به چه معناست؟
لوله ابزاری است که اجازه می‌دهد خروجی یک برنامه به عنوان ورودی برنامه بعدی استفاده شود. این قابلیت به کاربران اجازه می‌دهد بدون تغییر کدهای اصلی، ابزارهای کوچک را ترکیب کنند. با این کار فرآیندهای بسیار پیچیده پردازش متن به سادگی انجام می‌شود. این ایده پایه و اساس خط فرمان‌های قدرتمند امروزی است.
۴. چه تفاوتی میان یونیکس و لینوکس وجود دارد؟
یونیکس سیستم‌عامل اصلی و تجاری است که حقوق آن متعلق به شرکت‌های خاصی بود. لینوکس یک شبیه‌ساز آزاد و بازنویسی شده از روی اصول یونیکس توسط لینوس توروالدز است. کدهای لینوکس کاملاً رایگان و تحت مجوزهای نرم‌افزار آزاد منتشر شده‌اند. با این حال ساختار درونی هر دو سیستم شباهت بسیار زیادی دارد.
۵. نقش یونیکس در شکل‌گیری سیستم‌عامل مک‌او‌اس چیست؟
هسته اصلی مک‌او‌اس بر پایه یونیکس توسعه یافته و دارای گواهینامه رسمی یونیکس است. شرکت اپل با استفاده از سیستم‌های مبتنی بر بی‌اس‌دی توانست پایداری بالایی برای مک ایجاد کند. این یعنی محیط متنی پایینی مک کاملاً با دستورات یونیکس سازگار است. این ترکیب زیبایی رابط گرافیکی و قدرت سیستم‌های صنعتی را با هم ارائه داد.
۶. چرا سیستم‌های یونیکسی در برابر ویروس‌ها مقاوم‌تر هستند؟
ساختار یونیکس به صورت چندکاربره طراحی شده و دسترسی‌ها به شدت تفکیک شده‌اند. برنامه‌های عادی بدون داشتن رمز عبور ریشه نمی‌توانند به فایل‌های سیستمی دسترسی یابند. این محدودیت مانع از انتشار خودکار فایل‌های مخرب در کل سیستم عامل می‌شود. این امنیت بالا دلیل استفاده گسترده از لینوکس در سرورهاست.
۷. پروژه گنو (GNU) چه رابطه‌ای با یونیکس داشت؟
پروژه گنو توسط ریچارد استالمن برای ایجاد یک سیستم‌عامل کاملاً آزاد شبیه به یونیکس کلید خورد. هدف این بود که ابزارهای سیستمی بدون وابستگی به لایسنس‌های تجاری یونیکس ساخته شوند. گنو ابزارهایی مانند کامپایلرها و شل‌ها را ساخت که بعدها با هسته لینوکس ادغام شدند. این پروژه پایه و اساس جنبش نرم‌افزارهای متن باز امروزی شد.
دکتر علیرضا مجیدی
دکتر علیرضا مجیدی
پزشک، نویسنده و بنیان‌گذار وبلاگ «یک پزشک»
دکتر علیرضا مجیدی، نویسنده و بنیان‌گذار وبلاگ «یک پزشک».
با بیش از ۲۰ سال نویسندگی «ترکیبی» مستمر در زمینهٔ پزشکی، فناوری، سینما، کتاب و فرهنگ.
باشد که با هم متفاوت بیاندیشیم!

8 دیدگاه

  1. من همیشه سایت شما را دنبال می کنم ولی متاسفانه کم نظر می دهم ،اول تشکر به خاطر برنامه 01 ،دوم اگر می شود در آپارات هم قرار دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
[wpcode id="260079"]