هسته (سیستمعامل)
From Wikipedia, the free encyclopedia
در علوم رایانه، هسته[1] (که کِرنِل نیز خوانده میشود) یک برنامه رایانه است که هسته مرکزی یک سیستم عامل رایانه را تشکیل میدهد و کنترل تمام چیزهایی را که در سیستم اتفاق میافتد را در دست دارد؛[2] این یک بخش جدایی ناپذیر از هر سیستم عامل است. این «بخشی از کد سیستم عامل است که همیشه در حافظه ساکن است» در اکثر سیستمها، این اولین برنامه بارگیری شده در هنگام راه اندازی است (بعد از بوت لودر)، همچنین کنترل درخواستهای ورودی و خروجی توسط نرمافزارها و ترجمه آنها به ساختارهای قابل پردازش برای واحد پردازش مرکزی را به عهده دارد. علاوه بر آن مدیریت حافظه و ارتباط با دستگاههای جانبی مثل صفحه کلید، مانیتور، چاپگر و بلندگو هم بر عهده این برنامه است. هسته قسمت اساسی سیستم عاملهای مدرن امروزی است.[3]
کد بحرانی هسته معمولاً در یک قسمت جداگانه از حافظه بارگذاری میشود، که از دسترسی برنامههای کاربردی یا سایر قسمتهای کماهمیت سیستم عامل محافظت میشود. هسته در این فضای محافظت شده وظایف خود مانند اجرای فرایندها، مدیریت دستگاههای سختافزاری مانند دیسک سخت و کار با وقفه را انجام میدهد. در مقابل، برنامههای کاربردی مانند مرورگرها، واژه پردازها یا پخش کنندههای صوتی یا تصویری از یک فضای مجزا از حافظه، فضای کاربر استفاده میکنند. این جداسازی از دخالت دادههای کاربر و هسته با یکدیگر و ایجاد بیثباتی و کندی و همچنین از خرابی برنامههای کاربردی در کل سیستم عامل جلوگیری میکند.
رابط هسته یک لایه انتزاعی سطح پایین است. هنگامی که یک فرایند درخواست خدمات از هسته میکند، باید یک فراخوانی سیستمی انجام دهد. این فراخوانی سیستمی معمولاً از طریق یک تابع بستهبندی کننده(wrapper function) که در معرض برنامههای فضای کاربر توسط کتابخانههای سیستمی است که زبان اسمبلی را جاسازی میکند برای ورود به هسته پس از بارگیری ثباتهای پردازندههای CPU با شماره syscall و پارامترهای آن (به عنوان مثال، سیستم عاملهای مشابه UNIX با استفاده از کتابخانه استاندارد C این کار را انجام میدهند).
طرحهای مختلفی برای معماری هسته وجود دارد. هستههای یکپارچه (مونولیتیک) کاملاً در یک فضای آدرس واحد اجرا میشوند که در آن، CPU در حالت ناظر اجرا میشود، عمدتاً برای سرعت. میکروکرنلها بیشتر و نه همه خدمات خود را در فضای کاربر اجرا میکنند،[4] همانند فرآیندهای کاربر، و عمدتاً با هدف انعطافپذیری و مدولار بودن.[5] MINIX 3 نمونه قابل توجهی از طراحی میکروکرنل است. در عوض، هسته لینوکس یکپارچه است، اگرچه ماژولار نیز هست، زیرا میتواند ماژولهای هسته قابل بارگذاری را در زمان اجرا وارد و حذف کند.
هسته که در واقع مؤلفه اصلی یک سیستم رایانهای است وظیفه اجرای برنامهها را بر عهده دارد. هسته این مسئولیت را بر عهده دارد تا در هر زمان تصمیم بگیرد تا از میان بسیاری از برنامههای در حال اجرا، کدام یک پردازنده یا پردازندهها را در اختیار بگیرد.