سیستم عامل یونیکس چیست؟ – آنچه باید بدانید به زبان ساده


اغلب سیستمهای عامل را میتوان در دو خانواده متفاوت دستهبندی کرد. به جز سیستمهای عامل مبتنی بر NT ویندوز مایکروسافت تقریباً همه سیستمهای دیگر به نوعی از سیستم عامل یونیکس منشعب شدهاند. لینوکس، مک، اندروید، کروماواس، اوربیس که در پلیاستیشن 4 استفاده شده و هر نوع فریمویری که روی روتر شما اجرا شده و یا هر سیستم عامل دیگر که در دسته سیستمهای «شبه یونیکس» (Unix-like) دستهبندی میشود را میتوان از این دسته برشمرد.
طراحی یونیکس همچنان زنده است
یونیکس در آزمایشگاههای AT&T شرکت بل در اواسط و اواخر دهه 1960 میلادی توسعه یافته است. انتشار اولیه یونیکس برخی خصوصیات طراحی مهم داشت که همچنان امروزه هم به حیات خود ادامه میدهند.
یکی از اساسیترین مفاهیم طراحی Unix و در واقع «فلسفه یونیکس»، ساخت ابزارهای کوچک و ماژولار بوده است که یک کار را انجام دهند، اما آن را کار را به خوبی انجام دهند. اگر با شیوه کار با ترمینال لینوکس آشنا باشید، این مفهوم باید برای شما آشنا باشد. سیستم چندین ابزار مختلف اراده میکند که میتواند به روشهای مختلف از طریق Pipe و قابلیتهای دیگر با هم ترکیب شوند تا کارهای پیچیدهتر را اجرا کنند. حتی برنامههای گرافیکی نیز معمولاً ابزارهای سادهتر را در پسزمینه فرا میخوانند تا کارهای سنگین را به این ترتیب به اجزای کوچکتر تقسیم کنند. به این ترتیب ساخت اسکریپتهای شل و کنار هم قرار دادن ابزارهای ساده برای اجرای کارهای پیچیده آسان خواهد بود.
Unix یک فایل سیستم منفرد دارد که برنامهها از آن برای ارتباط با همدیگر استفاده میکنند. از همین رو است که هر چیزی روی یونیکس یک فایل است. این موضوع شامل قطعات سختافزاری و فایلهای خاص که اطلاعات سیستم یا دیگر دادهها را عرضه میکنند نیز میشود و دقیقاً به همین دلیل است که تنها ویندوز است که از حرفهای درایو استفاده میکند که از DOS به ارث رسیده است. روی سیستمهای عامل دیگر، هر فایل روی سیستم بخشی از یک سلسله مراتب دایرکتوری منفرد است.
ردگیری نوادگان یونیکس
مانند هر تاریخچهای که بیش از 40 سال به عقب بازمیگردد، تاریخچه یونیکس و نوادگانش نیز شلوغ و در هم است. برای ساده ساختن مسائل میتوانیم نوادگان یونیکس را تقریباً به دو دسته کلی تقسیم کنیم.
یک گروه از نوادگان یونیکس در محیط دانشگاهی توسعه یافتهاند. نخستین مورد BSD است که نام کامل آن «توزیع نرمافزار برکلی» (Berkeley Software Distribution) است و یک سیستم عامل شبه یونیکس متن-باز محسوب میشود. اپل بر اساس این BSD اصلی سیستم عامل را توسعه داده و iOS نیز مبتنی بر مک است. بسیاری از سیستمهای عامل دیگر از جمله Orbis OS که روی پلیاستیشن 4 استفاده میشود از انواعی از این سیستمهای عامل BSD انشعاب یافتهاند.
پروژه GNU «ریچارد استالمن» (Richard Stallman) نیز در واکنش به شرایط لایسنس نرمافزاری بسیار محدودکننده AT&T برای یونیکس آغاز شده است. «مینیکس» (MINIX) یک سیستم عامل شبه یونیکس بود که جهت مقاصد آموزشی توسعه یافت و لینوکس نیز از مینیکس الهام گرفت. لینوکسی که امروزه میشناسیم در اصل «گنو/لینوکس» (GNU/Linux) است که از کرنل لینوکس و بسیاری ابزارهای GNU تشکیل یافته است. گنو/لینوکس مستقیماً از BSD انشعاب نیافته است، بلکه از طراحی یونیکس الهام گرفته و ریشه در یونیکسهای دانشگاهی دارد. امروزه بسیاری از سیستمهای عامل از جمله اندروید، Chrome OS، Steam OS و تعداد زیادی از سیستمهای عامل embedded برای دستگاهها بر مبنای لینوکس عمل میکنند.
از سوی دیگر سیستمهای عامل یونیکس تجاری نیز وجود دارند. یونیکس AT&T، SCO UnixWare، Sun Microsystems Solaris، HP-UX، IBM AIX، SGI IRIX و بسیاری شرکتهای بزرگ نسخههای خاص خود را از یونیکس ساخته و لایسنس کردهاند. این سیستمها امروزه چندان رواج ندارند، اما برخی از آنها همچنان وجود دارند:
ظهور DOS و ویندوز NT
بسیاری از افراد انتظار داشتند که Unix به یک سیستم عامل استاندارد در حوزه رایانههای شخصی تبدیل شود، اما DOS و رایانههای IBM PC compatible در نهایت محبوبیت گستردهای یافتند. سیستم عامل داس مایکروسافت موفقیت بسیار زیادی در عرصه عمومی کسب کرد. DOS به هیچ وجه بر مبنای یونیکس ساخته نشده بود و به همین دلیل است که ویندوز از ممیز معکوس (\) برای مسیرهای دایرکتوری استفاده میکند در حالی که همه سیستمهای دیگر از ممیز (/) به این منظور استفاده میکنند. این تصمیم در نخستین روزهای ساخت داس اتخاذ شده است و نسخههای بعدی ویندوز مبتنی بر داس نیز آن را ادامه دادند. همان طور که BSD، لینوکس، مک و دیگر سیستمهای عامل شبه یونیکس از مفاهیم طراحی یونیکس ارث بردهاند.
ویندوز 3.1، ویندوز 95، ویندوز 98، ویندوز ME همگی مبتنی بر DOS بودند. مایکروسافت در آن زمان یک نسخه مدرن و پایدارتر از ویندوز را توسعه داد که نام آن را ویندوز NT گذاشت که اختصاری برای «فناوری جدید» (New Technology) بود. ویندوز NT در نهایت مسیر خود را به سمت کاربران رایانههای معمولی به صورت ویندوز XP باز کرد اما برای شرکتها با نام ویندوز 2000 و ویندوز NT عرضه شد.
همه سیستمهای عامل مایکروسافت امروزه بر مبنای کرنل ویندوز NT هستند. بنابراین ویندوز 7، ویندوز 8 و ویندوز سرور و سیستم عامل ایکسباکس وان همگی از کرنل ویندوز NT استفاده میکنند. ویندوز NT برخلاف بسیاری از سیستمهای عامل به عنوان یک سیستم عامل شبه یونیکس توسعه نیافته است. البته مایکروسافت نیز کار خود را کاملاً از صفر آغاز نکرد. ویندوز NT برای حفظ سازگاری با نرمافزارهای DOS و ویندوزهای قدیمی بسیاری از سنتهای DOS مانند حروف درایو، ممیز معکوس برای مسیر فایلها و ممیز معمولی برای سوئیچهای خط فرمان را حفظ کرد.
اگر تاکنون به ترمینال مک یا فایل سیستم آن نگاه کرده باشید، حتماً متوجه شدهاید که تا چه حد شبیه لینوکس است و چه قدر از ویندوز متفاوت است. اکنون با دانستن تاریخچه این سیستمهای عامل میتوانید مفهوم سیستم عامل شبه یونیکس را بهتر بدانید و بهتر درک میکنید که چرا بسیاری از سیستمهای عامل شبیه هم به نظر میرسند، اما ویندوز چنین متفاوت دیده میشود به همین جهت است که ترمینال مک برای کاربران لینوکس بسیار آشنا است، اما «اعلان فرمان» (Command Prompt) و «پاورشل» (PowerShell) از بسیاری از محیطهای خط فرمان متفاوت حس میشوند.
اما با وجود همه این شباهتها، لینوکس و یونیکس نیز تفاوتهای زیادی دارند. لینوکس از یونیکس الهام گرفته است، اما لینوکس همان یونیکس نیست، بلکه یک سیستم عامل شبه یونیکس است. در بخش بعدی در این خصوص بیشتر توضیح میدهیم.
تفاوت لینوکس و یونیکس چیست؟
لینوکس یک سیستم عامل متن-باز و رایگان است. Unix یک محصول تجاری است که از سوی ارائهدهندگان زیادی با خصوصیات مختلف عرضه میشود و عموماً سختافزار خاص خود را دارد. یونیکس یک سیستم عامل گران و با سورس بسته است. اما لینوکس و یونیکس را کمابیش میتوان شبیه به هم دانست.
تفاوتهای لینوکس و یونیکس چیزهایی فراتر از ابعاد فنی و معماری هستند. برای درک برخی تأثیراتی که موجب شکلگیری لینوکس و یونیکس شدهاند باید تاریخچه این دو را بشناسید.
ریشههای یونیکس
چنان که پیشتر هم اشاره کردیم یونیکس بیش از 50 سال عمر دارد. یونیکس در شرکت تجهیزات دیجیتالی (DEC) و با زبان اسمبلی روی یک دستگاه DEC PDP/7 به عنوان یک پروژه غیر رسمی آزمایشگاههای بِل توسعه یافته که در ادامه از سوی AT&T خریداری شد. این سیستم در مدت کوتاهی به رایانه DEC PDP/11/20 پورت شد و سپس به طور مرتب روی رایانههای دیگر بل گسترش یافت. بازنویسی یونیکس در سال 1973 با استفاده از زبان C موجب شد که این سیستم عامل به نسخه 4 برسد. این یک تغییر مهم بود زیرا خصوصیات زبان C و کامپایلر آن موجب شد که یونیکس راحتتر به معماریهای جدید رایانه پورت شود.
در سال 1973 «کن تامپسون» (Ken Thompson) و «دنیس ریچی» (Dennis Ritchie) در همایشی یک مقاله در مورد یونیکس عرضه کردند. در نتیجه درخواستها برای دریافت یک کپی از یونیکس به سمت آزمایشگاههای بل سرازیر شد. از آنجا که فروش سیستم عامل خارج از دامنه مجاز عملیات AT&T بود، آنها نتوانستند یونیکس را به شکل یک محصول تجاری عرضه کنند. این وضعیت منجر به این شد که یونیکس به صورت یک بسته سورس کد به همراه لایسنس توزیع کنند. هزینههای نرمال برای پوشش هزینههای بستهبندی و ارسال و اندکی سود کافی بود. یونیکس به «صورت موجود» (as is) و بدون پشتیبانی یا هر نوع اصلاح باگ عرضه میشد. اما دریافتکنندگان سورس کد امکان دستکاری آن را داشتند.
به این ترتیب یونیکس در محیطهای دانشگاهی مورد استقبال زیادی قرار گرفت. در سال 1975 کن تامپسون یک فاند از سوی شرکت بل را در دانشگاه برکلی کالیفرنیا هزینه کرد. او در کنار برخی دانشجویان فارغالتحصیل شده شروع به اضافه کردن و بهبود کپی لوکال خود از یونیکس نمود. علاقه عموم به این جنبههای افزوده شده نسخه برکلی از یونیکس افزایش یافت و منجر به انتشار نخستین نسخه از سیستم عامل «توزیع نرمافزار برکلی» (BSD) شد. این سیستم عامل مجموعهای از برنامهها و دستکاریهای سیستم بود که قابلیت اضافه شدن به یونیکس را داشت اما یک سیستم عامل مستقل محسوب نمیشد. نسخههای بعدی BSD کاملاً سیستمهای یونیکس بودند.
یونیکس دو انشعاب مختلف داشت که یکی شاخه AT&T و دیگری BSD بود. همه نسخههای دیگر یونیکس از قبیل AIX, HP-UX و Oracle Solaris از نوادگان این دو محسوب میشوند. در سال 1984 برخی از محدودیتهای شرکت AT&T برداشته شد و این شرکت توانست فروش یونیکس را به صورت یک محصول تجاری داشته باشد و به این ترتیب یونیکس تجاری شد.
پیدایش لینوکس
تجاری شدن یونیکس موجب کاهش آزادیهای کاربران رایانه شد و به این ترتیب ریچارد استالمن تصمیم گرفت تا یک سیستم عامل مبتنی بر آزادی کاربر خلق کند. منظور از آزادی کاربر، آزادی وی برای دستکاری سورس کد، از توزیع نسخههای دستکاریشده نرمافزار و استفاده از نرمافزار به هر روشی که مناسب میپندارد، بوده است.
این سیستم عامل جدید قصد داشت کارکردهای یونیکس را کپی کند، اما از سورس کد آن هیچ استفادهای نکند. او نام این سیستم عامل را GNU گذاشت و پروژه گنو را در سال 1983 برای توسعه سیستم عامل بنیان نهاد. در سال 1985 استالمن بنیاد نرمافزار آزاد را برای تبلیغ، تأمین مالی و پشتیبانی پروژه گنو بنا گذاشت.
همه جنبههای سیستم عامل GNU به جز کرنل پیشرفت خوبی داشتند. توسعهدهندگان پروژه گنو روی یک میکرو کرنل به نام GNU Hurd کار میکردند که پیشرفت کندی داشت. در واقع این پروژه امروزه همچنان در حال توسعه است و به انتشار نزدیک شده است. بدون وجود یک کرنل، هیچ سیستم عاملی نمیتواند وجود داشته باشد.
در سال 1987 «اندرو اس. تانهبائوم» (Andrew S. Tanebaum) یک سیستم عامل به نام مینیکس انتشار داد. این سیستم عامل به منظور یک پروژه کمکی برای آموزش دانشجویانی که روی سیستم عامل کار میکردند طراحی شده بود. مینیکس یک سیستم عامل عملیاتی شبه یونیکس بود اما برخی محدودیتها به خصوص در زمینه فایلسیستم داشت. در نهایت سورس کد این سیستم باید آن قدر کوچک میبود که در طی یک ترم تحصیلی در دانشگاه بررسی شود و لذا برخی کارکردها قربانی این کوچک بودن شدند.
در ادامه یک دانشجوی علوم کامپیوتر به نام «لینوس تروالدز» (Linus Torvalds) برای درک بهتر کارکرد داخلی پردازنده Intel 80386 یک کد ساده تعویضکننده وظیفه به عنوان یک تمرین یادگیری نوشت. در نهایت این کد به یک پیش-کرنل تبدیل شد که به نخستین کرنل لینوکس بدل شد. تروالدز با مینیکس آشنا بود. در واقع نخستین کرنل اول روی یک مینیکس با استفاده از کامپایلر GCC ریچارد استالمن توسعه یافته بود.
تروالدز تصمیم گرفت تا سیستم عامل شخصی خود بسازد تا بر محدودیتهای خاص طراحی شده برای تدریس در مینیکس غلبه کند. در سال 1991 تروالدز اعلامیه مشهور خود را روی گروه یوزنت Minix منتشر ساخت و از افراد تقاضا کرد که نظرها و پیشنهادهای خود را مورد پروژهاش ارائه کنند.
لینوکس در عمل یک کلون از یونیکس نبود. اگر لینوکس یک کلون از یونیکس بود، در نهایت یک یونیکس میشد. لینوکس چنین نبود و بلکه یک شبه لینوکس بود. کلمه کلون به این معنی است که بخشهای کوچکی از نسخه اصلی را برداریم و به یک نسخه کاملاً شبیه به نسخه اصلی تبدیل کنیم. لینوکس از نو ساخته شد تا حس و ظاهر یونیکس را داشته باشد و همان نیازها را برآورده سازد. در واقع لینوکس کمتر شبیه یک کلون و بیشتر شبیه یک بازسازی بود.
اما به هر روی لینوکس یک لینوکس بود که به دنبال سیستم عامل میگشت و GNU سیستم عاملی بود که به دنبال یک کرنل میگشت. بنابراین پیوند این دو و آنچه اتفاق افتاد، ناگزیر مینمود و دنیا را متحول ساخت.
چه کسی یونیکس و لینوکس را توسعه داده است؟
هر توزیع لینوکس مجموعه بسیاری از اجزای مختلف است که از مکانهای متفاوتی گردآوری شدهاند. کرنل لینوکس، مجموعه ابزارهای اساسی GNU و اپلیکیشنهای در دید کاربر که به صورت یک توزیع کامل عرضه میشوند. کسی که کار ترکیب، نگهداری و مدیریت این مجموعه را بر عهده دارد باید کرنل را توسعه دهد، اپلیکیشن را بهروز نماید و ابزارهای اساسی را حفظ کند. نگهداری کنندگان توزیع لینوکس و جوامع کاربری هر توزیع همگی در حیات بخشیدن به یک توزیع به اندازه توسعهدهندگان کرنل نقش ایفا میکنند. لینوکس نتیجه کار و تلاش توزیع یافته از سوی داوطلبان، سازمانهایی مانند کانونیکال و ردهت و افراد اسپانسر است.
در سوی دیگر هر نسخه تجاری از Unix از سوی یک مجموعه منفرد و منسجم با استفاده از امکانات و نیروی انسانی داخلی یا برونسپاری شده توسعه مییابد. در اغلب موارد این توسعه شامل یک کرنل منحصر به فرد است که به طور خاص برای پلتفرمهای سختافزاری ارائه شده از سوی هر ارائهدهنده طراحی شده است.
مشتقات رایگان و متن-باز سیستم یونیکس BSD مانند FreeBSD, OpenBSD و DragonBSD از ترکیبی از کد قدیمی BSD و کد جدید استفاده میکنند. هم اکنون برخی پروژهها دارای پشتیبانی جامعه کاربری هستند و مانند توزیعهای لینوکس نگهداری میشوند.
استانداردها و سازگاری
به طور کلی لینوکس نه با مشخصههای یونیکس منفرد (SUS) و نه با POSIX سازگاری ندارد. همچنین هر دو استاندارد را بدون تبعیت محض از آنها تأمین میکند. یک یا دو استثنای خاص مانند Inspur K-UX وجود دارند که لینوکس چینی است و با POSIX سازگار است.
یک یونیکس واقعی مانند پیشنهادهای تجاری با این استانداردها سازگار است. برخی مشتقات BSD شامل همه به جز یکی از نسخههای مک با POSIX سازگار هستند. نامهای نسخهها مانند AIX, HP-UX و Solaris همگی نشانهای تجاری هستند که از سوی سازمانهای مربوطه نگهداری میشوند.
نشانهای تجاری و کپیرایت
لینوکس یک نشان تجاری شخص لینوس تروالدز است. بنیاد لینوکس به مدیریت این نشان جاری به نیابت از وی میپردازد. کرنل لینوکس و ابزارهای اساسی تحت لایسنس GNU یعنی لایسنسهای عمومی کلی Copyleft انتشار یافتهاند. سورس کد به طور رایگان و آزاد در اختیار همه قرار دارد.
از سوی دیگر یونیکس نشان تجاری Open Group است. کپیرایت دارد و تحت مالکیت و با سورس بسته است FreeBSD از سوی پروژه FreeBSD کپیرایت گرفته است و کد سورس آن موجود است.
تفاوتهای استفاده یونیکس و لینوکس
از دید کاربر مصرفکننده در خط فرمان تفاوتهای دیداری زیادی بین یونیکس و لینوکس وجود دارد. به دلیل وجود استانداردهای POSIX و الزام به سازگاری با آن، نرمافزارهای نوشته شده روی یونیکس میتوانند با یک سیستم عامل لینوکس با مقدار محدودی تلاش پورتینگ سازگار باشند. برای نمونه اسکریپتهای شل میتوانند مستقیماً روی لینوکس در بسیاری جاها با کمی دستکاری یا حتی بدون دستکاری مورد استفاده قرار گیرند.
برخی از ابزارهای خط فرمان گزینههای خط فرمان کمی متفاوتی دارند، اما اساساً همان مجموعه ابزارها روی هر دو پلتفرم در دسترس هستند. در واقع سیستم عامل AIX آیبیام یک جعبه ابزار AIX برای اپلیکیشنهای لینوکس دارد. این کار به مدیر سیستم امکان میدهد که صدها پکیج GNU را روی آن نصب کند.
گونههای مختلف یونیکس همانند لینوکس دارای رابطهای کاربری گرافیکی (GUI) متفاوتی هستند. کاربر لینوکسی که با GNOME یا Mate آشنا باشد، نخستین بار که با KDE یا Xface مواجه شود به سرعت میتواند مسیر خود را پیدا کند. به طور مشابه تعداد زیادی رابطهای گرافیکی کاربری روی یونیکسها از قبیل Motif, Common Desktop Environment و X Windows System وجود دارند. اینها نیز آن قدر به هم نزدیک هستند که هر کس با مفاهیم یک محیط با دیالوگها، منوها و آیکونها آشنا باشد، میتواند با بقیه نیز کار کند.
البته بین یونیکسهای مختلف تفاوتهای زیادی مثلاً در مورد شیوه مدیریت مختلف سازوکارهای init وجود دارد. مشتقات System V Unix و BSD سیستمهای init متفاوتی دارند. گونههای Free BSD طرحهای init خاص BSD را دارند. به طور پیشفرض توزیعهای لینوکس یا از یک سیستم init مشتق از Unix System V یا system استفاده میکنند.
سخن پایانی
در این مطلب تلاش کردیم توضیحات مختصری در خصوص سیستم عامل Unix، تاریخچه، کاربردها، نسخههای مختلف و تفاوتها و شباهتهای آن با سیستمهای عامل دیگر بیان کنیم. این کار به شما کمک میکند که متوجه شوید یونیکس چه بود، از کجا آمد و اینک کجاست و در این مسیر تلاش کردیم تا از ورود به جزییات هم خودداری کنیم.
سلام وقت بخیر
من آموزش یونیکس رو میخوام میتونید راهنمایی کنید باتشکر