یونیکس چیست و چرا دارای اهمیت است؟

رضا مقدری:

3-23-2014 8-42-21 AM
بیشتر سیستم‌عامل‌ها را می‌توان در دو خانواده قرار داد و به‌ غیر از سیستم‌عامل‌های بر مبنای ویندوز NT مایکروسافت تقریباً سایر اکثریت قریب به اتفاق آنها در صورتی که پیشینه‌شان مورد بررسی قرار گیرد از دل سیستم‌عامل دیگری به نام یونیکس (Unix) زاده شده‌اند.

لینوکس، Mac OS X، اندروید، iOS، کروم OS، اوربیس OS که بر روی پلی استیشن چهار مورد استفاده قرار گرفته است، هر نوع فریم‌وری که بر روی مودم یا روتر خود استفاده می‌کنید و… همه این سیستم‌عامل‌ها در اصطلاح سیستم‌عامل‌هایی بر مبنای یونیکس نامیده می‌شوند.

طراحی یونیکس و بقای حیات آن تا به امروز

یونیکس در آزمایشگاه بل (Bell) متعلق به کمپانی AT&T در اواخر دهه ۶۰ میلادی توسعه داده شد. انتشار اولیه یونیکس در زمینه طراحی دستاوردهایی داشت که تا به امروز نیز در قید حیات مانده و مورد استفاده قرار می‌گیرند. یکی از آنها که به فلسفه یونیکس معروف می‌باشد و هدفش ایجاد یک ابزار موژلار است که تنها یک کار را انجام می‌دهد ولی آن کار را به بهترین و بی‌نقص‌ترین شکل ممکن به انجام می‌رساند. بنابراین اگر با ترمینال لینوکس آشنایی داشته باشید به یقین این موضوع را می‌دانید که این سیستم به شما ابزارهای مختلفی ارائه می‌دهد که با ترکیب آنها به روش‌ّهای مختلف می‌توانید تسک‌های پیچیده‌تری را به سرانجام برسانید. حتی برنامه‌های دارای رابط گرافیکی نیز تمایل دارند ابزارهای کوچک‌تری را در پس‌زمینه فراخوانی کنند تا کارهای سنگین را به کمک آنها انجام دهند. همین موضوع ایجاد شل اسکریپت‌ها را برای متصل کردن ابزارهای ساده به یکدیگر با هدف به سرانجام رساندن کارهای پیچیده‌تر آسان می‌نماید.

یونیکس حتی دارای فایل سیستمی یکتا بوده است که برنامه‌ها برای ارتباط با یکدیگر از آن بهره می‌بردند و همین موضوع سبب شده است که هر چیزی بر روی لینوکس “بصورت یک فایل” باشد حتی ابزارهای سخت‌افزاری، فایل‌های ویژه‌یی که اطلاعات سیستمی را ارائه می‌دهند و… .

3-23-2014 8-43-31 AM

بررسی خانواده و فرزندان یونیکس

مثل همهٔ بخش‌های تاریخ اگر در تاریخ یونیکس نیز به ۴۰ سال قبل برگردیم و بخواهیم به کند و کاو در مورد اولاد یونیکس و خودش بپردازیم با پیچیدگی‌ها بسیاری مواجه خواهیم شد. و برای رفع این پیچیدگی‌ها هر چند به سختی ولی ‌می‌توانیم فرزندان یونیکس را به دو دسته تقسیم کنیم.

یک گروه از فرزندان یونیکس در آکادمی‌ها و مراکز دانشگاهی متولد شدند. و اولین آنها با نام BSD که مخفف توزیع نرم‌افزاری برکلی یا Berkeley Software Distribution شناخته می‌شد و یک سیستم‌عامل کدباز برمبنای یونیکس بود. جالب است بدانید BSD امروزه نیز در قالب FreeBSD، NetBSD و OpenBSD به حیات خودش ادامه می‌دهد. همچنین NextStep نیز بر مبنای BSD بود و البته سیستم‌عامل مشهور Mac OS X‌ اپل نیز بر مبنای NextStep عرضه گردید و iOS بعدها بر مبنای Mac OS X پایه‌گذاری شد. بسیاری از سیستم‌عامل‌های دیگر مانند Orbis که بر روی پلی استیشن چهار ارائه می‌شود نیز بر مبنای یکی از انواع سیستم‌عامل BSD‌ هستند.

پروژهٔ گنوی (GNU) ریچارد استالمن نیز در واکنش به فزایندگی قوانین نرم‌افزاری محدود کننده بهره‌گیری و بکارگیری یونیکس توسط AT&T آغاز شد. MINIX یک سیستم‌عامل بر مبنای یونیکس بود که برای اهداف آموزشی طراحی و پیاده‌سازی گردیده بود و در خلقت لینوکس از MINIX الهام گرفته شده است. لینوکسی که ما امروزه می‌شناسیم در اصل GNU/Linux‌ می‌باشد و از ترکیب کرنل یا هستهٔ لینوکس با تعدادی از ابزارهای GNU پدید آمده است. گنو/لینوکس مستقیماً یکی از فرزندان BSD محسوب نمی‌شود ولی در اصل یکی از فرزندان طراحی متعلق به یونیکس است و ریشه‌هایش به مراکز دانشگاهی و آکادمیک باز می‌گردد. بسیاری از سیستم‌عامل‌های امروزی که در ابعاد وسیعی از آنها استفاده می‌شود همانند اندروید، کروم OS، استیم OS و… بر مبنای لینوکس هستند.

