لینوکس همانند ویندوز، iOS و مکینتاش یک سیستم عامل است. در واقع اندروید نیز که یکی از پلتفرم های محبوب دنیا می باشد بر پایه لینوکس طراحی شده است.
سیستم عامل، منابع سخت افزاری کامپیوتر شخصی یا لپ تاپ شما را اداره می کند و به زبان ساده تر، ارتباط بین نرم افزار و سخت افزار را مدیریت می نماید. بدون سیستم عامل، نرم افزار شما کارایی نخواهد داشت.
تکامل لینوکس
لینوکس در سال 1991 توسط Linus Torvalds با هدف بهبود سیستم عامل Unix توسعه داده شد. او پیشنهادات خود را در این خصوص به طراحان Unix اعلام کرده بود اما پذیرفته نشد. بنابراین، Linus Torvalds به فکر طراحی سیستم عاملی افتاد که ویرایش آن توسط کاربران امکان پذیر باشد.
امروزه، سیستم عامل لینوکس به سرعت در حال رشد است و توسط دستگاه های بسیار زیادی از تلفن های همراه گرفته تا ابر کامپیوتر ها قابل استفاده است.
ساختار لینوکس
سیستم عامل شامل مجموعه ای از نرم افزار ها است که هر یک برای کار خاصی طراحی شده اند. لینوکس دارای مولفه های زیر است:
تصویر(1)
1- کرنل
کرنل لینوکس، هسته سیستم عامل است که ارتباط بین سخت افزار و نرم افزار را برقرار کرده و منابع سیستم را مدیریت می کند.
کرنل چهار مسئولیت دارد:
تصویر(2)
- مدیریت دستگاه (device management):
یک سیستم دارای قطعات سخت افزاری زیادی همانند CPU، RAM، کارت صدا، کارت گرافیک و.. است. کرنل تمامی اطلاعات مربوط به این دستگاه ها را در درایور آنها ذخیره می کند (کرنل بدون درایور نمی تواند دستگاه ها را کنترل کند). اینگونه کرنل می داند که هر یک از قطعات چه کاری می توانند انجام دهند و چطور باید آنها را اداره کند تا بهترین عملکرد را داشته باشند. همچنین ارتباط بین تمامی قطعات را مدیریت می کند. کرنل دارای قواعد خاصی است که تمامی دستگاه ها مستلزم رعایت آن هستند.
- مدیریت حافظه (Memory management):
وظیفه دیگری که بر عهده کرنل است، مدیریت حافظه می باشد. کرنل میزان حافظه درگیر و آزاد را تحت نظر گرفته و توسط آدرس حافظه مجازی از عدم تاثیرگذاری پروسه ها بر یکدیگر و تغییر اطلاعات آنها اطمینان حاصل می کند.
کرنل وظیفه آدرس دهی پروسه ها در حافظه سیستم (RAM) را بر عهده دارد. عملا برای اجرای برنامه ای، پروسه آن ابتدا توسط کرنل در حافظه سیستم آدرس دهی می شود تا برنامه در حافظه قرار گرفته و اجرا شود. با استفاده از این آدرس ها، کرنل امکان مدیریت حافظه و همچنین پروسه های مختلف را دارد.
- مدیریت پروسه (Process management):
در مدیریت پروسه، پیش از اختصاص پروسه ای به CPU، کرنل یا به عبارت دقیق تر Process Scheduler لینوکس، برای پروسه ها زمان لازم را تعیین کرده و آنها را اولویت بندی می کند. همچنین در این فرایند، پروسه ها از نظر امنیتی بررسی خواهند شد.
- مدیریت فراخوان های سیستمی (Handling system calls):
مدیریت فراخوان های سیستمی به این معنا است که یک برنامه نویس می تواند کوئری بنویسد یا از کرنل بخواهد تا کار خاصی را انجام دهد.
2- کتابخانه های سیستمی
کتابخانه های سیستمی برنامه های ویژه ای هستند که دسترسی به امکانات کرنل را تسهیل می کنند. برای انجام کارها باید از کرنل درخواست گردد که این درخواست ها توسط اپلیکیشن ها ارسال می شود. اما اپلیکیشن ها باید بدانند که به چه شکل فراخوان های سیستمی (system calls) را برقرار کنند زیرا هر کرنل دارای مجموعه متفاوتی از فراخوان های سیستمی است. برنامه نویسان کتابخانه استانداردی از روال ها را جهت ارتباط با کرنل توسعه داده اند که تمامی سیستم عامل ها از این استانداردها پشتیبانی کرده سپس این موارد به system calls آن سیستم عامل منتقل می شود.
شناخته شده ترین کتابخانه سیستمی لینوکس Glibc (مخفف GNU C library) می باشد.
3- ابزار های سیستمی
سیستم عامل لینوکس دارای مجموعه مفیدی از ابزارها است که معمولا دستورات ساده ای هستند. در واقع نرم افزاری است که در پروژه GNU نوشته شده و تحت لایسنس متن باز منتشر گردیده است تا به صورت رایگان در دسترس عموم قرار گیرد.
با استفاده از دستورات شما می توانید:
- به فایل های خود دسترسی پیدا کنید.
- اطلاعات موجود در دایرکتوری ها یا فایل ها را ویرایش کنید.
- محل فایل ها را تغییر دهید.
- و بسیاری از کارهای دیگر را انجام بدهید.
4- ابزار توسعه
با سه مولفه فوق، سیستم عامل شما اجرا شده و عمل خواهد کرد. اما جهت بروزرسانی سیستم، شما به ابزار ها و کتابخانه های اضافی نیاز دارید که این موارد توسط برنامه نویسان نوشته می شود و به آنها زنجیره ابزار یا ToolChain گفته می شود. ToolChain یک ابزار ضروری برای توسعه می باشد که توسط توسعه دهندگان جهت تولید برنامه کاربردی مورد استفاده قرار می گیرد.
5- ابزار کاربر نهایی
این ابزار ها موجب تفاوت سیستم کاربران با یکدیگر می شود. البته لازم به ذکر است که ابزار های مذکور جهت اجرای سیستم عامل ضروری نمی باشند اما کاربران برای انجام امور مختلف به آنها نیاز پیدا خواهند کرد.
برخی از این ابزار ها عبارتند از: برنامه های طراحی گرافیک، برنامه های اداری، مرورگرها، پخش کننده های مالتی مدیا و...
چرا باید از لینوکس استفاده شود؟
سوال فوق یکی از پرسش های متداول در خصوص سیستم عامل لینوکس است. چرا با وجود سیستم عامل ساده تری مثل ویندوز، باید از سیستم عاملی متفاوت و تا حدودی پیچیده استفاده شود؟ سیستم عامل لینوکس از ویژگی های گوناگونی برخوردار می باشد که آن را کاملا متفاوت نموده و به یکی از پرکاربردترین سیستم عامل ها تبدیل کرده است. چنانچه بخواهید از ویروس، بدافزار، سرعت پایین، کرش، تعمیرات پرهزینه و بسیاری از موارد دیگر در امان بمانید، لینوکس می تواند یک انتخاب عالی باشد. لینوکس مزیت های گوناگونی نسبت به سایر سیستم عامل ها دارد همچنین نیاز نیست که برای آن هزینه ای پرداخت نمایید. در ادامه به برخی از ویژگی های خاص لینوکس که احتمالا شما را به استفاده از آن علاقمند می کند، پرداخته می شود:
تصویر(3)
رایگان و متن باز
اکثر سیستم عامل ها دارای فرمت کامپایل شده می باشند، بدین معنا که کد منبع (source code) اصلی توسط برنامه ای به نام کامپایلر به زبان قابل فهم ماشین ترجمه می شود. ویرایش کد کامپایل شده کار دشواری است.
اما متن باز بودن (open source) کاملا تفاوت دارد. در این حالت کد منبع در دسترس بوده و توسط هر فردی که دارای دانش کافی باشد قابل اصلاح خواهد بود. ویژگی فوق امکان اجرای برنامه ها یا تغییر کد، مطابق نیاز و کارکرد شما، بازتوزیع نسخه ها و توزیع نسخه هایی که توسط شما اصلاح شده اند را می دهد.
به طور خلاصه، لینوکس سیستم عاملی می باشد که برای مردم و توسط مردم (for the people, by the people) طراحی شده است.
شما می توانید بدون پرداخت هزینه از لینوکس استفاده کرده و حتی آن را بر روی چندین ماشین نصب نمایید.
امنیت بالا
لینوکس دارای گزینه های امنیتی مختلفی است که از سرور و اطلاعات شما در برابر ویروس، بدافزار، سرعت پایین، کرش و.. محافظت می کند. ویژگی های امنیتی لینوکس دلیل اصلی انتخاب آن به عنوان مطلوب ترین گزینه توسط توسعه دهندگان می باشد. لینوکس کاملا ایمن نیست اما نسبت به سایر سیستم عامل ها آسیب پذیری کمتری دارد زیرا تمام اپلیکیشن ها در آن نیاز دارند توسط یوزر ادمین اعتبارسنجی شوند. لذا ویروس ها تا زمانی که پسورد دسترسی توسط ادمین ارائه نشود قابل اجرا نیستند. سیستم های لینوکسی نیازی به برنامه آنتی ویروس ندارند.
انتخاب مطلوب توسعه دهندگان
به دلیل اینکه لینوکس از تمامی زبان های برنامه نویسی پرکاربرد از جمله C/C++، Java، Python، Ruby و.. پشتیبانی می کند، انتخاب مناسبی برای توسعه دهندگان است. همچنین با ارائه گستره وسیعی از برنامه های کاربردی، توسعه نرم افزار را تسهیل کرده است.
ترمینال لینوکس نسبت به کامند لاین ویندوز نزد توسعه دهندگان محبوب تر است. پکیج منیجر در سیستم عامل لینوکس به برنامه نویسان کمک می کند که نحوه انجام کارها را بهتر درک کنند. Bash Scripting نیز ویژگی کاربردی دیگری برای برنامه نویسان است. همچنین با پشتیبانی از SSH امکان مدیریت سریع سرور ها را فراهم می کند.
انعطاف پذیر
لینوکس سیستم عاملی انعطاف پذیر است که برای اپلیکیشن های دسکتاپ، سامانه های تعبیه شده (embedded systems) و اپلیکیشن های سرور استفاده می شود. لینوکس در سیستم های متفاوتی از ساعت های هوشمند گرفته تا ابرکامپیوتر ها استفاده می شود، از جمله این سیستم ها می توان به تلفن همراه، لپ تاپ، کامپیوتر شخصی، ماشین، حتی در یخچال و … اشاره نمود. همچنین از گزینه های شخصی سازی گوناگونی پشتیبانی می کند.
لینوکس چگونه کار می کند؟
لینوکس، سیستم عاملی مشابه UNIX است اما دامنه وسیعی از دستگاه های سخت افزاری را پشتیبانی می کند. هر سیستم عاملی که بر پایه لینوکس باشد دارای کرنل لینوکس و پکیج های نرم افزاری جهت مدیریت منابع سخت افزاری است.
همچنین سیستم عامل لینوکس، دارای تعدادی از ابزار های اصلی GNU می باشد که روشی جهت مدیریت منابع کرنل، نصب نرم افزار، پیکربندی تنظیمات امنیتی، کارایی و.. فراهم می سازد. تمامی این ابزار ها در کنار هم از لینوکس یک سیستم عامل کاربردی ساخته است.
توزیع های لینوکس
شرکت های زیادی سیستم عامل لینوکس را تغییر داده اند و توزیعات لینوکسی خود را طراحی کرده اند. به همین خاطر توزیعات لینوکسی زیادی در بازار وجود دارد و نسخه های مختلفی از آن برای کاربران فراهم شده است که شما می توانید مطابق نیاز خود یکی را انتخاب نمایید. از معروف ترین توزیع های لینوکسی می توان به Ubuntu، Fedora، Debian، Linux Mint، Arch Linux، RHEL، CentOS و.. اشاره کرد. Ubuntu و Linux Mint برای افراد مبتدی و Debian و Fedora برای توسعه دهندگان حرفه ای انتخاب خوبی است.
جهت مشاهده لیست کامل توزیعات لینوکسی که تا تاریخ نگارش این مقاله ارائه شده است به این لینک مراجعه نمایید.
در مقاله های آتی به صورت کامل و مجزا به معرفی توزیع های محبوب لینوکسی پرداخته خواهد شد.