Kernel چیست؟
kernel بخشی از سیستم عامل (OS) است و اولین برنامهای است که بعد از bootloader بارگذاری میشود. از آنجا که در حافظه اصلی باقی میماند، این مسأله اهمیت دارد که Kernel تا حد ممکن کوچک باشد و در عین حال تمام خدمات ضروری مورد نیاز سایر قسمتهای سیستم عامل و برنامهها را ارائه دهد. معمولا برنامه Kernel در یک ناحیه محافظت شده از حافظه بارگیری میشود تا از نگارش مجدد آن توسط برنامهها یا سایر قسمتهای سیستم عامل جلوگیری شود.
به طور معمول Kernel، مسئولیت مدیریت حافظه، پردازش و مدیریت وظیفه و همچنین مدیریت دیسک را برعهده دارد. Kernel سختافزار سیستم را به نرمافزار برنامه وصل میکند. هر سیستم عامل دارای Kernel است. به عنوان مثال از Linux kernel سیستم عاملهای بیشماری از جمله Linux وFreeBSD و Android , سایر موارد استفاده میشود.
میتوان Kernel را به عنوان یک مترجم تصور کرد. درخواستهای ورودی-خروجی نرمافزار را به یک مجموعه دستورالعمل برای CPU و GPU تبدیل میکند. به بیان سادهتر لایهای بین نرمافزار و سختافزار است که هر چیزی را ممکن میسازد. Kernel موارد زیر را مدیریت میکند:
میتوان Kernel را به عنوان یک مترجم تصور کرد. درخواستهای ورودی-خروجی نرمافزار را به یک مجموعه دستورالعمل برای CPU و GPU تبدیل میکند. به بیان سادهتر لایهای بین نرمافزار و سختافزار است که هر چیزی را ممکن میسازد. Kernel موارد زیر را مدیریت میکند:
1- CPU/GPU
2- حافظه
3- دستگاههای ورودی-خروجی (IO)
4- مدیریت منابع
5- مدیریت حافظه
6- مدیریت دستگاه
7- تماسهای سیستم
فرایندهای کاربر فقط با استفاده از تماسهای سیستمی میتوانند به kernel-space دسترسی داشته باشند. اگر یک برنامه سعی دارد به طور مستقیم به آن دسترسی داشته باشد، منجر به خطا خواهد شد.
امنیت kernel
kernel همچنین از سختافزار محافظت میکند. عدم محافظت و امنیت منجر به ایجاد خرابی و اختلال سیستم و دادهها میشود. در رایانههای مدرن، امنیت در سطح سختافزار پیادهسازی میشود. به عنوان مثال، ویندوز درایورهایی را که از یک منبع قابل اعتماد نیستند و تأیید نمیشوند بارگیری نمیکند. Secure Boot و Trusted Boot نمونههای کلاسیک هستند.
Secure Boot: این یک استاندارد امنیتی است که توسط هیأت صنعت PC توسعه داده شده است. این امر به کاربر امکان میدهد سیستم خود را از برنامههای مخرب محافظت کند و اجازه ندهد در طی فرایند راهاندازی سیستم هیچ برنامه غیرمجاز اجرا شود. این ویژگی اطمینان میدهد که PC شخص تنها با استفاده از نرمافزاری قابل اعتماد است که توسط سازنده PC قابل اعتماد باشد. بنابراین، هر زمان که رایانه PC شروع به کار کرد، سیستمعامل، امضای هر قطعه از نرم افزار boot، از جمله درایورهای سیستمعامل (Option ROM) و سیستمعامل را بررسی میکند. در صورت تأیید امضاها، کامپیوتر بوت می شود و firmware به operating system کنترل میدهد.
Trusted Boot: از (Virtual Trusted Platform Module (VTPM جهت تأیید امضای دیجیتال kernel ویندوز 10 قبل از بارگیری استفاده میکند. به نوبه خود، این مؤلفه دیگر فرایند راهاندازی ویندوز، از جمله درایورهای بوت، فایلهای راهاندازی و ELAM را تأیید میکند. اگر یک فایل به هر میزان تغییر کرده باشد، bootloader آن را تشخیص داده و با شناسایی آن به عنوان جزء خراب، از بارگیری آن امتناع میورزد. به طور خلاصه، زنجیره ای از اعتماد به تمام عناصر را در هنگام بوت فراهم میکند.
انواع kernel
Monolithic Kernel: در کرنل یکپارچه در، OS و Kernel هر دو در همان فضای حافظه اجرا میشوند. نتیجه آن دسترسی سریعتر است اما اگر در درایور دستگاه اشکالی رخ دهد، کل سیستم خراب میشود.
Microkernel: میکرو کرنل با هدف بهبود سازماندهی در کرنلهای یکپارچه توسعه یافت. که در آن خود کرنل میتواند بیشتر کارهای انجامشده را انجام دهد و نیازی به یک رابط کاربری گرافیکی اضافی (GUI) نیست. این امر منجر به قابلیت اطمینان بیشتر و نگهداری سادهتر میشود.
Hybrid Kernel: در واقع ترکیبی از Monolithic Kernel و Microkernel است. این کرنل همان چیزی است که بیشتر دیده میشود؛ Windows و Apple’s macOS. درایورها را به بیرون منتقل میکند اما سرویسهای سیستم را داخل Kernel نگه میدارد؛ مشابه نحوه بارگیری درایورها هنگامی که ویندوز فرآیند bootup را شروع میکند.
Nano Kernel: اگر به داشتن Kernel نیاز باشد، اما بیشتر عملکرد آن در خارج تنظیم شده باشد، این مورد به تصویر کشیده میشود.
Exo Kernel: این Kernel حفاظت از فرایند و مدیریت منابع را ارائه میدهد. اما بیشتر در هنگام آزمایش یک پروژه داخلی استفاده میشود.
مرجع: https://www.thewindowsclub.com