تاریخچه یونیکس

تاریخجه یونیکس به اواسط دهه ۱۹۶۰ برمی‌گردد، وقتی که Massachusetts Institute of Technology، آزمایشگاه‌های بل AT-T و ژنرال الکتریک یک سیسنم‌عامل اشتراک زمانی آزمایشی به نام مولتیکس را برای رایانه مین‌فریم GE-645 توسعه می‌دادند.
آزمایشگاه‌های بل که از پیچیدگی و اندازه مولتیکس ناامید شده بود، اما هنوز اهداف آن را در سر می‌پروراند، به آهستگی از پروژه کناره‌گیری کرد. آخرین پزوهشگران آنها که پروژه مولتیکس را ترک کردند، کن تامسون، دنیس ریچی، داگاس مک‌ایلروی و جو اوسانا بودند. آنها تصمیم گرفتند تا کار را از ابتدا و در مقیاسی بسیار کوچکتر شروع کنند. در سال ۱۹۷۹، دنیس ریچی اینگونه دید خود نسبت به یونیکس را بیان کرد:
چیزی که ما قصد حفظ آن را داشتیم تنها یک محیط خوب که بتوانیم در آن برنامه‌نویسی کنیم، نبود، بلکه سیستمی بود که حول آن دوستی شکل بگیرد. ما از روی تجربه می‌دانستیم که جوهر رایانش اشتراکی، آن طور که از طریق ماشین‌های اشتراک زمانی قابل دسترس از راه دور فراهم می‌شد، تنها این نبود که برنامه‌ها در عوض یک پژنگ‌نگار، در یک ترمینال تایپ شوند، بلکه، یاری رساندن به ارتباط نزدیک و صمیمی بود.
در حالی که کن تامسون هنوز به محیط مولتیکس دسترسی داشت، بر روی آن شبیه‌سازهای جدیدی برای سیستم صفحه‌بندی و سیستم فایل نوشت. او همچنین یک بازی ویدئویی تحت عنوان سفر فضایی نوشت. اما برای اجرای این بازی، احتیاج به یک رایانه کاراتر و ارزان‌تر بود. او در نهایت یک PDP-7 که خیلی از آن استفاده نشده بود، در آزمایشگاه‌های بل پیدا کرد. در سال ۱۹۶۹، تیمی از محققان آزمایش‌گاه‌های بل به رهبری تامسون و ریچی، و با حضور رود کانادی، بر روی این PDP-7، یک فایل سیستم سلسله‌مراتبی، مفهوم فرایندهای رایانه‌ای، فایل‌های دستگاهی، مفسر خط فرمان و تعدادی برنامه کوچک را توسعه دادند.
دهه ۱۹۷۰
در سال ۱۹۷۰، Peter Neumann نام UNICS را برای پروژه انتخاب کرد که برگرفته از عبارت UNiplexed Information and Computing Service به معنای «سرویس رایانشی و اطلاعاتی یونیپلکس‌شده» است. این نام، یک جور بازی با نام Multics است. (خود کلمه Multics از عبارت Multiplexed Information and Computer Services به معنای «سرویس رایانه‌ای و اطلاعاتی تسهیم‌شده» گرفته شده‌است) کلمه Uniplexed تنها یک بازی با کلمه Multiplexed است و معنای خاصی ندارد. این نام به این خاطر انتخاب شد که یونیکس، همان مولتیکس اما به صورت عقیم‌شده بود.
تا این لحظه، آزمایشگاه‌های بل از این پروزه حمایت مالی نمی‌کرد. وقتی که گروه تحقیقاتی علوم رایانه خواست از یونیکس بر روی ماشینی بزرگ‌تر از یک PDP-7 استفاده کند، تامسون و ریچی موفق شدند تا در ازای افزودن قابلیت‌هایی برای پردازش متن به یونیکس، یک ماشین PDP-11/20 را مبادله کنند. این کار باعث شد تا آزمایش‌گاه‌های بل تا اندازه‌ای از یونیکس حمایت مالی کند. در سال ۱۹۷۰، برای اولین بار، سیستم‌عامل یونیکس به‌طور رسمی نام‌گذاری شد و بر روی یک رایانه PDP-11/20 به اجرا درآمد. یک برنامه قالب‌بندی متن به نام roff و یک ویرایشگر متن به یونیکس اضافه شده بود. تمام این سه، به زبان اسمبلی PDP-11/20 نوشته شده بودند. آزمایشگاه‌های بل از این سیستم پردازش متن اولیه، که از یونیکس، roff و آن ویرایشگر متن تشکیل می‌شد، به منظور پردازش متن تقاضاهای پتنت استفاده می‌کرد. خیلی زود نسخه پیشرفته‌تری از برنامه roff تحت عنوان troff بوجود آمد که اولین برنامه انتشار الکترونیکی با قابلیت حروف‌چینی تمام و کمال بود. «راهنمای برنامه‌نویسان یونیکس» هم در ۳ نوامبر ۱۹۷۱ منتشر شد.
در سال ۱۹۷۲، یونیکس از ابتدا و با استفاده از زبان برنامه‌نویسی سی بازنویسی شد. این کار برخلاف باور عمومی در آن زمان بود که عنوان می‌کرد «چیزی به پیچیدگی یک سیستم‌عامل، که باید با رویدادهایی سروکار داشته باشد که از دیدگاه زمان پاسخگویی حساس هستند، می‌بایست منحصرا با زبان اسمبلی نوشته شود. این مهاجرت از زبان اسمبلی به زبان سطح بالاتر C، باعث شد یونیکس با سکوهای سخت‌افزری مختلف سازگارپذیرتر شود، در حین سازگار کردن یونیکس با یک سکوی سخت‌افزاری جدید، تنها کاری که باید انجام می‌شد این بود که بخش کوچکی از کدهای وابسته به ماشین بازنویسی شوند.
سازمان AT-T، (سازمان والد آزمایشگاه‌های بل)، بر طبق یک حکم توافقی در یک پرونده ضد انحصار مربوط به سال ۱۹۵۶، از وارد شدن به تجارت رایانه منع شده بود. بر این اساس، یونیکس نمی‌توانست تبدیل به یک «محصول تجاری» شود. در واقع، بر طبق مفاد این حکم، آزمایشگاه‌های بل ملزم بود تا فناوری‌های غیرمخابراتی خو را برای مشتریانش دارای جواز کند. کن تامسون بی‌سروصدا به درخواست‌های مشتریان برای استفاده از یونیکس پاسخ می‌داد و دیسک‌ها و نوارها را برای آنها ارسال می‌کرد که هر کدام، بر طبق روایات، حاوی یک یادداشت بودند که به صورت «با عشق، کن» امضا شده بودند.
شرکت AT-T یونیکس را تحت گواهی‌نامه‌هایی، برای دانشگاه‌ها، شرکت‌های بازرگانی و همین‌طور دولت ایالات متحده در دسترس ساخت. این گواهینامه‌ها شامل کل کد منبع یونیکس از جمله بخش‌هایی از هسته سیستم‌عامل که وابسته به ماشین بودند و با زبان اسمبلی PDP-11 نوشته شده بودند، می‌شدند. در اواخر دهه ۱۹۷۰ میلادی، کپی‌هایی از کدهای منبع یونیکس به صورت زیرنویس‌شده و به همراه توضیحات، در قالب کتابی از جان لیونز به نام تفسیری بر ویرایش ۶ یونیکس توسط لیونز، به همراه کد منبع دست به دست می‌چرخید. این کتاب نقش قابل توجهی در استفاده از یونیکس به عنوان یک منبع آموزشی شد.
فرق بین نسخه‌های مختلف سیستم‌عامل یونیکس از روی راهنماهای کاربری‌شان مشخص می‌شد و این نسخه‌ها در واقع با استفاده از راهنماهای کاربری‌شان تشخیص داده می‌شدند. برای مثال، «ویرایش پنجم یونیکس» و «نسخه ۵ یونیکس» هر دو اشاره به یک نسخه از یونیکس داشتند. توسعه یونیکس با نسخه‌های ۴، ۵ و ۶ که در سال ۱۹۷۵ منتشر شد، گسترش یافت. این نسخه‌ها مفاهیم جدیدی از جمله خط لوله‌ها را معرفی کردند که منجر به توسعه یک کدبیس مازولارتر شد و چرخه توسعه را سرعت بخشید. نسخه ۵ و خصوصا نسخه ۶، منجر به ایجاد نسخه‌های مختلفی از یونیکس هم در داخل و هم در خارج از آزمایش‌گاه‌های بل شدند که از جمله آنها می‌توان به PWB/UNIX، و همین‌طور IS/1، اولین نسخه تجاری از یونیکس اشاره کرد. همان‌طور که بخش‌های بیشتری از یونیکس به زبان سی بازنویسی می‌شد، سازگارپذیری آن هم افزایش می‌یافت. گروهی در University of Wollongong یونیکس را به Interdata 7/32 پورت کردند. آزمایشگاه‌های بل چندین پورت برای اهداف پژوهشی و استفاده داخلی در AT-T را توسعه داد. از جمله ماشین‌هایی که یونیکس به آن پورت شد یک رایانه مبتنی بر پردازنده Intel 8086 بود (که MMU آن به صورت سفارشی ساخته شده بود) و همین‌طور سکوی UNIVAC 1100 بود.
در می‌۱۹۷۵، ARPA مزایای سیستم اشتراک زمانی یونیکس را در RFC 681 مستند کرد که در آن آمده بود یونیکس به عنوان یک هاست کوچک در شبکه آرپا، «چندین توانایی جالب توجه را ارائه می‌کند».
در سال ۱۹۷۸، UNIX/32V، برای سیستم جدیدی که آن موقع توسط شرکت DEC عرضه شده بود، منتشر شد. در این هنگام، یونیکس به گونه‌های مختلفی بر روی بیش از ۶۰۰ ماشین اجرا می‌شد. نسخه ۷ یونیکس، آخرین نسخه ریسرچ یونیکس که به صورت گسترده منتشر می‌شد، در سال ۱۹۷۹ منتشر شد. در نسخه ۷، تعدادی فراخوان‌های سیستمی چیزی در حدود تنها ۵۰ عدد بود، هرچند که تعداد فراخوان‌های سیستمی در نسخه‌های بعدی بیشتر شد.
نسخه ۷ از سیستم‌عامل ریسرچ یونیکس حدود ۵۰ عدد فراخوان سیستمی داشت، 4.4BSD حدود ۱۱۰ عدد فراخوان سیستمی داشت و SVR4 حدود ۱۲۰ عدد. تعداد دقیق فراخوان‌های سیستمی بسته به نسخه سیستم‌عامل دارد. سیستم‌های جدیدتر رشد گسترده‌ای از نظر تعداد فراخوان‌های سیستمی مورد پشتیبانی داشته‌اند. لینوکس ۳٫۲٫۰ حدود ۳۸۰ و فری‌بی‌اس‌دی ۸ بیش از ۴۵۰ فراخوان سیستمی دارند.
دهه ۱۹۸۰
آزمایش‌های بل نسخه‌های مختلفی از یونیک را برای استفاده داخلی خود توسعه داد که از جمله آنها می‌توان به CB UNIX (که پشتیبانی بهتری از پایگاه‌های داده داشت) و PWB/UNIX، «میزکار برنامه‌نویسان» اشاره کرد که برای گروه‌های بزرگی از برنامه‌نویسان تدارک دیده شده بود. آزمایشگاه‌های بل به تبلیغ PWB/UNIX، 32V و V7 پرداخت و در سال ۱۹۸۰ اظهار می‌داشت که «بیش از ۸۰۰ سیستم در خارج از آزمایش‌گاه‌های بل در حال حاضر در حال استفاده هستند» و سال بعد این تعداد «بیش از ۲۰۰۰» رسیده بود.
شرکت AT-T سیستم UNIX System III را به شکل عمه‌ای مبتنی بر نسخه ۷ برای استفاده تجاری آماده کرد که اولین نسخه آن در سال ۱۹۸۲ کلید خورد. این نسخه همچنین از معماری VAX هم پشتیبانی می‌کرد. AT-T همچنان به گواهینامه‌دار کردن نسخه‌های قدیمی یونیکس می‌پرداخت. AT-T برای پایان دادن به نابسمانانی بین همه نسخه‌های مختلف، آنها را ترکیب و UNIX System V Release 1 را منتشر کرد. این سیستم قابلیت‌های جدیدی مثل ویرایشگر vi و curses که از BSD گرفته شده بود را داشت. BSD نسخه‌ای از یونیکس بود که در دانشگاه کالیفرنیا، برکلی توسعه داده می‌شد. این سیستم همچنین از سری ماشین‌های Western Electric 3B پشتیبانی می‌کرد. AT-T از طریق Unix Support Group (به اختصار USG) از سیستم‌های ystem III و System V پشتیبانی و حمایت به عمل می‌آورد که به همین دلیل به این سیستم‌ها گاهی اوقات USG Unix گفته می‌شود.