لینوکس یکی از نسخه های محبوب از سیستم عامل یونیکس (Unix) است که open source (منبع باز) است و استفاده از رایگان است. لینوکس ، خصوصیات اصلی مانند دستورات و ساختار فایل سیستم را از یونیکس به ارث می برد و لیست دستورات آن کاملا مشابه یونیکس است و به همین دلیل به آن شبه یونیکس می گویند. بهتر است ابتدا کمی راجع به سیستم عامل یونیکس و نحوه ی شکل گیری لینوکس بپردازیم و سپس ساختار لینوکس و توزیع های آن را بررسی کنیم.
در سال 1972 میلادی ، زبان برنامه نویسی C توسط آقای دنیس ریچی در آزمایشگاه بل ساخته شد. در سال 1973 سیستم عامل لینوکس توسط آقای دنیس ریچی و همکارانشان در همین آزمایشگاه های بل ساخته شد. نسخه های اولیه یونیکس فاقد رابط گرافیکی بودند و مناسب کار برای محیط های شبکه بودند. به طور کلی، سیستم عامل یونیکس، پایه ساخت برخی از سیستم عامل ها مانند BSD شد، به طوری که سیستم عامل BSD ، هسته ای مانند یونیکس دارد و مانند نسخه های اولیه آن، فاقد رابط گرافیکی است و از دستورات مشابه یونیکس برخوردار است. از BSD ، سیستم عامل Free BSD منتشر شد که رایگان است.
لینوکس در سال 1991 توسط اقای لینوس توروالدز از کد های مینیکس (minix) که نسخه ی کوچک شده ی یونیکس است به وجود آمد. لینوکس، یک هسته ی آزاد و رایگان از یونیکس است و بهتر است از آن به عنوان هسته لینوکس یا کرنل لینوکس استفاده کنیم.
اولین توزیع لینوکس ، از تجمیع هسته لینوکس و ابزارهای گنو ساخته شد. جنبش گنو، جنبشی بود که در آن برنامه نویسان کدها و پروژه های خود را به صورت رایگان و آزاد در اختیار همه قرار می دادند.توزیع های اولیه لینوکس، به صورت متنی بودند و فاقد رابط گرافیکی بودند و به همین دلیل نتوانستند مانند ویندوز، محبوبیت کسب کنند اما بعدا با توزیع هایی مانند اوبونتو، فدورا و .. ، که محیط های گرافیکی جذابی را در اختیار کاربران قرار می دادند ، بر محبوبیت آن اضافه شد.
اجزای سیستم لینوکس
- مدیریت دستگاه : یک سیستم دارای بسیاری از دستگاه ها مانند CPU ، دستگاه حافظه ، کارت صدا ، کارت گرافیک و غیره است برای کنترل دستگاه ها). بنابراین هسته می داند که یک دستگاه چه کاری می تواند انجام دهد و چگونه می تواند آن را دستکاری کند تا بهترین عملکرد را نشان دهد. همچنین ارتباط بین همه دستگاه ها را مدیریت می کند.
- مدیریت حافظه: عملکرد دیگری که هسته باید مدیریت کند مدیریت حافظه است. کرنل حافظه استفاده شده و استفاده نشده را کنترل می کند و مطمئن می شود که پردازش ها نباید داده های یکدیگر را با استفاده از آدرس های حافظه مجازی دستکاری کنند.
- مدیریت فرآیند: در یک فرایند ، هسته، مدیریت زمان کافی را اختصاص می دهد و قبل از پردازش پردازنده به سایر فرآیندها ، اولویت را به فرآیندها می دهد.
- مدیریت syestem call ها: مدیریت فراخوان های سیستمی (System Call) ها به این معنی است که یک برنامه نویس می تواند یک query بنویسد یا از هسته بخواهد یک کار را انجام دهد.
کتابخانه های سیستم (System Libraries) : کتابخانه های سیستم توابع یا برنامه های خاصی هستند که از طریق آنها اپلیکیشن ها یا ابزارهای سیستم به ویژگی های کرنل دسترسی دارند. این کتابخانه ها بیشتر قابلیت های سیستم عامل را پیاده سازی می کنند. معروف ترین کتابخانه برای لینوکس، کتابخانه Glibc است.
ابزارهای سیستم : لینوکس دارای مجموعه ای از ابزارهای مفید است که معمولاً دستورات ساده ای هستند. این نرم افزاری است که پروژه GNU آن را تحت مجوز منبع باز خود نوشته و منتشر کرده است تا نرم افزار به طور رایگان در دسترس همه قرار گیرد. با کمک دستورات ، می توانید به پرونده های خود دسترسی داشته باشید ، داده های موجود در فهرستها یا فایلهای خود را ویرایش و دستکاری کنید ، مکان فایلها یا هر چیز دیگری را تغییر دهید.
ابزارهای توسعه : شما برای به روز رسانی سیستم خود ، ابزارها و کتابخانه های اضافی دارید. این ابزارها و کتابخانه های اضافی توسط برنامه نویسان نوشته شده و به آنها زنجیره ابزار یا toolchain گفته می شود. زنجیره ابزار یک ابزار توسعه مهم است که توسعه دهندگان برای تولید یک برنامه کاربردی از آن استفاده می کنند.
ویژگی های اساسی لینوکس
در این جا برخی از ویژگی های اساسی لینوکس را ذکر می کنیم:
منبع باز (Open Source) : کد منبع لینوکس آزادانه در دسترس است تیم های متعددی با یکدیگر همکاری می کنند تا قابلیت سیستم عامل لینوکس را افزایش دهند و به طور مداوم در حال پیشرفت است.
چند کاربره بودن: لینوکس یک سیستم چند کاربره است به این معنی که چندین کاربر می توانند به طور همزمان به منابع سیستم مانند حافظه، رم و اپلیکیشن ها دسترسی داشته باشند.
سیستم فایل سلسله مراتبی : لینوکس یک ساختار فایل استاندارد ارائه می دهد که در آن فایل های سیستم، فایل های کاربر مرتب شده اند.
امنیت : لینوکس با استفاده از ویژگی های احراز هویت مانند حفاظت از رمز عبور و دسترسی کنترل شده به پرونده های خاص و رمزگذاری داده ها ، امنیت کاربر را فراهم می کند.
توزیع های لینوکس
هسته لینوکس را می توان به دلخواه تغییر داد و هر کس یا هر شرکتی می تواند نسخه لینوکس خود را داشته باشد و آن را در بازار توزیع کند. به همین دلیل است که نسخه های متعددی از لینوکس وجود دارد. به هریک از این نسخه های متفاوت یک توزیع یا distribution از لینوکس گفته می شود. البته این نسخه ها در صورتی یک توزیع شناخته می شوند که به صورت رایگان و عمومی عرضه شوند نه این که توسط یک شرکت و به صورت خاص برای برنامه های آن شرکت ساخته شده باشد.
معمولا توزیع ها به دلایل و مصارف خاص ساخته می شوند. برای مثال برخی از توزیع های لینوکس وجود دارد که برای نصب روی سرور ها ساخته شده است تا ترافیک بالای وب را مدیریت کند. برخی توزیع ها روی روتر ها (router) ، سوییچ ها (switch) و سایر تجهیزات شبکه نصب می شوند. برخی توزیع ها برای استفاده در GPS ، سیستم اتوموبیل، گوشی های هوشمند و .. عرضه شده اند.
به طور کلی توزیع های لینوکس را می توان به دو دسته مبتنی بر Redhat یا Debian تقسیم بندی کرد:
Fedora : Fedora یک توزیع لینوکس است که توسط پروژه Fedora با پشتیبانی جامعه توسعه یافته است و در درجه اول توسط Red Hat ، زیرمجموعه IBM ، با پشتیبانی اضافی از سایر شرکت ها حمایت می شود. Fedora منبع بالادستی توزیع تجاری Red Hat Enterprise Linux برای CentOS است.
KNOPPIX : یک سیستم زنده قابل بوت روی CD ، DVD یا فلش مموری USB است که شامل مجموعه ای از نرم افزار GNU/Linux ، تشخیص سخت افزار خودکار و پشتیبانی از بسیاری از کارت های گرافیک ، کارت های صدا ، دستگاه های SCSI و USB و سایر لوازم جانبی است.