موضوع مقاله: پلان ۹ از آزمایشگاه‌های بل | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پلان ۹ از آزمایشگاه‌های بل | مقدمه: پلان ۹ از آزمایشگاه‌های بل یا به اختصار Plan 9، یک سیستم‌عامل توزیع شده است که به صورت نرم‌افزار آزاد منتشر می‌شود. | ## بخش 1: پلان ۹ از آزمایشگاه‌های بل | این سیستم‌عامل از اواسط دهه ۱۹۸۰ میلادی تا ۲۰۰۲ در مرکز تحقیقات علوم رایانه در آزمایشگاه‌های بل و برای اهداف پژوهشی و تحقیقاتی و به عنوان جانشینی برای یونیکس توسعه داده شد. پلان ۹ برای حل و فصل کردن ناتوانی‌های یونیکس و هسته آن در انجام برخی کارها نظیر رایانش توزیع‌شده، فضای نام‌های توزیع‌شده و فایل‌سیستم‌های توزیع‌شده، طراحی شد. توسعه و استفاده از این سیستم‌عامل همچنان توسط محققین سیستم‌عامل و همینطور علاقه‌مندان ادامه دارد. پلان ۹ ویژگی‌های جدیدی دارد که از جمله آن‌ها می‌توان به پروتکل 9p که برای دسترسی به فایل‌های موجود بر روی رایانهٔ محلی و همینطور فایل‌های موجود بر روی رایانه‌های راه دور مورد استفاده قرار می‌گیرد، مونت‌های یونیونی، یک سیستم فایل proc بهینه شده و همینطور پشتیبانی بومی از یونیکد در سرتاسر سیستم اشاره کرد. در پلان ۹، همه رابط‌های سیستمی، از جمله رابط‌های مرتبط با شبکه و همینطور رابط‌های کاربری، به جای داشتن یک رابط مخصوص و ویژه، از طریق سیستم فایل در دسترس هستند. نام سیستم‌عامل پلان ۹ از آزمایشگاه‌های بل، از فیلمی به نام طرح شماره ۹ بیرون از فضا به کارگردانی اد وود گرفته شده‌است. همینطور، احتمالاً نام گلندا، خرگوش پلان ۹ هم از فیلم دیگر وود به نام گلن یا گلندا گرفته شده‌است. این سیستم‌عامل برای استفاده توسط کاربر نهایی و تازه‌کار در نظر گرفته نشده است، در عوض، پلان ۹ قرار بوده تا سکویی برای آزمایش کردن الگوریتم‌های جدید، فناوری‌های جدید و متودولوژی‌های جدید باشد. تاریخچه پروژه پلان ۹ در هنگام آغاز به کارش، یک پروژه داخلی در آزمایشگاه‌های بل بود. پلان ۹ چند تغییر در مدل اصلی یونیکس ایجاد کرده که هم استفاده از سیستم را راحت‌تر کرده و هم برنامه‌نویسی برای آن را، مثل محیط‌های چند کاربره توزیع‌شده. در سال ۱۹۹۲، آزمایشگاه‌های بل اولین انتشار عمومی از پلان ۹ را برای دانشگاه‌ها ارائه کرد و سه سال بعد یک نسخه تجاری برای عموم ارائه شد. در اواخر دهه ۱۹۹۰، شرکت لوسنت تکنولوژی که وارث آزمایشگاه‌های بل بود، پشتیبانی تجاری از این سیستم‌عامل را قطع کرد. یک جامعه کاربری و توسعه‌دهندگان که شامل اعضای قبلی و فعلی آزمایشگاه‌های بل و همینطور کارکنان مؤسسه فناوری ماساچوست می‌شود، همچنین این سیستم‌عامل را توسعه می‌دهند و انتشارهای جزئی را به صورت روزانه و در قالب فایل‌های iso منتشر می‌کنند. درخت کدهای منبع این سیستم‌عامل از طریق پروتکل‌های 9P و HTTP در دسترس است و از آن برای بروزرسانی کردن نسخه‌های در حال حاضر نصب شده استفاده می‌شود. علاوه بر عناصری که به صورت رسمی در فایل‌های iso گنجانده شده‌اند، آزمایش‌گاه‌های بل هم مخزنی از نرم‌افزارها و ابزارهایی که به صورت خارجی برای این سیستم‌عامل توسعه داده شده‌اند را هم میزبانی می‌کند. پلان ۹ در ابتدا توسط اعضای مرکز تحقیقات علوم رایانه آزمایش‌گاه‌های بل توسعه داده شد، همان گروهی که پیشتر یونیکس و زبان برنامه‌نویسی سی را توسعه داده بودند. گروه توسعه پلان ۹ در ابتدا توسط راب پایک، کن تامسون، دیو پرستو، فیل وینترباتوم و با حمایت دنیس ریچی رهبری شد. در طول سال‌ها، بسیاری از توسعه‌دهندگان سرشناس با این پروژه همکاری کردند که برایان کرنیگان، تام داف، داگلاس مک‌ایلروی، بیارنه استروستوپ و بروس الیس از این جمله هستند. مفاهیم طراحی پلان ۹ مفاهیم طراحی یونیکس را تکامل بخشیده است: تمام اشیا یا فایل هستند یا فایل سیستم. فضای نام‌های خصوصی به صاحبانشان امکان می‌دهد تا به شکل شفافی به فرایندهای محلی یا راه دور دسترسی داشته باشند. پروتکل 9P برخلاف یونیکس، پلان ۹ برای انجام ارتباطات بین-فرایندی و بین-رایانه‌ای، از سوکت‌های برکلی استفاده نمی‌کند. به منظور کاهش دادن تعداد فراخوان‌های سیستمی و رابط‌های سفارشی‌شده، در پلان ۹ به‌طور گسترده‌ای از پروتکل 9P استفاده شده‌است. 9P یک پروتکل بایت‌گرا مستقل از رسانه که به منظور رد و بدل کردن پیغام‌ها بین یک سرویس‌دهنده و یک سرویس‌گیرنده طراحی شده‌است. | ## بخش 2: پلان ۹ از آزمایشگاه‌های بل | این برنامه برای مراجعه کردن و برقرار کردن ارتباط با فرایندها، برنامه‌ها و داده‌ها، هم در رابط کاربری و هم در شبکه مورد استفاده قرار می‌گیرد. در عوض، گرداننده‌های دستگاه در پلان ۹ رابط‌های کنترلی خود را به صورت سیستم فایل پیاده‌سازی می‌کنند و به این ترتیب، می‌توان از طریق همان عملیات‌های ساده نوشتن و خواندن بر روی فایل‌های ورودی/خروجی، به سخت‌افزار دسترسی داشت. در نتیجه، برای به اشتراک‌گذاری سخت‌افزارها در شبکه، کافیست درخت دایرکتوری مربوط به همان سخت‌افزار در شبکه به اشتراک گذاشته شود تا دیگر رایانه‌ها بتوانند از آن استفاده کنند. گذشته از اینها، هسته می‌تواند برای هر فرایند یک جدول مونت مجزا نگه‌داری کند و در نتیجه هر فرایند می‌تواند فضای نام فایل سیستمی مختص به خودش را داشته باشد. فضای نام‌های فرایندها می‌توانند به صورت مستقل ساخته شوند و کاربر می‌تواند به صورت هم‌زمان با برنامه‌هایی که دارای فضای نام‌ها ناهمگون هستند، به کار کردن بپردازد. از فضای نام‌ها می‌توان برای بوجود آوردن محیط‌های ایزوله شده همانند chroot، اما به صورت ایمن‌تر استفاده کرد. ساختار یونیون دایرکتوری پلان ۹ الهام‌بخش فایل سیستم یونیونی در لینوکس و بی‌اس‌دی بوده‌است. فضای نام‌ها و مونت‌ها یونیونی پلان ۹ به کاربر اجازه می‌دهد تا فایل‌ها (که اسامی هم نامیده می‌شوند) را از دایرکتوری‌های مختلف در یک مکان منفرد جمع‌آوری کند. سپس عمل تبدیل نام از بالا به پایین صورت می‌گیرد: اگر آن نام در دایرکتوری سطح بالا موجود نباشد، دایرکتوری‌های سطح پایین‌تر برای یافتن آن فایل مورد جستجو قرار می‌گیرند. اگر در دایرکتوری‌های سطح پایین‌تر فایلی به نام مشابه قرار داشته باشد، در فهرست‌گیری از دایرکتوری‌ها نام این فایل چاپ می‌شود، اما آن فایل قابل دسترس نیست. فایل سیستم‌های مجازی خاص‌منظوره /proc پلان ۹ به جای فراهم کردن تعدادی فراخوان سیستمی مختص مدیریت فرایندها، فایل سیستم /proc را فراهم کرده‌است. هر فرایند یک دایرکتوری مخصوص به خود در فایل سیستم /proc دارد که این دایرکتوری حاوی اطلاعات و فایل‌های کنترلی مرتبط با آن فرایند است که می‌توان آن‌ها را از طریق فراخوان‌های سیستمی معمول مرتبط با ورودی/خروجی فایل‌ها تغییر داد و کنترل کرد. این رویکرد فایل‌سیستمی به فرایندهای پلان ۹ اجازه می‌دهد تا با ابزارهای ساده مدیریت فایل همانند ls و cat، مدیریت شوند، با این حال فرایندها را نمی‌توان همانند فایل‌ها جابجا کرد. /net پلان ۹ فاقد فراخوان‌های سیستمی خاص‌منظوره برای دسترسی به پشته شبکه یا سخت‌افزارهای مرتبط با شبکه است. ارتباطات شبکه با خواندن و نوشتن پیام‌های کنترلی در فایل‌های موجود در این دایرکتوری، کنترل می‌شوند. یونیکد برای کاهش دادن پیچیدگی مدیریت کردن کدبندی‌های نویسه، در سرتاسر سیستم پلان ۹ از یونیکد استفاده شده‌است. پیاده‌سازی اولیه یونیکد ISO 10646 بود، کن تامسون UTF-8 را ابداع کرد که تبدیل به کدبندی بومی در پلان ۹ شده‌است. امنیت مدل امنیتی پلان ۹، با مدلی که امروزه توسط غالب سیستم‌عامل‌ها بکار گرفته می‌شود، تفاوت بسیاری دارد. به عنوان مثال، برای استفاده از کارت صدای یک رایانه دیگر، کافیست فایل /dev/audio آن رایانه بر روی رایانه محلی مونت شود. یا برای اشکال‌زدایی کردن فرایندی که بر روی رایانه دیگری در حال اجراست، کافیست شاخه /proc آن سیستم مونت شود. در پلان ۹، امکان ترکیب کردن بخش‌های مختلف سیستم، برای بدست آوردن قابلیت‌های پیشرفته‌تر وجود دارد. برنامه‌های گرافیکی برخلاف یونیکس، در طراحی پلان ۹، گرافیکی بودن برنامه‌ها هم مد نظر قرار داده شده‌است. پلان ۹ از سامانه پنجره‌ای اکس استفاده نمی‌کند و خود دارای یک سامانه پنجره‌ای سبک و کم‌حجم است. | ## بخش 3: پلان ۹ از آزمایشگاه‌های بل | بعد از راه‌اندازی شدن سیستم، یک ترمینال، سامانه پنجره‌ای پلان ۹ که ریو نام دارد را اجرا می‌کند. کاربر می‌تواند از طریق ریو، پنجره‌های جدیدی ایجاد کرده که برنامه‌ای موسوم به آرسی را اجرا می‌کنند. سپس برنامه‌های گرافیکی را می‌توان از طریق آرسی اجرا کرد که این کار باعث می‌شود تا پنجرهٔ آن برنامه گرافیکی، جایگزین پنجره آرسی شود. سیستم‌فایل FOSSIL در آزمایشگاه‌های بل به صورت اختصاصی برای پلان ۹ نوشته شده‌است و از قابلیت تصاویر لحظه‌ای پشتیبانی می‌کند. سازگاری با یونیکس هر چند که پلان ۹ قرار بود ادامه توسعه مفاهیم یونیکس باشد، اما سازگاری با نرم‌افزارهای یونیکس که از قبل موجود بودند، هیچگاه هدف پروژه نبوده است. هنوز بسیاری از ابزارهای خط فرمانی در پلان ۹ اسامی مستعاری برای دستورهای همتای خود در یونیکس هستند. پلان ۹ می‌تواند از برنامه‌های سازگار با استاندارد پازیکس پشتیبانی کند و همچنین از طریق رابط محیط آنسی/پازیکس می‌تواند سوکت‌های برکلی را شبیه‌سازی کند. برخی از باینری‌های سیستم‌عامل لینوکس را می‌توان به کمک linuxemu اجرا کرد، اما این برنامه هنوز در حال توسعه است. تأثیر پلان ۹ ثابت کرده‌است که این اصل یونیکس که هر رابط سیستمی می‌تواند با استفاده از مجموعه‌ای از فایل‌ها نمایش یابد را می‌توان در یک سیستم‌عامل توزیع‌شده مدرن با موفقیت پیاده‌سازی کرد. برخی از قابلیت‌های پلان ۹ از جمله کدبندی UTF-8 یونیکد، در دیگر سیستم‌عامل‌ها هم پیاده‌سازی شده‌اند. برخی از سیستم‌عامل‌های شبه یونیکسی نظیر لینوکس، پورتکل 9P، سیستم فایل پلان ۹، و شکل‌های محدودی از فراخوان‌های سیستمی مشابه rfork را پیاده‌سازی کرده‌اند. بعلاوه، در پلان ۹ از فضای کاربری، تعدادی از نرم‌افزارها و ابزارهای پلان ۹ از جمله ویرایشگرها سام و اکمه به یونیکس و سیستم‌های لینوکسی پورت شده‌اند و تا حدی محبوبیت کسب کرده‌اند. چندین پروژه بدنبال این هستند که برنامه‌های سیستم‌عامل گنو که به همراه هسته لینوکس استفاده می‌شوند را با برنامه‌های پلان ۹ جایگزین کنند. با این حال محبوبیت پلان ۹ هیچگاه به اندازه محبوبیت یونیکس نرسید و عمدتاً به صورت یک سیستم‌عامل تحقیقاتی باقی ماند. با این حال، پلان ۹ هیچگاه نتوانست محبوبت لینوکس را بدست آورد و بیشتر به صورت یک ابزار تحقیقاتی باقی ماند: پلان ۹ شکست خورد تنها به این خاطر که نسبت به یونیکس، به اندازه کافی پیشرفت بزرگی محسوب نمی‌شد تا بتواند جای جدش را بگیرد. یونیکس در مقایسه با پلان ۹، تلق و تولوق بیشتر و عیب و نقص‌های آشکاری دارد، اما توانست بی‌خوبی جا پای خودش را پیدا کند. درسی در این قضیه برای معماران سیستم جاه‌طلب وجود دارد: خطرناک‌ترین دشمن برای یک سیستم بهتر، وجود داشتن کدبیسی است که به اندازه کافی خوب است و می‌تواند کار راه‌انداز باشد. -- اریک ریموند از جمله دیگر فاکتورهایی که بر استقبال کم از پلان ۹ مؤثر بوده‌اند، می‌توان به نداشتن پشتیبانی تجاری، تعداد کم برنامه‌های کاربردی برای استفاده توسط کاربر نهایی، و عدم وجود گرداننده‌های دستگاه اشاره کرد. طرفداران و توسعه‌دهندگان پلان ۹ ادعا می‌کنند که مشکلاتی که مانع محبوبیت پلان ۹ می‌شد، حل شده‌اند، اهداف اصلی آن به عنوان یک سیستم توزیع‌شده، محیط توسعه، و سکوی تحقیقاتی، همگی برآورده شده‌اند و همینطور این سیستم از محبوبیت میانه، اما رو به رشدی برخوردار است. چندین پروژه وجود دارند که به صورت فعالانه‌ای در تلاش هستند تا پلان ۹ را گسترش دهند که از جمله آن‌ها می‌توان به 9atom و 9front اشاره کرد. این انشعاب‌های نرم‌افزاری، با نرم‌افزارها و درایورهای سخت‌افزاری بیشتر از جمله nupas، کامپایلر go، پشتیبانی از سیستم کنترل نسخه مرکوریال و برنامه‌های دیگر، پلان ۹ را گسترش و بهبود داده‌اند. پروانه از ویرایش چهارم که در آوریل ۲۰۰۲ منتشر شد، تمام کدهای منبع پلان ۹ تحت پروانه همگانی لوسنت نسخه ۱٫۰۲ در دسترس هستند. این پروانه توسط موسسه پیشگامان متن‌باز به عنوان یک نرم‌افزار متن‌باز و همچنین توسط بنیاد نرم‌افزارهای آزاد به عنوان یک نرم‌افزار آزاد شناخته شده‌است و همچنین با رهنمودهای نرم‌افزار آزاد دبیان سازگار است. | ## جمع‌بندی | در فوریه سال ۲۰۱۴، آلکاتل-لوسنت دارنده فعلی حق تکثیر پلان ۹، به دانشگاه برکلی اجازه داد تا تمامی نرم‌افزارهای پلان ۹ را که قبلاً تحت پروانه لوسنت بودند را تحت پروانه جی‌پی‌ال نسخه ۲ منتشرکند.