Kernel یک برنامه کامپیوتری است که قلب و هسته اصلی یک سیستم عامل است. از آنجا که سیستم عامل بر سیستم کنترل دارد، کرنل نیز بر همه چیز در سیستم کنترل دارد. کرنل در حقیقت مهمترین بخش یک سیستم عامل است. هر بار که سیستمی شروع به کار می کند یا به اصطلاح روشن می شود، Kernel اولین برنامه ای است که پس از بوت لودر، Load می شود. زیرا کرنل باید بقیه موارد سیستم را برای سیستم عامل مدیریت کند.
Kernel وظایف سطح پایین یا low-level مانند مدیریت دیسک، مدیریت حافظه، مدیریت task ها، و غیره را بر عهده دارد و رابط بین کاربر و اجزای سخت افزاری سیستم را فراهم می کند. وقتی یک پردازش درخواستی را از کرنل می کند، این درخواست System Call است
کرنل دارای یک فضای و منطقه خاص و محافظت شده مخصوص به خود در حافظه سیستم است که این منطقه توسط سایر اپلیکیشن ها قابل دسترسی نمی باشد. نابراین، کد هسته در این فضای محافظت شده کرنل Load می شود. جدای از این، حافظه مورد استفاده سایر برنامه ها را فضای کاربر یا User Space می نامند. از آنجا که این دو فضای مختلف در حافظه هستند، بنابراین ارتباط بین آنها کمی کند است.
:کارهایی که توسط کرنل سیستم عامل انجام می شود
Access Computer resource: هسته سیستم عامل می تواند به منابع سخت افزاری مختلفی از جمله مانند CPU، سخت افزارهای I/O، و سایر منابع دسترسی داشته باشد. در واقع پل ارتباطی بین کاربر و منابع سیستم است(همانطور که در تصویر فوق نشان داده شده است).
Resource Management: وظیفه کرنل است که منابع را بین فرایندها و پردازش های مختلف به گونه ای تقسیم کند که در هر یک دسترسی متناسبی به منابع موجود داشته باشند.
Memory Management: هر فرآیند به مقداری فضای حافظه نیاز دارد. بنابراین، حافظه باید برای اجرای آن اختصاص شود. پس مدیریت حافظه هم توسط کرنل سیستم عامل صورت می گیرد.
Device Management: دستگاههای جانبی متصل به سیستم توسط پردازش ها مورد استفاده قرار می گیرند. بنابراین ، تخصیص این دستگاه ها توسط Kernel سیستم عامل مدیریت می شود.
Kernel Mode و User Mode
دستورالعمل های خاصی وجود دارد که فقط باید توسط Kernel اجرا شوند. بنابراین، CPU این دستورالعمل ها را فقط در حالت کرنل اجرا می کند. به عنوان مثال، مدیریت حافظه باید فقط در حالت کرنل انجام شود. در حالتUser Mode ، CPU فرآیندهایی را که توسط کاربر در User Space قرار گرفته را اجرا می کند.