هسته یا کرنل (Kernel) در سیستم عامل چیست؟ مفهوم کرنل در سیستم عامل و وظیفه آن

0 318
۵/۵ - (۲ امتیاز)

فهرست

هسته یا کرنل (Kernel) در سیستم عامل چیست؟

در یک تعریف کلی و ساده می‌توان گفت که هسته یا کرنل (Kernel) مغز یک سیستم عامل می‌باشد. این مغز با سخت افزارهای موجود برروی سیستم در ارتباط بوده و امکان استفاده از این سخت افزارها را برآورده می‌کند. در یک نگاه بسیار کلی جایگاه کرنل در یک سیستم عامل را به صورت زیر می‌توان در نظر گرفت:

کرنل
کرنل در سیستم عامل

مطابق شکل، کرنل یک راه ارتباطی میان برنامه‌هایی که شما در اختیار دارید (مثل Chrome، Excel، Photoshop و… ) و سخت‌افزار شما است.

به بیان دیگر، هسته یا کرنل (Kernel) یک برنامه کامپیوتری است که قلب و هسته یک سیستم عامل است. از آنجایی که سیستم عامل بر روی سیستم کنترل دارد، هسته نیز بر همه چیز در سیستم کنترل دارد. کرنل مهمترین بخش یک سیستم عامل است. هر زمان که یک سیستم راه اندازی می شود، هسته اولین برنامه ای است که پس از بوت لودر بارگذاری می شود زیرا هسته باید بقیه چیزهای سیستم را برای سیستم عامل کنترل کند. هسته تا زمانی که سیستم عامل خاموش نشود در حافظه باقی می ماند.

ارتباط با سخت افزار به چه صورت است؟

فرض کنید به بازار کامپیوتر می‌روید و یک کامپیوتر می‌خرید. درون آن یک سری سخت افزار همانند پردازنده، کارت گرافیک، کارت حافظه و… وجود دارد. طبیعتا شما نمی‌توانید مستقیما از آن‌ها استفاده کنید. یعنی شما نمی‌توانید به پردازنده خود بگویید که برای من یک عمل ضرب انجام بده! مگر اینکه یک سیستم عامل مثل ویندوز برروی کامپیوتر خود نصب کنید و سپس به ویندوز بگویید که عملیات ضرب را برای شما انجام دهد. در این صورت ویندوز درخواست شما را به دست پردازنده می‌رساند و نتیجه را برای شما برمی‌گرداند.

پس:

کرنل را می‌توان به عنوان عنصری در نظر گرفت که ارتباط مستقیم با سخت افزار شما دارد و می‌تواند با آن‌ها حرف بزند.

کرنل درخواست‌های کاربر را به اطلاع سخت افزارهای مختلف می‌رساند و نتیجه عملیات را به کاربر برمی‌گرداند.

وظایف هسته یا Kernel در سیستم عامل

کرنل وظایف سطح پایینی مانند مدیریت دیسک (Disk Management)، مدیریت حافظه (Memory Management)، مدیریت وظایف (Task Management) و غیره را بر عهده دارد و یک رابط بین کاربر و اجزای سخت افزاری سیستم فراهم می کند. به درخواستی که یک پراسس به هسته ارسال می کند، System Call می گویند.

هسته سیستم عامل (Kernel) با فضای کرنل (Kernel Space) محافظت شده ارائه می شود که یک ناحیه جداگانه از حافظه است و برنامه های کاربردی دیگر به این منطقه دسترسی ندارند. یعنی فضای حافظه سیستم به دو بخش تقسیم می شود، فضای هسته (Kernel Space) و فضای کاربر (User Space). بنابراین، کد هسته در این فضای کرنل محافظت شده بارگذاری می شود. فضای کاربری یا User Space نیز، حافظه مورد استفاده سایر برنامه ها می باشد. از آنجایی که این دو فضای متفاوت در حافظه هستند، بنابراین ارتباط بین آنها کمی کندتر است.

عملیات هسته سیستم عامل

عملیات مختلفی توسط هسته سیستم عامل دائما در حال انجام است. به هر حال هسته، عنصر حیاتی و مهم سیستم عامل بشمار می آید. از این رو، وظایف مختلف و مهمی برعهده آن است. لیستی از عملیاتی که کرنل انجام می دهد بصورت زیر است:

  • دسترسی به منابع کامپیوتر: یک هسته می تواند به منابع مختلف کامپیوتر مانند CPU، دستگاه های ورودی/خروجی (I/O) و سایر منابع دسترسی داشته باشد. کرنل به عنوان پلی بین کاربر و منابع سیستم عمل می کند.
  • مدیریت منابع: وظیفه یک هسته است که منابع را بین پراسس های مختلف به اشتراک بگذارد به گونه ای که دسترسی یکسانی به منابع توسط هر پراسس وجود داشته باشد.
  • مدیریت حافظه: هر پراسس به مقداری فضای حافظه نیاز دارد. پس باید حافظه را برای اجرای آن تخصیص داد و مدیریت کرد. تمام این مدیریت حافظه توسط هسته سیستم عامل انجام می شود.
  • مدیریت دستگاه: دستگاه های جانبی متصل به سیستم توسط پراسس ها استفاده می شوند. بنابراین، تخصیص این دستگاه ها توسط کرنل مدیریت می شود.

