تابستان 1969 و یک مینی‌کامپیوتر رها شده در زیرزمین آزمایشگاه‌های بل، نقطه عطفی بود که سرنوشت تمام فناوری‌های دیجیتال امروزی را دگرگون کرد. پروژه‌ای که در ابتدا تنها آرزوی شخصی یک پژوهشگر برای سرگرمی در ساعات خالی بود، به تدریج به خاستگاه تقریباً تمام سیستم‌عامل‌های مدرن تبدیل شد. از لینوکس و مک‌اواس گرفته تا اندروید و آی‌اواس، رگ‌های تمام دستگاه‌هایی که هر روز از آن‌ها استفاده می‌کنیم، به کدهایی باز می‌شود که روی همان ماشین ساده نوشته شدند. این روایتِ چگونگی شکل‌گیری یونیکس توسط کن تامپسون، دنیس ریچی و یک دستگاه DEC PDP-7 بلااستفاده است.

سایه‌ی سنگین مولتیکس و پایان یک همکاری مشترک

برای درک چرایی شکل‌گیری این سیستم‌عامل، باید نگاهی به زیرساخت‌هایی بیندازیم که یونیکس در واقع واکنشی مهندسی‌شده به آن‌ها بود. در اواسط دهه 60 میلادی، دانشگاه MIT، شرکت جنرال الکتریک و آزمایشگاه‌های بل AT&T دست به یک پروژه ابرطرح زدند. مولتیکس قرار بود انقلابی در حوزه سیستم‌عامل‌ها باشد. مفاهیمی که امروز بدیهی به نظر می‌رسند، در آن زمان رویاهایی پیچیده بودند: اشتراک‌گذاری زمانی منابع، سیستم فایل سلسله‌مراتبی، لینک‌دهی پویا، لایه‌های حفاظتی مبتنی بر حلقه و یک زبان فرمان یکپارچه. همه این ویژگی‌ها همزمان در یک بستر اجرایی می‌شدند.

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

کن تامپسون هرگز حاضر نشد تمام ایده‌های پشت این پروژه را دور بریزد. او معتقد بود باید عصاره مفید مولتیکس را حفظ کرد و آن را در قالبی کوچک‌تر، سریع‌تر و قابل اعتمادتر بازآفرینی نمود. حفظ سیستم فایل سلسله‌مراتبی، مدیریت فرآیندها و ایده جسورانه‌ی رفتار با سخت‌افزارها به مثابه فایل‌های متنی، از جمله اولویت‌های تامپسون بود. برای پیاده‌سازی این چارچوب جدید، او تنها یک دستگاه نیاز داشت: یک مینی‌کامپیوتر PDP-7 که هیچ‌کس از آن استفاده نمی‌کرد.

دستگاه PDP-7؛ سنگ‌بنای غیرمنتظره یک انقلاب نرم‌افزاری

ماشینی که قلب تپنده تولد یونیکس است، از نظر فنی در حد صفر قرار داشت. مدل PDP-7 در سال 1965 معرفی شد و تا سال 1969 دیگر به‌روز محسوب نمی‌شد. این مینی‌کامپیوتر 18 بیتی با تنها 8 کیلوبایت حافظه رم، عملاً یک ابزار آزمایشگاهی قدیمی بود که در قفسه‌های آزمایشگاه بل خاک می‌خورد. همین محدودیت‌های سخت‌افزاری، اما دقیقاً به دلیل همان سادگی مطلق، بستر ایده‌آلی برای آزمایش‌های تامپسون فراهم کرد.

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

بر اساس مستندات منتشرشده توسط انجمن ارتباطات IEEE، تامپسون در حدود 1 ماه، یعنی در اگوست 1969، توانست یک سیستم‌عامل خود-میزبان را توسعه دهد. این سیستم شامل یک اسمبلر، یک ویرایشگر متن ساده و یک پوسته فرمان‌پذیر بود که با کمک یک ماشین GECOS برای مراحل اولیه بارگذاری راه‌اندازی شد. ویژگی‌های کلیدی که در این نسخه اولیه پیاده‌سازی شدند، کاملاً الهام‌گرفته از مولتیکس بودند اما با حذف هرگونه پیچیدگی اضافی طراحی شدند:

  • پیاده‌سازی یک سیستم فایل سلسله‌مراتبی به جای ساختارهای تو در تو و پیچیده
  • معرفی مفهوم پردازش‌های کامپیوتری و دسترسی عادی به فایل‌های سخت‌افزاری
  • طراحی یک مفسر خط فرمان که اجرای دستورات را برای کاربران ساده می‌کرد
  • ارائه مجموعه‌ای از ابزارهای کاربردی کوچک که هر کدام یک کار خاص را انجام می‌دادند

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

از UNICS تا UNIX و جاودانگی یک میراث

سیستم جدید در روزهای نخست نامی نداشت. در سال 1970، براین کرنیگان که بعدها به دلیل کتاب مرجع برنامه‌نویسی C با ریچی به نام K&R شناخته شد، با طعقه و شوخی نام UNICS را پیشنهاد داد. این نام مخفف Unix-like ICS بود و عملاً در تضاد کامل با Multi-plexed ICS یعنی مولتیکس قرار می‌گرفت. جایی که مولتیکس نمایانگر ابرسیستم‌های چندمنظوره و سنگین بود، این پروژه قرار بود کوچک و متمرکز بماند. به مرور زمان، تلفظ و نگارش آن به UNIX تغییر یافت و نامی شد که تاریخ فناوری را برای همیشه ورق زد.

یونیکس تنها یک سیستم‌عامل نبود؛ بلکه یک مکتب فکری در مهندسی نرم‌افزار بود. سادگی، کارایی و قابلیت حمل‌پذیری که در همان 8 کیلوبایت حافظه‌ی PDP-7 شکل گرفت، امروز در هسته‌ی میلیون‌ها سرور ابری، روترهای اینترنتی، خودروهای خودران و گوشی‌های هوشمند تنفس می‌کند. اگر نگاهی به کدهای منبعی بیندازیم که روزانه زیرساخت‌های دیجیتال جهان را اداره می‌کنند، ردپای همان آزمایش‌های آزمایشگاهی در سال 1969 به وضوح دیده می‌شود. آینده‌ی سیستم‌عامل‌ها شاید به سمت معماری‌های جدید و کوانتومی حرکت کند، اما اصولی که تامپسون و ریچی در آن اتاق سرد و با آن سخت‌افزار محدود رقم زدند، هرگز فراموش نخواهند شد. فناوری زمانی شکوفا می‌شود که محدودیت‌ها به جای مانع، بهانه‌ای برای خلاقیت مهندسی تبدیل شوند.