سیستمعامل لینوکس یک نوع از سیستم عامل یا هسته است که تحت مجوز برنامههای متنباز توزیع میشود. نحوه عملکرد لینوکس کاملاً شبیه UNIX است. هسته یا کرنل برنامهای در قلب سیستم عامل لینوکس است که از بخشهای اساسی مراقبت کرده و ارتباط آنها را ممکن میکند. به عنوان مثال اجازه برقراری ارتباط بین سختافزار و نرمافزار از طریق کرنل این سیستم صادر میشود.
تاریخچه سیستمعامل لینوکس
لینوکس مانند Mac OS X مبتنی بر سیستم عامل یونیکس است. یک تیم تحقیقاتی در آزمایشگاه Bell در AT&T در اواخر دهه 1960 و اوایل دهه 1970 با هدف ایجاد یک سیستم عامل که برای چندین کاربر قابل دسترسی و امن باشد، یونیکس را ارائه دادند.
پس از آن شرکتهای مختلف شروع به صدور مجوز از یونیکس در دهه 1980 و 1990 کردند. در اواخر دهه 1980، علاقه به ساختن یک سیستم عامل رایگان وجود داشت که شبیه به یونیکس باشد، همین امر سبب شد که در سال 1991، لینوس ترووالدز هسته لینوکس را به صورت نرمافزاری رایگان با منبع آزاد منتشر کند. منبع آزاد به این معنی است که کد کاملاً قابل مشاهده و در دسترس است و میتوان آن را اصلاح و توزیع مجدد کرد.
لینوکس چیست؟
به طور دقیق، لینوکس هسته است، نه کل یک سیستم عامل، این هسته واسط بین سختافزار شما است و درخواستهای ورودی/خروجی برنامهها را فراهم میکند. بقیه سیستم عاملها معمولاً شامل بسیاری از کتابخانههای GNU، برنامههای کاربردی و سایر نرمافزارهای رایگان است. اما به طور کلی این سیستم عاملها با نام GNU/Linux شناخته میشوند.
مهمترین مزیت لینوکس این بود که برنامه نویسان قادر به استفاده از هسته لینوکس برای طراحی سیستم عاملهای شخصی خود بودند. همین موضوع باعث ارائه شدن طیف جدیدی از سیستم عامل کاربر پسند شود. در حال حاضر لینوکس یکی از محبوبترین و پرکاربرد هسته یا Kernel است که پایه و اساس سیستم عاملهای محبوبی مانند Debian ،Knoppix Ubuntu و Fedora است. این تمام گزینههای موجود نیست و هزاران سیستم عامل مبتنی بر لینوکس در دنیا وجود دارد که عملکردهای مختلفی را به کاربران ارائه میدهند.
توزیعهای مختلف لینوکس
در حال حاضر صدها ورژن مختلف از لینوکس وجود دارد. بسیاری از این نسخهها برای هدف خاصی طراحی شدهاند. به عنوان مثال برای اجرا روی وب سرور یا اجرا روی سوئیچ های شبکه مانند روتر، مودم و غیره. آخرین نمونه یکی از محبوبترین توزیعهای مبتنی بر تلفنهای هوشمند مبتنی بر لینوکس، اندروید است!
- Red hat
- Parsix
- CentOS
- Open SUSE
- Ubuntu
- Fedora
- و Mint
به ورژنهای مختلف لینوکس در اصطلاح Distribution یا به اختصار Distroهای لینوکس گفته میشود که در فارسی توزیع نیز نامیده میشوند. برخی از مشهورترین توزیعها در لیست بالا آوردهشدهاند.
معماری سیستمعامل لینوکس
لینوکس دارای معماری در چند لایه متفاوت است که هر لایه مربوط به وظایف خاصی در سیستم میباشد. شکل انتزاعی از معماری لینوکس چیزی مشابه تصویر زیر است:
همانطور که گفتیم، هر لایه وظایف مخصوص به خود را دارد که در ادامه بیشتر با هریک از این مفاهیم و لایهها آشنا خواهیم شد، تا انتهای مقاله با همیار آیتی همراه باشید.
۱- کرنل سیستمعامل لینوکس
کرنل هسته اصلی سیستم عامل مبتنی بر لینوکس است. کرنل در حقیقت منابع سخت افزار رایانه را مجازیسازی میکند و این منابع مجازی را برای هر پردازش فراهم میکند. این امر باعث میشود پردازشها برای اجرا در دستگاه تنها به نظر برسد و امکان چند پردازشی در سیستم فراهم شود. هسته همچنین وظیفه جلوگیری و کاهش تضادها بین پردازشهای مختلف را بر عهده دارد، انواع مختلف هسته عبارتند از:
- هسته یکپارچه (Monolithic)
- هسته ترکیبی (Hybrid)
- هستههای خارجی یا (Exo)
- هستههای میکرو (Micro)
کرنل از ماژولهای مختلفی تشکیل شده و مستقیما با سخت افزار زیرین تعامل دارد. در حقیقت کرنل یا هسته برای پنهان کردن جزئیات سخت افزار سطح پایین در برنامههای سیستمی یا کاربردی انتزاع مورد نیاز را فراهم میکند.
۲- سیستم کتابخانه (System Library)
کتابخانههای سیستم توابع یا برنامههای خاصی هستند که از طریق آنها برنامههای کاربردی یا یوتیلیتیها در سیستم به ویژگیهای هسته دسترسی دارند. این کتابخانهها اکثر عملکردهای سیستم عامل را پیادهسازی میکنند و نیازی به حقوق دسترسی به کد ماژول هسته ندارند. به عبارت ساده کتابخانه انواع خاصی از توابع است که برای پیاده سازی عملکردهای سیستم عامل مورد استفاده قرار میگیرد.
۳- شل (Shell)
لینوکس شل را به عنوان یک برنامه مفسر ویژه ارائه داده است که میتواند برای اجرای دستورات سیستم عامل مورد استفاده قرار گیرد. شل یک رابط کاربری برای به کارگیری هسته است که پیچیدگی عملکرد هسته را از کاربران پنهان می کند. به این صورت که دستورات را از کاربر میگیرد و عملکردهای مورد نیاز در هسته را اجرا میکند. میتوان از Shell برای اجرای انواع مختلفی از برنامهها، ارتباط با برنامههای دیگر و غیره استفاده کرد.
۴- لایه سخت افزاری (Hardware Layer)
این لایه شامل کلیه دستگاهها و سخت افزارهای جانبی مانند RAM ،HDD ،CPU و غیره میشود، سیستمعامل واسطی بین اجزای سختافزاری و برنامههای اجرا شوند روی سیستم عامل است.
۵- برنامهها (Applications)
برنامهها ویژگیهای سیستم عامل را در اختیار کاربر قرار میدهند و میتوانند شامل برنامههای کاربری و همچنین برخی از برنامههای سیستمی باشند، برنامهها در حقیقت بخشی از سیستمعامل هستند که کاربر به صورت مستقیم با آنها سروکار دارد.
زبان برنامه نویسی سیستمعامل لینوکس
هسته لینوکس در درجه اول با زبان C مونتاژ شده است. با توجه به اینکه اظهار نظر لینوس توروالدز درباره ++C که یک زبان کاملاً شناخته شده و با مستندات عالی است، و همچنین این واقعیت که هر کسی میتواند با جستجوی “کد منبع هسته لینوکس” به انگلیسی به اطلاعات آن دست پیدا کند شناخت و کار با این زبان را سادهتر میکند.
اما به صورت کلی این تنها زبان برنامه نویسی لینوکس نیست. چرا که نام لینوکس فقط به هسته و یا حداقل تنظیمات شامل آن هسته و چند ابزار دیگر لازم برای ایجاد یک سیستم بدون هیچ برنامه یا ایجاد توزیع کامل مانند یک سیستم عامل دسکتاپ اشاره دارد. درست است که بسیاری از مؤلفههای اضافی در بخشهای دوم لینوکس نیز به زبان C نوشته شدهاند، اما برخی از این مولفهها با زبانهای دیگر نوشته شدهاند. به صورت کلی برای رسیدن به توزیع کامل لینوکس از مقداری ++C، پایتون، جاوا، مقداری از پرل و شاید چند زبان دیگر را در بر بگیرد.
مزایا و ویژگیهای اصلی سیستم عامل لینوکس
سیستمعامل لینوکس در کنار ویژگیهای منحصر به فرد برخی ویژگیهای مشترک با پیاده سازی بهتر نسبت به سایر سیستم عاملها نیز دارد. به عنوان مثال چند کاربره بودن سیستم عامل و امنیت که یکی از بهترین و قویترین بخشهای این سیستم عامل قدرتمند است. در ادامه برخی از این ویژگیها را مورد بررسی قرار خواهیم داد:
پرتابل یا قابل حمل بودن این سیستم عامل
قابلیت حمل یعنی اینکه نرم افزار میتواند بدون نیاز به نصب بر روی انواع مختلف سخت افزار به همان روشی کار کند که در حالت عادی نصب شده است. هسته و برنامههای لینوکس از اجرای خود بر روی هر نوع فضای سخت افزاری پشتیبانی میکنند. به عنوان مثال اجرا و استفاده از لینوکس روی CD، فلش، هارد اکسترنال و غیره بدون نصب امکان پذیر است.
متن باز یا منبع آزاد بودن سیستمعامل لینوکس
همانطور که گفته شد کد منبع لینوکس به صورت آزاد در دسترس است و تیم های چندگانه با هم همکاری میکنند تا توانایی سیستم عامل لینوکس را افزایش دهند و به طور مداوم در حال بهبود و به روز رسانی است.
چند کاربره بودن لینوکس
لینوکس یک سیستم چندکاره است، به این معنی که چندین کاربر میتوانند همزمان به منابع مختلف و یکسانی مانند RAM ،HDD ،CPU و غیره در سیستم دسترسی پیدا کنند.
چند برنامهای
لینوکس یک سیستم چند برنامهای است، به این معنی که چندین برنامه میتوانند به صورت همزمان و بدون هیچ تداخل، مشکل و یا هنگ کردن در آن اجرا شوند. جالب است بدانید که این سیستم عامل هیچوقت هنگ نمیکند.
ساختار فایل درختی یا سلسلهمراتبی (Hierarchical)
هر سیستم عامل دارای یک نوع ساختار فایل است. به عنوان مثال در سیستم عامل ویندوز با نام MyComputer و در درایوهای مختلف با نامهایی مانند D ،C و غیره طبقهبندی کرده است. لینوکس نیز یک ساختار فایل استاندارد ارائه میدهد که در آن فایلهای سیستمی یا پروندههای کاربر بر اساس تصویر زیر طبقه بندی میشوند.
در این ساختار دایرکتوریها به صورت درختی ذخیره سازی میشوند که همه آنها زیر مجموعه / یا روت اصلی قرار میگیرند.
امنیت
از نظر امنیتی لینوکس از هر سیستم عامل دیگری ایمنتر است. این بدان معنا نیست که لینوکس 100 درصد مطمئن است و برخی از بدافزارها برای لینوکس وجود دارند اما نسبت به سایر سیستم عاملهای دیگر آسیب پذیری بسیار کمتری دارد. بنابراین به هیچ نرم افزار ضد ویروسی احتیاج ندارد.
برخی از سایر مزایای لینوکس عبارتند از:
- ارائه و نصب به روزرسانی های نرم افزار در لینوکس به صورت آسان و مکرر است.
- توزیعهای متنوعی در لینوکس در دسترس است به گونهای که شما میتوانید مطابق نیاز خود یا مطابق سلیقه خود از هر کدام از آنها استفاده کنید.
- لینوکس به صورت رایگان در اینترنت قابل استفاده است.
- پشتیبانی بی نظیر جامعه بزرگ نرم افزارهای متن باز است. پایداری بالایی را فراهم میکند.
- حفظ حریم خصوصی کاربر
- ایجاد یک شبکه دوستانه بین کاربران لینوکس
- انعطاف پذیری لینوکس زیاد است. نیازی به نصب پک کامل لینوکس نیست و شما مجاز هستید فقط اجزای مورد نیاز خود را نصب کنید.
- لینوکس تعداد زیادی از فرمت فایلهای مختلف را پشتیبانی کرده و با آنها سازگار است.
- نصب سریع و آسان و همچنین امکان نصب و استفاده در هر سخت افزاری حتی در سیستم رایانه قدیمی شما
- تمام وظایف را به درستی انجام می دهد حتی اگر فضای محدودی روی هارد دیسک در اختیار داشته باشد.
سیستم عامل لینوکس دارای مزایای دیگری نیز هست که بر محبوبیت آن میافزاید، اما در کنار این موارد معایبی نیز در این سیستمعامل دیده میشود که در ادامه آنها را بررسی میکنیم.
معایب سیستمعامل لینوکس
هر سیستمی در کنار مزایای خود معایبی را نیز به همراه دارد و لینوکس هم از این قاعده مستثنا نیست. به عنوان مثال لینوکس خیلی کاربر پسند یا در اصطلاح User Friendly نیست. بنابراین ممکن است برای کاربرهای مبتدی کار کردن با آن کمی گیج کننده باشد (البته در نسخههای اخیر و برخی از توزیعهای لینکوس ایم مشکلات تاحد قابل قبولی رفع شده) در کنار این مشکل سیستمعامل لینوکس معایب دیگری نیز دارد که برخی از آنها عبارتند از:
کمبود برنامههای مختص لینوکس
از آنجا که لینوکس مانند ویندوز بر بازار مسلط نیست، استفاده از این سیستم عامل معایبی دارد. اول، پیدا کردن برنامههایی برای پشتیبانی از نیازهای شما دشوارتر از سیستم عاملهای محبوبی چون ویندوز است. این یک مشکل برای بیشتر مشاغل است اما جامعه برنامه نویسان لینوکس در حال توسعه برنامههایی هستند که توسط لینوکس پشتیبانی میشوند و به مرور زمان این مشکل تا حد زیادی برطرف میشود.
نبود درایور برخی از سخت افزارها
یکی از مشکلات اصلی لینوکس درایورها است. قبل از نصب هر مؤلفه سختافزاری در رایانه، باید مطمئن شوید که سختافزار درایورهای موجود را دارد. تولید کنندگان سختافزار معمولاً درایورها را برای ویندوز مینویسند و در همه مارکها درایورهای لینوکس نوشته نمیشود. این بدان معناست که اگر تصمیم دارید تغییراتی در سیستم اعمال کنید، ممکن است برخی از سختافزارهای شما با لینوکس سازگار نباشد.
هزینه پشتیبانی
پشتیبانی از منبع باز نیز میتواند یک مشکل در لینوکس باشد. در حالی که تعداد زیادی از افراد در حال پشتیبانی ویندوز هستند و به محض خرید و نصب وجود دارند، اما لینوکس اینگونه نیست. روشی که شرکتهای توزیع کننده لینوکس برای پشتیبانی انجام میدهند و از آن درآمد کسب میکنند از طریق کانالهای پشتیبانی آنهاست. این بدان معنی است که شرکتها اگر نتوانند مسئلهای را حل کنند باید هزینه پشتیبانی را بپردازند. اگرچه تالارهای گفتگو و وبلاگهای زیادی وجود دارند که از مشکلات لینوکس پشتیبانی میکنند اما حل مسئله از این طریق زمان زیادی خواهد برد. البته در صورتی که شرکت شما یک مدیر لینوکس خوب داشته باشد میتوانید بدون پرداخت هزینه پشتیبانی پاسخ را در اختیار داشته باشید.
بنابراین قبل از تصمیم گیری در مورد فناوری منبع باز، مطمئن شوید که از منابع و پرسنل برای پشتیبانی از نرمافزار برخوردار هستید.