انواع کرنل سیستم عامل

بر اساس کارکرد و ساختار، هسته انواع مختلفی دارد. هر یک از این موارد می تواند در زمینه مجزایی مورد استفاده قرار گیرد. در ادامه به بررسی ۵ نوع از کرنل های موجود می پردازیم.

۱. هسته یکپارچه – Monolithic Kernel

هسته‌های یکپارچه (Monolithic Kernel) هسته‌هایی هستند که سرویس‌های کاربر و سرویس‌های کرنل در فضای حافظه یکسانی پیاده‌سازی می‌شوند، یعنی حافظه‌های متفاوتی برای سرویس‌های کاربر و سرویس‌های هسته در این مورد استفاده نمی‌شوند. با انجام این کار، اندازه هسته افزایش می یابد و این به نوبه خود، اندازه سیستم عامل را افزایش می دهد. از آنجایی که هیچ فضای کاربری و فضای کرنل جداگانه ای وجود ندارد، بنابراین اجرای فرآیند در هسته های Monolithic سریعتر خواهد بود.

مزایا:

  • این برنامه زمان‌بندی CPU، زمان‌بندی حافظه، مدیریت فایل را فقط از طریق تماس‌های سیستمی فراهم می‌کند.
  • اجرای فرآیند سریع است زیرا فضای حافظه جداگانه ای برای کاربر و هسته وجود ندارد.

معایب:

  • اگر هر سرویسی از کار بیفتد، منجر به خرابی سیستم می شود.
  • اگر قرار است خدمات جدیدی اضافه شود، کل سیستم عامل باید اصلاح شود.

۲. میکروکرنل – Microkernel

یک Microkernel با یک هسته Monolithic متفاوت است زیرا در یک Microkernel، خدمات کاربر و خدمات کرنل در فضاهای مختلف پیاده سازی می شوند، یعنی در مورد Microkernel ها از فضای کاربر و فضای هسته استفاده می کنیم. همانطور که ما از فضای کاربر و فضای کرنل به طور جداگانه استفاده می کنیم، بنابراین اندازه هسته را کاهش می دهد و این به نوبه خود، اندازه سیستم عامل را کاهش می دهد.

میکروکرنل – Microkernel

از آنجایی که ما از فضاهای مختلفی برای سرویس های کاربر و سرویس هسته استفاده می کنیم، بنابراین ارتباط بین برنامه و سرویس ها با کمک تجزیه پیام انجام می شود و این به نوبه خود باعث کاهش سرعت اجرا می شود.

مزایا:

  • اگر قرار است خدمات جدیدی اضافه شود، می توان آن را به راحتی اضافه کرد.

معایب:

  • از آنجایی که ما از فضای کاربر و فضای هسته به طور جداگانه استفاده می کنیم، بنابراین ارتباط بین این دو می تواند زمان اجرای کلی را کاهش دهد.

۳. کرنل ترکیبی – Hybrid Kernel

هسته ترکیبی ترکیبی از هسته یکپارچه و میکروکرنل است. از سرعت هسته یکپارچه و مدولار بودن میکروکرنل استفاده می کند.

هسته‌های ترکیبی، هسته‌های میکرو هستند که دارای کدهای «غیر ضروری» در فضای هسته هستند تا کد سریع‌تر از فضای کاربر اجرا شود. بنابراین، برخی از سرویس‌ها مانند پشته شبکه یا فایل سیستم در فضای هسته اجرا می‌شوند تا سربار عملکرد را کاهش دهند، اما همچنان، کد هسته را به عنوان سرور در فضای کاربر اجرا می‌کند.

۴. نانوکرنل – Nanokernel

در نانوکرنل، همانطور که از نام آن پیداست، کل کد هسته بسیار کوچک است، یعنی کدی که در حالت ممتاز سخت افزار اجرا می شود بسیار کوچک است. واژه نانو هسته برای توصیف هسته ای استفاده می شود که از وضوح ساعت نانوثانیه پشتیبانی می کند.

۵. اگزوکرنل – Exokernel

Exokernel یک هسته سیستم عامل است که توسط MIT موازی و گروه سیستم های عامل توزیع شده توسعه یافته است. در اینجا در این نوع هسته، حفاظت از منابع از مدیریت جدا می شود و این به نوبه خود، به ما اجازه می دهد تا سفارشی سازی ویژه برنامه را انجام دهیم.

در Exokernel، ایده اجرای همه انتزاعات نیست. اما ایده این است که تا حد امکان انتزاعات کمتری را تحمیل کنیم و با انجام این کار، انتزاع فقط در صورت نیاز باید مورد استفاده قرار گیرد. بنابراین، هیچ نیروی انتزاعی در Exokernel وجود نخواهد داشت و این ویژگی است که آن را از یک هسته و میکرو کرنل یکپارچه متفاوت می کند. اما نقطه ضعف این طراحی پیچیده است. طراحی Exokernel بسیار پیچیده است.

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

ارسال یک پاسخ