کرنل لینوکسی دستیار شخصی برای یک مدیر قدرتمند (سخت افزار) است. دستیار وظیفه دارد که پیامها و درخواستها (فرایندها) را از کاربران به اجرا کننده منتقل کند، و به یاد داشته باشد که چه چیزی در کجا ذخیره شده است (حافظه)؛ و همچنین تعیین کند چه کسی در چه زمانی و چگونه میتواند به مدیر اجرایی دسترسی داشته باشد. هسته لینوکس یک هسته سیستم عامل رایگان، منبع باز ، یکپارچه، ماژولار و شبیه به یونیکس میباشد. کرنل هسته جز اصلی سیستم عامل لینوکس (OS) است و رابط اصلی بین سخت افزار کامپیوتر و فرآیندهای آن محسوب میشود.
لینوکس بر روی طیف گستردهای از سیستمهای محاسباتی اجرا میشود. این دستگاهها عبارتند از: تلفن همراه (استفاده از کرنل لینوکس در سیستم عامل اندروید)، رایانههای شخصی، سرورها، رایانههای بزرگ و ابر رایانهها. کرنل لینوکس را میتوان برای معماریهای خاص و برای استفاده در چندین سناریو و با استفاده از دستورات ساده تنظیم کرد (یعنی بدون نیاز به ویرایش دستی کد منبع). کاربران ممتاز همچنین میتوانند پارامترهای هسته را در زمان اجرا تنظیم کنند. بیشتر کدهای هسته لینوکس با استفاده از پسوندهایGNU GCC به زبان برنامه نویسی C و با استفاده از دستورالعملهای خاص (ISA) در بخشهای محدودی از هسته نوشته شده است. در این مقاله با مفهوم کرنل لینوکس آشنا میشوید.
کرنل لینوکس چیست؟
کرنل هسته اصلی یک سیستم عامل است و رابط اصلی سخت افزار و نرم افزار کامپیوتر است. لینوکس را میتوان بر روی طیف گستردهای از سخت افزارهای کامپیوتری، از تلفنهای همراه، رایانهها و کنسولهای بازی گرفته تا رایانههای بزرگ و ابرکامپیوترها نصب کرد. لینوکس یک سیستم عامل سرور پیشرو است و قابلیت اجرای 10 ابرکامپیوتر سریع دنیا را دارد.
هسته لینوکس یک هسته سیستم عامل رایگان و منبع باز، یکپارچه، ماژولار، چند وظیفهای و شبیه به یونیکس است. کرنل لینوکس در ابتدا در سال 1991 توسط لینوس توروالدز برای رایانه شخصی مبتنی بر i386 نوشته شد. پس از آن به عنوان هسته سیستم عامل گنو که به عنوان جایگزینی رایگان برای یونیکس نوشته شده بود، پذیرفته شد.
open source
هسته لینوکس توسط لینوس توروالدز ایجاد شده است و در حال حاضر یک پروژه منبع باز (open source) است که هزاران توسعه دهنده به صورت شبانه روزی روی آن کار میکنند.
یکپارچه (integrated)
هسته لینوکس یکپارچه است، به این معنی که هسته تمام عملیات سخت افزاری و درایور را انجام میدهد. اساسا کل سیستم عامل در فضای هسته کار میکند.
مدولار (modular)
هسته لینوکس از درج و حذف ماژولهای هسته قابل بارگذاری در زمان اجرا پشتیبانی میکند. تنها با نگه داشتن ماژولهای لازم در حافظه هسته، حجم آن کاهش و عملکرد کلی آن افزایش مییابد.
کرنل لینوکس چگونه کار میکند؟
هسته لینوکس در بخشهای مختلف مانند: فضا، رایانه، ساعتهای هوشمند، تلفنهای همراه، روباتیک و سلامت کاربرد دارد. اول از همه هسته لینوکس بررسی میکند که چه سخت افزاری اجرا شود. علاوه بر این، کنترل نرم افزارهای سطح بالا به لطف رابط برنامه نویسی امکان پذیر میشود. در اینجا این امکان برای شما وجود دارد که اطلاعات مربوط به سخت افزارهای نصب شده در اسلاتهای مادربرد را مشاهده کرده و آنها را به صورت دقیق در اختیار داشته باشید.
همچنین، این رابط برنامه نویسی یک لایه انتزاعی را ایجاد میکند. به عنوان مثال: اگر میخواهید با دوستان خود مکالمه ویدیویی داشته باشید، به یک وبکم نیاز دارید. لایه انتزاعی این امکان را برای نرم افزار مورد استفاده شما فراهم میکند تا از این وب کم صرف نظر از ساخت و مدل آن استفاده کنید. اینجا نرم افزار فقط از رابطی که برای کرنل لینوکس وجود دارد، استفاده میکند. هسته لینوکس فراخوانیهای تابع این رابط را به دستورات سخت افزاری واقعی که وب کم نیاز دارد، ترجمه میکند.
ویژگیهای هسته لینوکس
هنگام بحث در مورد معماری یک سیستم بزرگ و پیچیده، میتوانید سیستم را از منظرهای مختلفی مشاهده کنید. یکی از اهداف بررسی این معماری، ارائه راهکاری برای درک بهتر منبع است. هسته لینوکس تعدادی از ویژگیهای مهم معماری را پیاده سازی میکند. لینوکس همچنین به صورت یکپارچه عمل میکند و تمام سرویسها را در هسته جمع آوری مینماید. این با معماری میکروکرنل که در آن هسته خدمات اساسی مانند: ارتباطات، ورودی/خروجی و مدیریت حافظه را ارائه میکند، متفاوت است و سرویسهای خاصتری به لایه میکروکرنل متصل میشوند.
با گذشت زمان، هسته لینوکس از نظر حافظه و CPU کارآمد شد و همچنین بسیار پایدار است. جالبترین جنبه لینوکس، با توجه به اندازه و پیچیدگی آن، قابل حمل بودن آن است. لینوکس را میتوان برای اجرا بر روی تعداد زیادی پردازنده و پلتفرم با محدودیتها و نیازهای معماری مختلف کامپایل کرد.
هدف کرنل لینوکس چیست؟
به طور کلی هسته سیستم کرنل عامل سه کار اصلی را انجام میدهد:
• کرنل لینوکس رابطهای مورد نیاز برای تعامل کاربران و برنامهها را با رایانه فراهم میکند.
• برنامهها را راه اندازی و مدیریت میکند.
• کرنل لینوکس دستگاههای سخت افزاری سیستم را مدیریت میکند.
اما اگر دقیقتر بخواهیم به این موضوع بپردازیم، انجام سه عملکرد هسته شامل طیف وسیعی از وظایف کامپیوتری است که در قسمت زیر آنها را بازگو میکنیم:
• مدیریت اجزای سیستم عامل
• زمانبندی و مدیریت عملیات هسته مرکزی
• مدیریت خطاها در مدیریت حافظه
• سازماندهی و مدیریت موضوعات و فرآیندهای مختلف ایجاد شده توسط برنامههای در حال اجرا
• زمان بندی برنامههایی که میتوانند به هسته دسترسی داشته باشند و از آن استفاده کنند، و نظارت بر استفاده از آن در زمانهای مشخص شده.
• مدیریت و بهینه سازی منابع سخت افزاری مانند: واحد پردازش مرکزی (CPU) و استفاده از حافظه پنهان، عملیات سیستم فایل و مکانیسمهای انتقال شبکه.
• مدیریت و دسترسی به دستگاههای ورودی/خروجی مانند: صفحه کلید، ماوس، درایو دیسک، پورتهای USB، آداپتورهای شبکه و نمایشگرها و مدیریت تماسهای دستگاه و سیستم برنامه با استفاده از مکانیسمهای مختلف مانند قطعات سخت افزاری یا درایورهای دستگاه.
هسته برای عملکرد خوب کامپیوتر بسیار حیاتی است و حفاظت حافظه سیستم را برعهده دارد. فضای هستهای که در آن برنامهها بارگذاری میشود، یک ناحیه امن در حافظه است. این فضای حافظه امن و مشخص تضمین میکند که سایر برنامهها و دادهها آسیبی به هسته نمیزنند و باعث مشکلات عملکردی، ناپایداری یا سایر پیامدهای منفی نمیشوند. در عوض، برنامهها در فضای حافظه کاربر اجرا میشوند.
انواع هسته کرنل لینوکس
هستهها به سه نوع تقسیم میشوند: یکپارچه، میکروکرنل و ترکیبی. تفاوت اصلی بین این هستهها تعداد فضاهای ادرسی است که پشتیبانی میکنند.
• یک میکروکرنل فرآیندها و خدمات کاربر و خدمات کرنل را در فضاهای مختلف انجام میدهد.
• هسته یکپارچه خدمات را در همان فضای آدرس پیاده سازی میکند.
• هسته ترکیبی مانند: هستههای Microsoft Windows NT و Apple XNU، رفتارها و مزایای هستههای میکروکرنل و یکپارچه را ترکیب میکند.
برخی از تفاوتهای خاص بین سه نوع هسته کرنل لینوکس شامل موارد زیر است:
ریز هستهها
میکروکرنلها تمام خدمات خود را در فضای هسته ارائه میدهند. میکروکرنلها برای پروتکل ارتباطی خود از روش ارسال پیام استفاده میکنند که بستههای داده، سیگنالها و عملکردها در این فرایند منتقل میشوند. میکروکرنلها همچنین انعطاف پذیری بیشتری نسبت به هستههای یکپارچه دارند. برای افزودن یک سرویس جدید، مدیران آدرس کاربر را برای یک میکروکرنل تغییر میدهند.
میکروکرنلها به دلیل ماهیت ایزوله خود از امنیت بیشتری نسبت به هستههای یکپارچه برخوردار هستند. اگر یک سرویس در فضای آدرس از کار بیفتد، میکروکرنل تحت تاثیر قرار نمیگیرد.
هستههای یکپارچه
هستههای یکپارچه بزرگتر از میکروکرنلها هستند، زیرا هم هسته و هم خدمات کاربر را در یک فضا قرار میدهند. هستههای یکپارچه از پروتکل ارتباطی سریعتری نسبت به میکروکرنلها برای اجرای فرآیندهای بین سختافزار و نرمافزار استفاده میکنند. آنها نسبت به میکروکرنلها انعطاف کمتری دارند و به فعالیت بیشتری نیاز دارند. مدیران برای پشتیبانی از یک سرویس جدید باید کل هسته را بازسازی کنند.
هستههای یکپارچه نسبت به میکروکرنلها امنیت بیشتری برای سیستمها ایجاد میکنند، زیرا اگر سرویسی از کار بیفتد، کل سیستم خاموش میشود. هستههای یکپارچه به اندازه میکروکرنل به کد منبع نیاز ندارند، به این معنی که کمتر در معرض خطر هستند و به مراقبت کمتری نیاز دارند. هسته لینوکس دائما در حال رشد است. این هسته در سال 2018 دارای 20 میلیون خط کد بود. این گروههای اصلی شامل رابط تماس سیستمی، مدیریت فرآیند، پشته شبکه Network stack، مدیریت حافظه، سیستم فایل مجازی و درایورهای دستگاه میباشند.
هستههای ترکیبی
اپل در سال 1996 هسته سیستم عامل XNU را به عنوان ترکیبی از هستههای توزیع نرم افزار Mach و Berkeley (BSD) توسعه داد و آن را با یک رابط برنامه نویسی برنامه Objective-C یا API پیوند داد. از آنجا که این سیستم عامل ترکیبی از هسته یکپارچه و میکرو هسته میباشد، ماژولار بودن آن افزایش یافته است و بخشهایی از سیستم عامل از حافظه محافظت میکنند.
وظایف کرنل لینوکس به صورت کلی
هسته منابع سیستم از جمله فایلهای سیستم، فرآیندها و دستگاههای فیزیکی را مدیریت میکند. همچنین، برنامهها را با سیستم خدمات مانند: مدیریت ورودی/خروجی، حافظه مجازی و زمان بندی ارائه کرده و تعاملات تمامی فرآیندهای کاربر و منابع سیستم را هماهنگ میکند. هسته الویتها، درخواست منابع سرویسها و استثنائات سخت افزاری را ارائه میدهد. علاوه بر این، زمان بندی و سوئیچ صفحات توسط هسته انجام میشود.
نتیجه گیری
لینوکس به دلیل طراحی ماژولار، تنوع زیادی دارد. یک هسته در پایه یا هسته سیستم لینوکس قرار دارد. برنامهها یا فرآیندها را برنامهریزی مینماید، مدیریت دستگاههای جانبی اولیه و دسترسی به شبکه را برعهده دارد و بر خدمات سیستم فایل نظارت میکند. لینوکس مزایای زیادی نسبت به سایر سیستم عاملها دارد و به همین دلیل است که امروزه تقریبا در همه زمینهها از تلفنهای هوشمند گرفته تا ابر رایانهها، اتومبیلها تا لوازم خانگی و بسیاری موارد دیگر از آن استفاده میشود.
هسته لینوکس مانند: پلی است که ارتباط محاسباتی بین برنامهها و سخت افزار را امکان پذیر و منابع سیستم را مدیریت میکند. لینوس توروالدز هسته لینوکس را با C و اسمبلی توسعه داد و موفق شد یک هسته سبک وزن ایجاد کند.