تصور کنید کامپیوترتان مانند شهری پیشرفته است و برنامهها، شهروندانی هستند که هرکدام وظایف مشخصی دارند: یکی فیلم پخش میکند، یکی آهنگ مینوازد، یکی در حال دانلود است و دیگری در حال ذخیرهسازی داده.
اما چه کسی این شهر را اداره میکند؟ چه نهادی مسئول برقراری نظم است، منابع را تخصیص میدهد و حواسش جمع است که هیچ شهروندی از حد خود فراتر نرود یا کار دیگری را مختل نکند؟ پاسخ این پرسش در قلب تپندهی سیستم نهفته است: هستهی سیستمعامل یا کرنل.
در این مقاله، سفری خواهیم داشت به درون این ساختار کلیدی تا ببینیم هسته دقیقاً چیست، چگونه کار میکند و چرا درک آن برای هر علاقهمند به دنیای فناوری حیاتی است.
- هسته (Kernel) چیست؟
- نقش اصلی هسته چیست؟
- فضای حفاظت شده هسته کجاست؟
- درایور سختافزار چیست؟
- حالت هسته و حالت کاربری چیست؟
- هستهها به چند دسته تقسیم میشوند؟
- تاریخچه توسعه هسته
- آینده هسته سیستمعامل
هسته (Kernel) چیست؟
هسته یا کرنل، قلب تپندهی سیستمعامل است؛ یا بهطور دقیقتر، مغز متفکر پشت پردهای است که بدون آن هیچ برنامهای اجرا نمیشود و هیچ ارتباطی بین سختافزار و نرمافزار برقرار نمیگردد. اگر سیستمعامل را یک ارکستر تصور کنیم، هسته، رهبر ارکستر است که وظیفهی هماهنگسازی تمام اجزا را برعهده دارد.
هسته مسئول فراهمسازی خدمات پایهای و حیاتی برای سایر اجزای سیستمعامل است؛ خدماتی که اجرای برنامهها، دسترسی به حافظه، ارتباط بین فرایندها و مدیریت منابع سختافزاری را ممکن میسازند.
یکی از مهمترین ویژگیهای هسته این است که در حالت خاصی از پردازنده اجرا میشود که به آن «حالت هسته» (Kernel Mode) میگویند. این حالت امکان دسترسی کامل به تمام منابع سیستم را فراهم میکند؛ چیزی که در حالت عادی برای برنامههای کاربر مجاز نیست.
البته حواستان باشد که هسته را با بایوس (BIOS) اشتباه نگیرید. بایوس یک برنامهی مستقل است که روی یک تراشه در برد مدار کامپیوتر ذخیره شده و قبل از بارگذاری سیستمعامل، سختافزار را راهاندازی و مدیریت میکند. بهعبارت دیگر، بایوس پیش از بارگذاری سیستمعامل و اجرای هسته وارد عمل میشود؛ درحالیکه هسته پس از بوت شدن، کنترل کامل سیستم را در دست میگیرد.
نقش اصلی هسته چیست؟
بهطور کلی، هستهی سیستمعامل سه وظیفهی کلیدی برعهده دارد. اولین وظیفه، فراهم کردن رابطهای لازم برای برقراری ارتباط میان کاربران و نرمافزارها با سختافزار کامپیوتر است. وظیفهی دوم، راهاندازی و مدیریت اجرای نرمافزارهاست. سومین مسئولیت اصلی هسته، شامل مدیریت سختافزار سیستم و منابع آن میشود.
برای انجام وظایف یاد شده، هسته باید مجموعهای از توابع سیستمی را مدیریت کند. این مدیریت، از بخشهای کماهمیت مانند درایورهای سختافزار شروع میشود و تا بخشهایی با اولویت زیاد مانند رابط کاربری ادامه دارد.
در کنار مدیریت اولویتدار بخشهای مختلف، هسته همچنین فرایندهای ایجادشده توسط نرمافزارها را سازماندهی میکند. سختافزار کامپیوتر تنها میتواند یک کار را در لحظه انجام دهد، اما سیستمعامل و نرمافزارهای اجرا شده ممکن است دهها و حتی صدها پردازش ایجاد کنند که نیاز به منابع سختافزاری دارند. بنابراین، هسته زمانبندی اجرای برنامهها را تعیین میکند و نظارت دارد که هر نرمافزار فقط در زمان اختصاصیافته از منابعی که در اختیار دارد، به درستی استفاده کند.
یکی از دیگر وظایف مهم هسته، تخصیص فضای حافظه به فرایندهای مختلف است. علاوهبر تخصیص، هسته باید از بروز تداخلها یا خطاهای در حافظهی مربوط به هر فرایند جلوگیری کند. همچنین، هسته مدیریت منابع سختافزاری مانند پردازندهی مرکزی (CPU)، حافظهی کش، فایلسیستم و مکانیزمهای ارتباطی شبکه را نیز زیر نظر میگیرد.
سیستمعامل هم حافظه را به هر برنامه اختصاص میدهد و هم امنیت حافظهی اختصاص داده شده را تامین میکند
سیستمعاملهای مدرن (مانند ویندوز یا مکاواس) از حافظه مجازی پشتیبانی میکنند. به این منظور، فضایی وسیع را در اختیار برنامه قرار میدهند. از دید هر برنامه، فضایی بسیار زیادی از رم برای استفاده وجود دارد، اما از دید سیستمعامل (و هسته)، فضای محدود رم باید بین برنامهها طوری تقسیم شود که هر کدام از فضای دیگری مطلع نباشند. این ترفند، علاوه بر ایجاد امنیت برای دادههای هر برنامه، توسعهی نرمافزار را آسانتر میکند، زیرا برنامهنویس نگرانی اختصاص و مدیریت حافظه را ندارد.
در کنار وظایف یاد شده، هسته مسئول کنترل و مدیریت ورودی و خروجی (I/O) از دستگاههایی مانند صفحهی کلید، ماوس، درایوهای ذخیرهسازی، درگاههای USB، کارتهای شبکه، چاپگر و نمایشگر است. پردازش درخواستهای سختافزاری و نرمافزاری نیز از طریق هسته انجام میشود که برای این کار از مکانیزمهایی مانند وقفههای سختافزاری (Interrupts) و درایورهای مخصوص استفاده میکند.
هسته تمامی تعاملات میان نرمافزارها و سختافزار را مدیریت میکند
بهدلیل محدودیت منابع، امکان اجرای همزمان تمامی این فرایندها وجود ندارد. در اینجا هسته، نقش اصلی را ایفا و مشخص میکند که کدام فرایند و در چه زمانی به منابعی مانند پردازنده یا حافظه دسترسی داشته باشد.
فضای حفاظت شده هسته کجاست؟
هسته نقش حیاتی در عملکرد یک کامپیوتر دارد و به همین دلیل، فضای حافظهای که هسته در آن بارگذاری میشود، بهصورت محافظتشده طراحی شده است تا از دسترسی یا تغییرات ناخواسته توسط سایر نرمافزارها جلوگیری شود. این حفاظت از طریق جداسازی فضاهای آدرسدهی توابع سیستمعامل پیادهسازی میشود که به آن فضای هسته گفته میشود.
اگر هسته به درستی بارگذاری نشود، کامپیوتر قادر به راهاندازی کامل نخواهد بود
فضاهای جدای آدرس، مانع از آن میشود که برنامههای دیگر، بهطور تصادفی یا عمدی، توابع هسته را بازنویسی کرده و باعث بروز مشکلات عملکردی، بیثباتی یا سایر پیامدهای نامطلوب شوند. در مقابل، سایر نرمافزارها و برنامههای اجرایی، در فضای عمومی از حافظه، موسوم به فضای کاربری، بارگذاری و اجرا میشوند.
هسته معمولاً در برابر پوسته (Shell) قرار میگیرد، که بهعنوان بخش بیرونی سیستمعامل شناخته میشود و امکان تعامل کاربران با سیستم را از طریق دستورات فراهم میکند. به بیانی تخصصیتر، پوسته همان رابط کاربری گرافیکی (GUI) است. اصطلاحات هسته و پوسته بیشتر در سیستمعاملهای مبتنی بر یونیکس (مانند لینوکس) به کار میروند و در سیستمهای مبتنی بر ویندوز و سرورهای آیبیام کمتر رایج هستند.