در سوی دیگر نسخه‌هایی تجاری از سیستم‌عامل یونیکس مانند AT&T Unix، SCO UnixWare، Sun Microsystems، HP-UX، IBM AIX، SGI IRIX قرار دارند و بسیاری از کمپانی‌های بزرگ تلاش کردند تا نسخه‌ای از یونیکس را با لایسنس و قوانین تجاری خودشان پیاده‌سازی و ارائه نمایند. هر چند بسیاری از این نسخه‌های یونیکس امروزه دیگر رایج نیستند ولی هنوز برخی از آنها در بازار حضور دارند.

3-23-2014 8-44-50 AM

رستاخیز DOS‌ و ویندوز NT

بسیاری از افراد انتظار داشتند تا یونیکس در صنعت کامپیوتر تبدیل به یک سیستم‌عامل استاندارد شود اما برخلاف این انتظار سیستم‌عامل DOS و کامپیوترهای شخصی مبتنی بر پلتفرم IBM به یکباره دچار محبوبیتی همگانی شدند. DOS هرگز بر مبنای یونیکس پایه‌ریزی و کدنویسی نشده بود و یک نشانه بارز این موضوع در این است که مسیر فایل‌ها در این سیستم‌عامل از سمبل بک اسلش استفاده می‌نماید در حالی که این موضوع در سایر سیستم‌عامل‌ها بدون استثنا از سمبل اسلش استفاده می‌نماید. تصمیم به استفاده از بک اسلش در روزهای اولیه توسعه DOS گرفته شد و بعدها سیستم‌عامل ویندوز نیز این رویه را از DOS به ارث برد همانطوری که BSD، لینوکس، Mac OS X و سایر سیستم‌عامل‌های مبتنی بر یونیکس بسیاری از اصول طراحی پدر خود یعنی یونیکس را به ارث بردند.

ویندوز ۳.۱، ویندوز ۹۵، ویندوز ۹۸ و ویندوز ME همگی بر مبنای سیستم‌عامل DOS بودند اما مایکروسافت در همان زمان در حال توسعه نسخه مدرن‌تر و پایدار‌تری از سیستم‌عامل با نام ویندوز NT بود که در اصل مخفف تکنولوژی جدید ویندوز یا Windows New Technology‌ می‌بود. ویندوز NT در نهایت راه خودش را بر روی کامپیوترهای شخصی کاربران با نام ویندوز XP باز نمود ولی قبل از آن برای مصارف تجاری و… با عناوینی مانند ویندوز NT و ویندوز ۲۰۰۱ ارائه شده بود.

در حال حاضر کلیهٔ سیستم‌ عامل‌های مایکروسافت بر مبنای هسته یا کرنل ویندوز NT ارائه شده‌اند و ویندوز هفت، ویندوز هشت، ویندوز RT، ویندوز فون ۸، ویندوز سرور و سیستم‌عامل کنسول بازی Xbox One همگی از کرنل ویندوز NT بهره می‌برند. هر چند مایکروسافت در ارائه ویندوز NT همه چیز را از اول طراحی و پیاده‌سازی نکرده است و جهت سازگاری با نسخه‌های قبلی سیستم‌عامل‌هایش که بر مبنای DOS بودند در ویندوز NT‌ نیز شاهد این موضوع هستیم که بسیاری خواص و اصول DOS مانند استفاده از بک اسلش در مسیر فایل‌ها، اختصاص یک حرف به درایوها، استفاده از اسلش برای سوئیچ‌های خطوط دستور و… به ارث برده شده‌اند. ولی NT نیز در نهایت هرگز ذره‌ای از اصول یونیکس و یا طراحی یونیکس پیروی نکرده است و کاملاً از آن مستقل است.

3-23-2014 8-45-50 AM

چرا این موضوعات دارای اهمیت هستند؟

آیا تا به حال به ترمینال Mac OS X و فایل سیستم آن توجه کرده‌اید و متوجه شباهت بیش از حد آن با سیستم‌عامل لینوکس شده‌اید؟ دلیل این امر این است که هر دوی این سیستم‌عامل‌ها بر مبنای یونیکس توسعه داده شده‌اند. دانستن این بخش از تاریخچه کامپیوترها و سیستم‌عامل‌ها این موضوع را برای شما توضیح می‌دهد که چرا بسیاری از سیستم‌عامل‌ها مشابه یکدیگر هستند و از اصولی یکسان پیروی می‌نمایند در حالی که سیستم‌عامل ویندوز ابداً از این اصول پیروی نمی‌کند. و حالا به سادگی می‌توانید درک کند که چرا ترمینال در Mac OS X دارای تفاوت‌های بسیاری با Command Prompt و PowerShell در ویندوز است و این دو محیط خط دستور هر یک دارای اصول منحصر به فرد خود هستند.