سیستم عامل لینوکس معمولا به عنوان یک سیستمعامل مشابه یونیکس «UNIX-like» معرفی میشود. با این حال بسیاری از کاربران نمیدانند این عبارت به چه معنی است و اساسا یونیکس چیست. منظور از سیستمعامل مشابه یونیکس این است که سیستمعامل لینوکس از نظر طراحی و کاربردی شباهتهای زیادی به یونیکس دارد اما در واقع یک سیستمعامل یونیکس محسوب نمیشود. یونیکس یک نشان تجاری ثبت شده است و یک برنامه اختصاصی متعلق به شرکت The Open Group محسوب میشود. از سوی دیگر لینوکس یک سیستمعامل متن باز است که به عنوان یک نرمافزار آزاد جایگزین یونیکس توسعه یافته است. تفاوت لینوکس و یونیکس اما به همینجا ختم نمیشود. در این مقاله توضیح مختصری در مورد هرکدام از این دو سیستمعامل خواهیم داد و با بررسی ویژگیهای آنها خواهیم دید فرق لینوکس و یونیکس در چیست.
در این مقاله از مجله فرادرس پس از معرفی هر دو سیستمعامل لینوکس و یونیکس، تاریخچه توسعه و تکامل هر دو سیستمعامل را مرور خواهیم کرد. پس از آن بازار هدف هرکدام، میزان به کارگیری از آنها در محیطهای مختلف و ویژگیهایشان را مقایسه میکنیم و در نهایت تفاوت لینوکس و یونیکس از نظر ملاحظات امنیتی را مرور میکنیم.
یونیکس چیست؟
یونیکس یکی از قدیمیترین سیستمعاملها است. این سیستمعامل از ابتدا به عنوان یک خانواده بزرگ از سیستمعاملها در نسخههای متنوعی عرضه شده است. اگرچه تعدادی نسخههای رایگان و متنبازی از سیستمعاملهای خانواده یونیکس مانند FreeBSD عرضه شده است، اما بیشتر سیستمعاملهای این خانواده نرمافزارهای اختصاصی محسوب میشوند که با دریافت مجوز رسمی از Open Group میتوانند از نشان تجاری یونیکس استفاده کنند. یک تفاوت لینوکس و یونیکس تفاوت در نحوه تولید، توزیع و مجوزهای قانونی مربوط به آنها است. سیستمعامل یونیکس از ابتدای عرضه شدن تا به امروز بیشتر بر روی سرورها و ایستگاههای کاری «Workstations» قدرتمند نصب و استفاده میشود.
یونیکس در دهه ۷۰ میلادی در آزمایشگاه بل متعلق به شرکت AT&T توسعه یافته است. پیادهسازی اولیه آن با استفاده از زبان اسمبلی انجام شده بود اما مدتی بعد مجددا با زبان C پیادهسازی شد تا بتواند طیف وسیعتری از سختافزارها را پشتیبانی کند. درواقع یونیکس یکی از اولین سیستمعاملهایی بود که با زبان برنامهنویسی C پیادهسازی شده است. سیستمعامل یونیکس یک سیستمعامل چندکاربره است. در یک سیستمعامل چندکاربره چند کاربر میتوانند به صورت همزمان از سیستم استفاده کنند، در این نوع سیستمها میتوان برای دسترسی کاربران به دادهها و منابع مختلف محدودیتها و سیاستهای امنیتی وضع کرد. همچنین یونیکس سیستم عاملی چندکاره «Multi Tasking» نیز هست. منظور از سیستمعامل چندکاره این است که در این سیستمعامل چند برنامه میتوانند بدون اینکه مشکلی برای یکدیگر ایجاد کنند به صورت همزمان اجرا شوند.
طراحی یونیکس
طراحی یونیکس به صورتی انجام شده است که برای کامپیوترهایی با چند پردازنده مناسب باشد. در یونیکس کرنل سیستمعامل وظیفه مدیریت فعالیتهای سیستم و پردازهها را به عهده دارد و فضای حافظه کرنل از فضای حافظهای که در اختیار سایر پردازهها قرار میگیرد تفکیک شده است. در دهه ۸۰ میلادی سیستمعامل یونیکس سیستم فایل سلسله مراتبی را معرفی کرد و آن را مورد استفاده قرار داد، این سیستم فایل که امروزه به عنوان یک سیستم فایل استاندارد شناخته میشود در آن زمان سیستم خلاقانهای محسوب میشد. از ویژگیهای دیگر یونیکس میتوان به ایمنی آن اشاره کرد، بدافزارهای کمی این سیستمعامل را هدف قرار میدهند و مدیریت سطوح دسترسی و فناوریهای رمزنگاری مختلف به کار گرفته شده در یونیکس احتمال حمله موفقیتآمیز به آن را تا حد خوبی کاهش میدهد.
همچنین بیشتر سیستمعاملهای یونیکس کاملا با استاندارد POSIX سازگار هستند. این استاندارد که توسط Open Group و IEEE توسعه یافته است، یک رابط برنامهنویسی استاندارد است که به واسطه آن برنامهها و کاربران میتوانند با سیستمعامل تعامل کنند. پیروی از استاندارد POSIX باعث میشود تا برنامهنویسان به سادگی بتوانند برنامههای خود را با این طیف از سیستمعاملها سازگار کنند و یادگیری تعامل با سیستمعامل برای کاربران نیز سادهتر شود.
لینوکس چیست؟
پیش از این که بررسی تفاوت لینوکس و یونیکس بپردازیم لازم است قدری هم با لینوکس آشنا شویم. سیستمعاملهای لینوکس، مجموعهای از سیستمعاملها هستند که بر پایه کرنل لینوکس ساخته شدهاند. کرنل لینوکس یک نرمافزار آزاد است که به رایگان در دسترس است. بیشتر سیستمعاملهای لینوکس توسط جامعه کاربران و توسعهدهندگان ساخته شدهاند. به هرکدام از سیستمعاملهایی که بر پایه کرنل لینوکس ساخته شدهاند یک توزیع لینوکس گفته میشود. توزیعهای مختلفی از لینوکس برای کارکردهای خاص توسعه پیدا کردهاند.
در بررسی تفاوت لینوکس و یونیکس باید گفت لینوکس را معمولا به عنوان یک سیستمعامل مشابه یونیکس معرفی میکنند. اگرچه لینوکس شامل هیچ کد اختصاصی از سیستمعامل یونیکس نمیشود، اما به صورتی طراحی شده است که کارایی آن مشابه یونیکس باشد همچنین رابطهای برنامهنویسی «Interface» آن مشابه به یونیکس طراحی شده است.
به این ترتیب کاربرانی که مسلط به سیستمعاملهای یونیکس باشند به راحتی میتوانند از لینوکس استفاده کنند. همچنین برنامهنویسان نیز به راحتی میتوانند برنامههایی را که برای استفاده در محیط یونیکس توسعه داده بودند، با محیط لینوکس سازگار کنند. این ویژگیها باعث شد تا لینوکس به سرعت به یک جایگزین محبوب برای یونیکس تبدیل شود. علاوه بر این بر خلاف یونیکس که بیشتر در سرورها مورد استفاده قرار میگرفت، لینوکس با این دید توسعه پیدا کرد که کاربران کامپیوترهای شخصی نیز به راحتی بتوانند از آن استفاده کنند.
مانند یونیکس، لینوکس نیز یک سیستمعامل چندکاربره و چندکاره است و باز مانند یونیکس لینوکس هم عمدتا با استفاده از زبان برنامهنویسی C پیادهسازی شده است. لینوکس با طیف وسیعی از پردازندهها و سختافزارها سازگار است و برای سیستمهایی با چند پردازنده مناسب است. از نظر این قبیل ویژگیهای فنی میتوان گفت تفاوت لینوکس و یونیکس بسیار اندک است. اما به عنوان یک فرق لینوکس و یونیکس میتوان به این موضوع اشاره کرد که لینوکس، علاوه بر این که برای استفاده در سرورهای قدرمتند کاملا مناسب است، با دستگاههای الکترونیکی کوچک و قابل حمل نیز سازگار است. بسیاری از روترها، تجهیزات خانه هوشمند و اینترنت اشیا از این سیستمعامل استفاده میکنند. علاوه بر این، سیستمعامل اندروید نیز بر پایه کرنل لینوکس توسعه یافته است. در نظر داشته باشید که پیشتر نیز در رابطه با «اینترنت اشیا» در مجله فرادرس صحبت کرده بودیم.
تفاوت لینوکس و یونیکس از نظر تاریخچه توسعه آنها
در این بخش فرق لینوکس و یونیکس را با توجه به پیدایش و تکامل هرکدام بررسی میکنیم. از زمان معرفی هرکدام از این دو سیستمعامل، نسخههای مختلفی از آنها عرضه شده است. در این بخش علت شکلگیری توزیعها و نسخههای مختلف هرکدام را بررسی خواهیم کرد.
یونیکس
در مقایسه با لینوکس میتوان یونیکس را دایناسور سیستمعاملها معرفی کنیم که در دهه ۶۰ میلادی توسط کارمندان آزمایشگاه بل توسعه پیدا کرد. در سالهای بعد از انتشار کد منبع نسخه اولیه یونیکس شاخههای مختلفی از این سیستمعامل عرضه شدند. به همین دلیل است که امروز یک سیستمعامل یونیکس واحد مانند مایکروسافت ویندوز وجود ندارد. در عوض خانواده سیستمعاملهای یونیکس را داریم که سیستمعاملهایی هستند که توسط Open Group این مجوز را دریافت کردهاند که به عنوان نسخهای از یونیکس عرضه شوند. سیستمعاملهای BSD و System V دو نسخه از شناخته شده و پرکاربردترین نسخهها در میان خانواده یونیکس هستند.
BSD که کوتاه شده عبارت «Berkely Software Distribution» است، در سال ۱۹۷۷ به عنوان یک شاخه از سیستمعامل یونیکس توسعه پیدا کرد. در گذر زمان خانواده گستردهتری از سیستمعاملهای یونیکس بر پایه نسخه اولیه BSD ساخته شدند. توزیعهای FreeBSD و OpenBSD و NetBSD بیش از سایر توزیعهای این خانواده شناخته شدهاند. نرمافزارهای یونیکس تحت گواهی BSD میتوانند به صورت آزاد مورد استفاده قرار بگیرند. خانواده سیستمعاملهای یونیکس System V شامل سیستمعاملهای پرکاربردی مانند AIX که توسط IBM تولید شده، HP-UX که توسط HP توسعه پیدا کرده است و Oracle Solaris میشود. سیستمعاملهای خانواده System V از نسخه ۵ سیستمعامل یونیکس انشعاب کردهاند و عمدتا با مجوز رسمی Open Group عرضه میشوند.
اگرچه دو گروه BSD و System V در ابتدا تفاوتهای بیشتری داشتهاند اما به تدریج این تفاوتها کمرنگ شده است و با اقتباس نوآوریهای سیستمعاملهای رقیب، سیستمعاملهای هر دو گروه به لحاظ عملکرد و تکنولوژی به هم نزدیکتر شدهاند. سیستمعامل macOS X یکی از شناختهشدهترین سیستمعاملهایی است که بر پایه خانواده BSD توسعه یافته است.
لینوکس
در مقایسه با یونیکس میتوان گفت لینوکس سیستمعامل نوپایی محسوب میشود. این سیستمعامل در سال ۱۹۹۱ توسط لینوس توروالدز «Linus Torvalds» توسعه یافته است. در آن زمان توروالدز تنها یک کرنل سیستمعامل ماژولار را توسعه داد که به عنوان یک رابط مرکزی استاندارد برای طیف وسیعی از سختافزارها عمل میکند و مسئولیت مدیریت حافظه و پردازهها، اجرای چند پردازه به صورت همزمان و اجرای سیاستهای امنیتی را بر عهده دارد. یک سال بعد کرنل لینوکس تحت گواهی GPL به عنوان یک نرمافزار آزاد در اختیار جامعه توسعهدهندگان قرار گرفت. به این ترتیب توسعهدهندگان مختلف میتوانستند به کد کرنل لینوکس دسترسی داشته باشند، آن را مطالعه کنند، تغییرات دلخواهشان را در آن اعمال کنند و آن را در کنار سایر نرمافزارها عرضه کنند. طی همین فرآیند، توزیعهای مختلف لینوکس به وجود آمدند. هر توزیع لینوکس، با گردآوری کتابخانهها و کامپایلرهای مختلف، نرمافزارهای کاربردی، رابطهای کاربری مختلف و کرنل لینوکس یک سیستمعامل کامل را در اختیار کاربران قرار میدهد.
امروزه پروژه GNU به عنوان یک جامعه توسعهدهنده اثرگذار و پیشرو شناخته میشود که با لینوکس و بر روی لینوکس کار میکنند. توزیعهای مختلف لینوکس بر روی کامپیوترهای شخصی و سرورها به طور گستردهای مورد استفاده قرار میگیرند. یک تفاوت لینوکس و یونیکس این است که در دنیای لینوکس خبری از گواهیها و مجوزهای حقوقی محدود کننده و پرهزینه نیست و این موضوع بر گسترش توسعه و کاربرد لینوکس بسیار موثر بوده است.
تفاوت لینوکس و یونیکس از نظر مخاطبان و به کارگیری
تا اینجا، تفاوت لینوکس و یونیکس را بررسی کردهایم اما در این بخش میبینیم سیستمعاملهای لینوکس و یونیکس هر کدام برای چه بازار هدفی عرضه شدهاند. تا چه اندازه و توسط چه افراد و سازمانهایی به کار گرفته میشوند و فرق لینوکس و یونیکس از جهت کاربر هدف چیست؟
یونیکس
در ابتدای عرضه یونیکس، بیشتر در دانشگاهها و بر روی ایستگاههای کاری خاصی از این سیستمعامل استفاده میشد. اما پس از مدتی یونیکس به سیستمعاملی محبوب برای استفاده در مراکز داده و بر روی سرورها تبدیل شد. امروزه عرضهکنندگان یونیکس بیشتر بر فروش خدمات و محصولاتشان به بخشهای خصوصی و صنعتی مانند سرویسهای مالی و صنعت سلامت متمرکزند. کسانی که بخواهند از یونیکس به صورت حرفهای از ظرفیت یونیکس چه بر روی ایستگاههای کاری و چه بر روی سرورها استفاده کنند معمولا به سراغ یک نسخه یونیکس اختصاصی دارای مجوز میروند. تولید کنندگانی مانند IBM، Oracle و HP بستههای شخصیسازی شده و کامل سختافزار و نرمافزار را ارائه میدهند که پاسخگوی نیاز این دسته از صنایع و سرویسدهندگان خاص است.
مشتریان یونیکس در بخش صنایع و کسب و کار به دلیل اهمیت ایمنی و پایداری سیستمهایشان، نرمافزارهای اختصاصی یونیکس را ترجیح میدهند. این مشتریان هزینه زیادی را برای پشتیبانی و نگهداری طولانی مدت از سرویسهایشان به سرویسدهندگان یونیکس میپردازند. همچنین مهاجرت از یک سیستم یونیکس کاملا شخصیسازی شده برای آنها میتواند بسیار پر هزینه و حتی به لحاظ فنی پر مخاطره باشد. بر همین اساس احتمالا یونیکس تا سالها بازیگر مهمی در صنعت نرمافزار باقی بماند.
اما با وجود اهمیت یونیکس در صنعت نرمافزار سالهاست که محبوبیت و به کارگیری از آن به طور پیوسته رو به کاهش بوده است. یکی از عوامل موثر بر این موضوع این است که سیستمعاملهای مدرن ویندوز و لینوکس هر دو به خوبی با پردازندههای اقتصادی x86 سازگارند. این پردازندهها در سالهای اخیر پیوسته در حال تکامل بودهاند و علاوه بر بازار کامپیوترهای شخصی، در حال تسخیر بازار کامپیوترهای سرور نیز هستند. از سوی دیگر کامپیوترهای سرور سنتی (مانند ماشینهای Itanium مورد پشتیبانی Unix System V) به لحاظ فنی توسعه چندانی پیدا نکردهاند و امروزه راهکارهای اقتصادیای محسوب نمیشوند.
سیستمهای یونیکس عمدتا بر پایه حوزههای کاربردی مشخصی و برای کاربران متخصص توسعه یافتهاند و به همین دلیل نقش کمتری در بازار مصرفکنندگان عمومی کامپیوترهای شخصی و لپتاپها داشتهاند. با این وجود، علیرغم کاهش استفاده از یونیکس در صنایع، افزایش تاثیر یونیکس بر کاربران معمولی را نمیتوان نادیده گرفت. توزیعهای BSD در سالهای اخیر توسط کاربران بیشتری به کار گرفته شدهاند. کاربران بسیاری به طور روزمره از سیستمعامل مک که بر پایه BSD ساخته شده استفاده میکنند و استفاده از FreeBSD برای کاربردهایی نظیر سرور ایمیل، سرور وب و فایروالها در حال افزایش است.
لینوکس
لینوکس به دلیل پشتیبانیاش از طیف وسیعی از سختافزارها، متن-باز، در دسترس عموم و رایگان بودن، سرعت زیاد توسعه شناخته شده است. این برتریها باعث رواج روزافزون لینوکس شدهاند. همچنین از آنجا که لینوکس از استاندارد POSIX طبعیت میکند، نرمافزارهای قدیمی که برای استفاده در یونیکس توسعه یافتهاند به آسانی با آن سازگار میشوند و این موضوع مهاجرت از یونیکس به لینوکس را سادهتر میکند.
در حال حاضر لینوکس محبوبترین سیستمعامل برای استفاده بر روی سرورها است. کاربران سنتی یونیکس، یعنی صنایع و کسبوکارهای بزرگ، میتوانند از نسخههای اختصاصی لینوکس مانند RedHat استفاده کنند که مانند سرویسدهندگان یونیکس، پشتیبانی طولانیمدت و خوبی را به مشتریانشان ارائه میدهند. در بازار سیستمعاملهای کامپیوترهای شخصی و لپتاپها اما لینوکس از دو رقیب خود یعنی ویندوز و مک که بر پایه BSD توسعه یافته است، با فاصله زیادی عقب است. عموم کاربران اینطور تصور میکنند که لینوکس سیستمعاملی مخصوص کاربران حرفهای کامپیوتر و متخصصان فناوری اطلاعات است. امروزه این باور چندان ریشهای در واقعیت ندارد. توزیعهای بسیاری مانند توزیع اوبونتو ورود به دنیای لینوکس را برای کاربران تازهکار بسیار ساده میکنند. رابط کاربری گرافیکی در بسیاری از توزیعهای دسکتاپ لینوکس به اندازه کافی قدرتمند است تا کاربران نیازی به کار با ترمینال لینوکس و یاد گرفتن دستورهای لینوکس نداشته باشند.
پیش از این گفتیم که یک فرق لینوکس و یونیکس این است که لینوکس تحت گواهی GPL عرضه شده است و به این ترتیب جامعه کاربران و توسعهدهندگان آن برای عرضه یک توزیع جدید نیاز به پرداخت هزینه یا کسب مجوز از هیچ نهادی ندارند. سهولت عرضه توزیعهای لینوکس و همچنین جامعه فعال و پویای کاربران و توسعهدهندگان لینوکس باعث شده است تا همه کاربران از کاربران عادی تا تولیدکنندگان محتوا و توسعهدهندهها بتوانند توزیع لینوکسی که دقیقا با درنظرگرفتن نیازهای آنها توسعه یافته باشد را بیابند.
شباهت و تفاوت لینوکس و یونیکس از نظر ویژگیها و قابلیتها
در بررسی تفاوت لینوکس و یونیکس باید گفت دو سیستمعامل لینوکس و یونیکس از بسیاری جهات به یکدیگر شبیه هستند. هر دو چند کاربره و چند کاره هستند و در هر دو سیستمعامل، حفاظت از حافظه پایداری سیستم را تضمین میکند. متخصصین فناوری اطلاعات و مدیران سیستم در این سیستمعاملها میتوانند از طریق اسکریپت نویسی و ابزارهای خطفرمان به جزئیات سیستم دسترسی داشته کافی داشته باشند و به سادگی فرآیندهای پیچیده یا زمانبر را خودکارسازی کنند. و در نهایت هم لینوکس و هم یونیکس از استانداردهای POSIX طبعیت میکنند.
کارکردن با معماری «مشتری-سرویسدهنده» (Client-Server) در یونیکس به سهولت و سرعت امکانپذیر است. تعداد زیاد ابزارهای کاربردی «Utility Software Programs» اغلب نیازهای یک مدیر سیستم را پوشش میدهند. علاوه بر این اگر به عنوان یک مدیر سیستم نتوانستید ابزاری که دقیقا پاسخگوی نیاز شما باشد را پیدا کنید، به سادگی میتوانید آن را توسعه دهید. کاربران لینوکس نیز امروزه میتوانند تقریبا از همین امکانات در لینوکس بهرهمند شوند. به لطف پویایی جامعه توسعهدهندگان نرمافزارهای آزاد هر روز ابزارهای بیشتری به محیط لینوکس معرفی میشوند.
از لحاظ تنوع نرمافزارها هر دو سیستمعامل طیف وسیعی از نرمافزارهای اساسی و ابزارهای کاربردی را فراهم میکنند. همچنین بیشتر توزیعهای لینوکس یک ابزار مدیریت پکیج را به صورت پیشفرض در خود دارند که دسترسی نسخه جدید و آزمون شده اغلب نرمافزارها را به سادگی امکانپذیر میسازد و «وابستگیهای نرمافزارها» «Software Dependencies» را نیز مدیریت میکند.
توزیعهای لینوکس طیف وسیعتری از رابطهای کاربری را در محیطهای دسکتاپ مختلف فراهم میکنند. پشتیبانی از رابطهای کاربری و محیطهای دسکتاپ در انواع یونیکس بسیار محدودتر از توزیعهای لینوکس است.
مقایسه ایمنی برای آگاهی از تفاوت لینوکس و یونیکس
هر دو سیستمعامل لینوکس و یونیکس سیستمعاملهای ایمنی محسوب میشوند. معماری این سیستمعاملها وقوع آسیبهای جدی را دشوار میکند. مجوزها و سطوح دسترسی در این سیستمها با جزئیات کافی برای پیادهسازی سیاستهای امنیتی قابل مدیریت هستند. همچنین مدیران سیستم از طریق مدیریت کاربران میتوان سیاستهای امنیتی مختلف را اعمال کنند. در سیستمهای چند کاربره، هر کاربر محل ذخیرهسازی مخصوص به خود را دارد که توسط کاربران دیگر قابل دسترسی نخواهد بود. همچنین کاربران به فایلهای مهم سیستم دسترسی ندارند. هر دو سیستمعامل امکان دسترسی از راه دور از طریق SSH را فراهم میکنند و تقریبا همه نسخههای این دو سیستمعامل به صورت پیشفرض یک برنامه SSH از پیش تنظیم شده را در خود جای دادهاند.
در بررسی تفاوت لینوکس و یونیکس میتوان گفت استفاده گستردهتر از لینوکس در بین سرورهای اینترنت باعث شده است تا این سیستمعامل به هدف مهمتری برای هکرها تبدیل شود. به همین دلیل کاربران لینوکس باید به طور منظم بهروزرسانیهای امنیتی را نصب کنند تا از آسیبهای احتمالی در امان بمانند. البته جامعه گسترده و پویای توسعهدهندگان لینوکس باعث شده است تا آسیبپذیریهای مربوط به این سیستمعامل به سرعت تشخیص داده شوند و به همان سرعت نیز بهروزرسانیهای جدید برای رفع آسیبپذیریها در اختیار کاربران قرار بگیرد. معمولا تشخیص و رفع آسیبپذیریها در سیستمعاملهای یونیکس با سرعت کمتری پیش میرود و تقریبا تمامی موارد گفته شده در این مطلب از مجله فرادرس بررسی شدند.
source