بی‌اس‌دی

میزان استفاده از نسخه‌های مختلف بی‌اس‌دی
بی‌اس‌دی برگرفته از Berkeley Software Distribution (که به عنوان بی‌اس‌دی یونیکس هم شناخته می‌شود) یکی از مشتقات سیستم‌عامل یونیکس بود که در طی سال‌های ۱۹۷۷ تا ۱۹۹۵ در دانشگاه کالیفرنیا، برکلی توسط گروه تحقیقاتی سیستم‌های کامپیوتری توسعه داده و منتشر می‌شد. امروزه واژه بی‌اس‌دی برای اشاره به خانواده‌ای از سیستم‌عامل‌های شبه‌یونیکس استفاده می‌شود که همگی از نوادگان همان بی‌اس‌دی یونیکس هستند. سیستم‌عامل‌هایی که از کد اصلی بی‌اس‌دی مشتق شده‌اند هنوز هم توسعه فعالی دارند و به‌طور گسترده استفاده می‌شوند.
از لحاظ تاریخی، بی‌اس‌دی به عنوان شاخه‌ای از یونیکس در نظر گرفته می‌شود. چون کدهای اولیه بی‌اس‌دی از کدهای اصلی یونیکس سرچشمه گرفته‌اند و به همراه سیستم‌عامل اصلی یونیکس AT-T طراحی شده‌است.
تاریخچه
نسخه‌های آغازین PDP-11
اولین نسخه‌های یونیکس که در دهه ۱۹۷۰ توسط آزمایشگاه‌های بل توزیع می‌شدند، حاوی کدهای منبع این سیستم‌عامل بودند که به محققین دانشگاه‌ها اجازه می‌داد تا بتوانند یونیکس را تغییر داده و گسترش دهند. اولین سیستم یونیکسی در دانشگاه برکلی یک PDP-11 بود که در سال ۱۹۷۴ نصب شد و دپارتمان علوم رایانه از این رایانه به منظور تحقیقات وسیع خود استفاده می‌کرد.
رفته‌رفته دیگر دانشگاه‌ها هم به یونیکس علاقه نشان دادند. بیل جوی در سال ۱۹۷۷، یک دانشجوی فوق لیسانس در دانشگاه برکلی، شروع به کامپایل کردن اولین نسخه از توزیع نرم‌افزاری برکلی کرد که 1BSD نام گرفت و در ۹ مارس ۱۹۷۸ منتشر شد. 1BSD بیشتر یک افزونه برای ویرایش ششم یونیکس بود تا یک سیستم‌عامل کامل، اجزای اصلی این سیستم‌عامل یک کامپایلر پاسکال و یک ویرایشگر خطی به نام اکس بودند.
دومین توزیع نرم‌افزاری برکلی (2BSD) در می‌۱۹۷۹ منتشر شد و حاوی نرم‌افزارهای بروز شده 1BSD و همینطور دو برنامه جدید بود که توسط بیل جوی نوشته شده بودند و تا به امروز هم در سیستم‌عامل‌های مبتنی بر یونیکس باقی مانده‌اند: یکی ویرایشگر متن وی‌آی (یک نسخه بصری از ویرایشگر اکس) و دیگری سی شل
نسخه‌های VAX
در سال ۱۹۷۸ یک رایانه VAX در برکلی نصب شد، اما پورتی از یونیکس که مخصوص این رایانه بود و UNIX/32V نام داشت، نمی‌توانست از توانایی‌های حاظه مجازی این معماری بهره ببرد. هسته 32V به طرز قابل توجهی توسط دانشجویان برکلی بازنویسی شد تا قابلیت حافظه مجازی در آن پیاده‌سازی شود. در اواخر سال ۱۹۷۹، یک سیستم‌عامل کامل حاوی این هسته جدید، پورت‌هایی از برنامه‌های 2BSD برای معماری وکس، و همچنین برنامه‌هایی از 32V، تحت عنوان 3BSD منتشر شد. 3BSD همچنین Virtual VAX/UNIX یا VMUNIX هم نامیده می‌شود که اشاره به پیاده‌سازی شدن قابلیت حافظه مجازی در این سیستم دارد. همچنین تا نسخه 4.4BSD، هسته‌های BSD معمولا /vmunix نامیده می‌شدند.
موفقیت 3BSD یکی از عوامل اصلی بود که دارپا را بر آن داشت تا گروه تحقیقاتی سیستم‌های رایانه‌ای را مورد حمایت مالی قرار دهد تا یک نسخه استاندارد از یونیکس را برای پروژه تحقیقاتی آینده دارپا، پروژه VLSI توسعه داده و آماده کند. CSRG نسخه 4BSD را منتشر کرد که حاوی بهینه‌سازی‌های بسیار زیادی نسبت به 3BSD بود و در اکتبر ۱۹۸۰ منتشر شد. بر طبق گفته جان کوارتمن و همکاران:
«4BSD سیستم‌عامل منتخب رایانه‌های VAX از همان ابتدا تا منتشر شدن سیستم سه بود. بسیاری از سازمان‌ها یک مجوز 32V می‌خریدند، اما به خودشان زحمت نمی‌دادند تا نوار نصب 32V را تهیه کنند و در عوض، 4BSD را از برکلی سفارش می‌داند. بسیاری از نسخه‌های نصب شده در سیستم بل، نسخه 4.1BSD بود (و هنوز هم همین نسخه را اجرا می‌کنند، و خیلی‌های دیگر هم 4.2BSD را اجرا می‌کنند).
4BSD (نوامبر ۱۹۸۰) تعدادی پیشرفت و قابلیت جدید نسبت به 3BSD داشت. از جمله قابلیت‌های مهم این نسخه می‌توان به قابلیت کنترل کار، برنامه دلیورمیل (جد سندمیل)، سیگنال‌های «قابل اطمینان» و کتابخانه برنامه‌نویسی کورسز اشاره کرد.
4.1BSD که در ژوئیه ۱۹۸۱ منتشر شد، پاسخی بود به انتقادهایی که از کارایی بی‌اس‌دی نسبت به سیستم‌عامل رایج در رایانه‌های VAX، VMS می‌شد. هسته 4.1BSD به شکل سیستماتیک توسط بیل‌جوی بهینه‌سازی شد تا اینکه توانست در برخی از آزمایش‌ها نتایج یکسانی را با VMS بدست آورد. قرار بود نتیجه کار تحت عنوان 5BSD منتشر شود، اما پس از اعتراض‌هایی از طرف AT-T این نام تغییر یافت. AT-T می‌ترسید که این نام، با نام سیستم پنج یونیکس اشتباه گرفته شود.
4.2BSD دو سال طول کشید تا آماده شود. این نسخه چندین قابلیت اساسی داشت. قبل از انتشار رسمی این نسخه، سه نسخه میانی منتشر شدند. 4.1a حاوی یک نسخه تغییریافته از پیاده‌سازی اولیه پروتکل TCP/IP توسط BNN بود. 4.1b حاوی سیستم‌فایل سریع بی‌اس‌دی بود که توسط مارشال کیرک مک‌کیوسیک پیاده‌سازی شده بود و نسخه 4.1c هم آخرین نسخه موقتی بود که در ماه‌های پایانی توسعه 4.2BSD منتشر شد. آزمایشگاه‌های بل از 4.1cBSD به عنوان سیستم پایه برای ویرایش هشت یونیکش استفاده کرد. این نسخه، نسخه‌ای از یونیکس بود که از پشتیبانی تجاری برخوردار بود و از طریق mtXinu در دسترس بود.
شخصی به نام Duane Adams از دارپا، به منظور هدایت کردن طراحی 4.2BSD، «کمیته راهبری» را تشکیل داد که از باب فابری، بیل جوی و سام لفلر از دانشگاه برکلی، Alan Nemeth و Rob Gurwitz از BBN، دنیس ریچی از آزمایشگاه‌های بل، Keith Lantz از استنفورد، Rick Rashid از Carnegie-Mellon، Bert Halstead از MIT،Dan Lynch از ISI و Gerald J. Popek از UCLA تشکیل شده بود. این کمیته از آوریل ۱۹۸۱ تا ژوئیه ۱۹۸۳ برقرار بود.
جدا از سیستم‌فایل سریع برکلی، تعدادی قابلیت دیگر هم از توسط مشارکت‌کنندگان خارج پروژه پیاده‌سازی شدند، از جمله قابلیت سهمیه‌بندی دیسک و کنترل کار. سان مایکروسیستمز هم پیش از منتشر شدن این نسخه، آن را بر روی رایانه‌های Motorola 68000 آزمایش کرد تا این اطمینان حاصل شود که سیستم به اندازه کافی پورتابل است.
نسخه رسمی 4.2BSD در اگوست ۱۹۸۳ منتشر شد. این نسخه به این شهرت دارد که اولین نسخه‌ای بود که پس از جدا شدن بیل جوی از پروژه در سال ۱۹۸۳ و بنیان‌گذاری کردن سان‌مایکروسیستمز منشتر می‌شد؛ از این موقع به بعد، مایکل کالز و مارشال کیرک مک‌کیوسیک راهبری پروژه را بدست گرفتند. این نسخه همچنین به خاطر نشان غول بی‌اس‌دی که توسط جان لستر طراحی شده بود و بر روی یک کتاب راهنما که توسط یوزنیکس منتشر شده بود هم شهرت دارد.
4.3BSD
4.3BSD در ژوئیه ۱۹۸۶ منتشر شد. تغییرات عمده این نسخه، بهینه‌سازی و بهبود دادن قابلیت‌هایی بود که به نسخه قبلی، 4.2BSD اضافه شده بودند، چرا که این قابلیت‌های جدید به اندازه کدهای 4.1BSD مورد بازبینی و بهبوددهی قرار نگرفته بودند. پیش از انتشار این نسخه، پیاده‌سازی بی‌اس‌دی از TCP/IP فاصله زیادی از پیاده‌سازی رسمی TCP/IP توسط BNN گرفته بود و این دو پشته با هم فرق زیادی کرده بودند. پس از مباحثاتی در مورد اینکه بالاخره کدام پشته در نسخه 4.3BSD قرار گیرد، توافق بر این شد که پشته بی‌اس‌دی از TCP/IP در 4.3BSD استفاده شود، چرا که پس از انجام برخی آزمایش‌ها نشان داده شده بود که کارایی بهتری در بیشتر موارد نسبت به پشته BBN دارد.
پس از انتشار نسخه 4.3BSD، این‌طور مشخص شد که BSD باید از معماری قدیمی VAX فاصله بگیرد. معماری Power 6/32 (با اسم رمز Tahoe) که توسط شرکت Computer Consoles Inc توسعه داده شده بود، خوب و امیدبخش به‌نظر می‌رسید، اما کمی پس از آن توسط توسعه‌دهندگانش رها شده بود. با این حال، پورتی برای این معماری به نام 4.3BSD-Tahoe که در ژوئیه ۱۹۸۸ منتشر شد، کاری ارزشمند محسوب می‌شد، چرا که در این پورت، کدهای وابسته به ماشین و کدهای مستقل از ماشین از یکدیگر جدا شده بودند که این کار باعث می‌شد تا بتوان در آینده BSD را راحت‌تر به دیگر سکوها پورت کرد.
جدا از تلاش برای پورتابل کردن سیستم، CSRG تلاش می‌کرد تا همچنین پشته پروتکل OSI را هم پیاده‌سازی کند، بهینه‌سازی‌هایی در حافظه مجازی انجام دهد و همینطور الگوریتم‌های TCP/IP جدید را در جهت انطباق با رشد اینترنت، توسعه دهد.
تا آن هنگام، تمامی نسخه‌های BSD حاوی کدهای انحصاری از AT-T بودند و در نتیجه برای استفاده از BSD می‌بایست یک مجوز کد منبع از AT-T تهیه می‌شد. اما مجوزها بسیار گران‌قیمت شده بودند و چندین شرکت و سازمان خارج از پروژه، برای منتشر شدن کدهای پشته شبکه به صورت مجزا، ابراز علاقه کرده بودند، که این پشته به‌طور کامل در خارج از AT-T توسعه داده شده بود و نیازی به تهیه مجوز از AT-T نداشت. به این ترتیب، نسخه Networking Release 1 (Net/1) منتشر شد که عاری از کدهای AT-T بود و این امکان وجود داشت تا آن را آزادانه تحت پروانه بی‌اس‌دی منتشر کرد. این نسخه در ژوئیه ۱۹۸۹ منتشر شد.
نت/۲ و مسائل قانونی
بعد از نت/۱، یکی از توسعه‌دهندگان بی‌اس‌دی به نام کیث باستیک پیشنهاد کرد که تمامی کدهای AT-T با کدهایی تحت پروانه BSD جایگزین شوند. برای رسیدن به این هدف، او پروژه‌ای را شروع کرد تا بیشتر برنامه‌های استاندارد یونیکس را مجددا و بدون استفاده از کدهای AT-T پیاده‌سازی کند. به عنوان مثال، ویرایشگر متن VI که بر اساس نسخه یونیکسی ED بود، به صورت مجدد پیاده‌سازی شد و نام این پیاده‌سازی جدید NVI (وی‌آی جدید) نام گرفت. در طول ۱۸ ماه، تمام ابزارهایی که متعلق به AT-T بودند بازنویسی شدند و از AT-T تنها تعداد کمی فایل در هسته باقی‌مانده بود. این فایل‌ها هم از هسته پاک شدند و نتیجه کار در ژوئن ۱۹۹۱ با نام نت/۲ عرضه شد که تقریبا یک سیستم‌عامل کامل بود که به صورت آزاد منتشر می‌شد.
کمی بعد نت/۲ توسط دو نفر و به صورت مجزا برای معماری اینتل ۸۰۳۸۶ پورت شد. یکی ۳۸۶بی‌اس‌دی بود که توسط ویلیام ژولیتز و دیگری یک نسخه انحصاری به نام بی‌اس‌دی/۳۸۶ بود که توسط BSDi برای این معماری پورت شده بودند. خود ۳۸۶بی‌اس‌دی عمر کمی داشت. اما نقش تاریخی بزرگی ایفا کرد و پایه و اساس سیستم‌عامل‌های فری‌بی‌اس‌دی و نت‌بی‌اس‌دی شد که این دو پروژه کمی بعد از ۳۸۶بی‌اس‌دی و از روی پچ‌کیت‌های غیررسمی آن بوجود آمده بودند.
اما BSDi کمی بعد توسط AT-T به دادگاه کشیده شد، چرا که AT-T معتقد بود که BSDi به‌طور غیرقانونی از کدهای AT-T استفاده کرده‌است. این دادگاه باعث شد تا سرعت توسعه مشتقات BSD نزدیک به دو سال آهسته شود، چرا که مالک کدها مشخص نبود. در نتیجه، زمینه برای توسعه یافته سیستم‌های مبتنی بر لینوکس فراهم شد، چرا که کدهای لینوکس مشکل نامشخص بودن مالک نداشتند. هرچند که 386BSD تا سال ۱۹۹۲ منتشر نشد، اما با این حال، لینوس توروالدز گفته بود که اگر وقتی که کار بر روی لینوکس را شروع کردم، 386BSD وجود داشت، شاید لینوکس هیچگاه بوجود نمی‌آمد.
4.4BSD و مشتقات
دادگاه در سال ۱۹۹۴، عمدتا به نفع برکلی، فیصله داده شد. از حدود ۱۸٫۰۰۰ فایلی که در BSD بود، تنها ۳ فایل باید حذف می‌شد و ۷۰ فایل دیگر هم باید طوری تغییر می‌کردند تا نشان‌دهنده اعلان کپی‌رایت USL را باشند. همچنین دیگر نتیجه دادگاه این بود که USL دیگر هرگز در برابر کاربران یا توزیع‌کنندگان کدهای BSD درخواست دادخواست نکند. مارشال کیرک مک‌کیوسیک راجع بع دادگاه و پیامدهای آن چنین گفته است:
چیزی که ادعا شده بود کپی‌برداری از کدها و دزدیدن اسرار تجاری بود. آن کدهایی که غیرقانونی بودند برای مدتی نزدیک به دو سال شناسایی نشدند. دادگاه می‌توانست بیشتر از اینها هم طول بکشد اما شرکت ناول USL را از AT-T خریداری کرد و این شرکت بدنبال برقراری آتش‌بس و حل و فصل کردن اختلافات بود. در پایان، ۳ فایل از مجموع ۱۸٫۰۰۰ فایلی که سیستم را تشکیل می‌داندند، حذف شدند و تغییرات جزئی دیگری هم به دیگر فایل‌ها اعمال شد. علاوه بر آن، دانشگاه برکلی قبول کرد که حق تکثیر USL را به حدود ۷۰ فایل اضافه کند، مشروط بر اینکه این فایل‌ها همچنان آزادانه قابل تکثیر باشند.
در ژوئیه ۱۹۹۴، سیستم‌عامل 4.4BSD به دو صورت منتشر شد: یکی نسخه 4.4BSD-Lite که به صورت آزادانه قابل انتشار بود و هیچ کدی ازAT-T در آن وجود نداشت. دیگری نسخه 4.4BSD-Encumbered بود که همانند نسخه‌های قبلی، نیازمند دریافت مجوز از AT-T بود.
آخرین نسخه BSD، نسخه 4.4BSD-Lite Release ۲ بود که پس از انتشار این نسخه، گروه CSRG منحل شد و توسعه بی‌اس‌دی متوقف شد. از آن هنگام تا کنون، تعدادی سیستم‌عامل دیگر که به‌طور مستقیم یا غیرمستقیم بر اساس بی‌اس‌دی هستند، توسط داوطلبان توسعه داده می‌شوند.
علاوه بر آن، طبیعت سهل‌گیرانه پروانه بی‌اس‌دی به بسیاری از دیگر سیستم‌عامل‌ها چه آزاد و چه انحصاری این اختیار را داده تا قادر باشند کدهای بی‌اس‌دی را در خود بگنجانند. برای مثال، مایکروسافت ویندوز از کدهای بی‌اس‌دی در پشته TCP/IP خود استفاده کرده‌است؛ و از ویندوز ۲۰۰۰ به بعد، نسخه‌های بازکامپایل‌شده از ابزارهای خط فرمان بی‌اس‌دی که مربوط به شبکه می‌شوند را در سیستم‌عامل خود قرار داده است. همچنین داروین، سیستم‌عاملی که Mac OS X بر اساس آن ساخته شده هم از مشتقات 4.4BSD-Lite2 و فری‌بی‌اس‌دی محسوب می‌شود. برخی دیگر از نسخه‌های تجاری یونیکس نظیر سولاریس هم حاوی کدهای بی‌اس‌دی هستند.
رابطه با یونیکس
نسخه‌های سیستم‌عامل ریسرچ یونیکس از ویرایش هشتم به بعد رابطه نزدیکی با بی‌اس‌دی دارند. وقتی که 4.1cBSD برای VAX منتشر شد، مبنای توسعه ویرایش هشت ریسرچ یونیکس قرار گرفت. این روند در نسخه‌های بعدی مثل ویرایش نهم هم ادامه داشت که هم کدهای منبع و هم اصلاحات دیگری را از 4.3BSD در خود گنجانده بود. نتیجه این شد که نسخه‌های بعدی ریسرچ یونیکس بیشتر از اینکه به System V نزدیک باشند، به بی‌اس‌دی نزدیک بودند. دنیس ریچی در پستی در یوزنت مربوط به سال ۲۰۰۰، رابطه بی‌اس‌دی و ریسرچ یونیکس را این گونه توصیف می‌کند:
ویرایش هشتم ریسرچ یونیکس، از BSD 4.1c شروع شد (فکر می‌کنم)، اما بخش‌های زیادی از این سیستم برداشته شد و با چیزهای خودمان جایگزین شد. این روند برای نسخه‌های ۹ و ۱۰ هم به همین صورت بود. مجموعه دستورهای کاربری روزمره، اگر اشتباه نکنم، بیشتر ویژگی‌های بی‌اس‌دی را داشتن تا SysV را، اما این بشدت متنوع بود.