در علم کامپیوتر، هسته (kernel) اساسیترین بخش یک سیستم عامل است. هسته سیستم عامل برنامهای است که دسترسی ایمن به سختافزار را برای برنامههای گوناگون فراهم میکند. به علت تعدد برنامههای کامپیوتری، همچنین از آنجایی که دسترسی به سختافزار محدود است، هسته از طریق تکنیکی که Multiplexing نامیده میشود، تصمیم میگیرد که یک برنامه چه وقت و به چه مدت میتواند بخشی از سختافزار را در اختیار بگیرد. از آنجایی که دسترسی مستقیم به سختافزار میتواند بسیار پیچیده باشد، معمولا هسته سیستمهای عامل مجموعهای از سختافزارهای مجرد را پیادهسازی میکنند. این مجردسازی پیچیدگیهای سختافزاری را پنهان میکند و رابطی (Interface) ساده و یکنواخت برای سختافزار فراهم میکند که استفاده از آن را برای برنامهنویسان آسانتر میکند.
برای اجرای یک برنامه بر روی کامپیوتر وجود هسته در سیستم عامل ضروری نیست. برنامهها میتوانند مستقیما بر روی کامپیوتر بارگذاری و اجرا شوند، به شرط آنکه نویسنده برنامه توانایی نوشتن چنین برنامههایی را، بدون پشتیبانی سیستم عامل و انتزاع سختافزاری داشته باشد. اجرای برنامهها بدون استفاده از سیستم عامل، در بسیاری از کامپیوترهای اولیه روش معمولی بوده است. البته، در این روش برای اجرای برنامههای مختلف لازم بود که مجددا کامپیوتر راهاندازی (Reset) و برنامه بارگذاری شود. سرانجام برای رفع این مشکل برنامههای کمکی کوچکی مثل loaderها و debuggerها ایجاد شدند، که حین اجرای برنامههای مختلف در حافظه باقیمیماندند یا از حافظه ROM بارگذاری میشدند. با تولید این برنامههای کمکی پایه و اساس چیزی که ما آن را هسته سیستم عامل میخوانیم شکل گرفت.
چهار نوع دسته بندی کلی برای هسته سیستمهای عامل وجود دارد:
1. هسته یکپارچه (Monolithic)، که انتزاع (abstraction) سختافزاری نیرومندی را فراهم میآورد.
2. ریزهسته (Microkernel)، که مجموعهای کوچک از انتزاع ساده سختافزاری را به وجود میآورد و از نرمافزارهایی با نام سرویسدهنده (Server) استفاده میکنند تا قابلیت بیشتری را ارایه دهند.
3. هسته دورگه (Hybrid) یا "ریزهسته اصلاح شده"، که شباهت زیادی به ریزهسته دارد، با این تفاوت که به منظور اجرای سریعتر، شامل کدهایی اضافی در فضای هسته میباشد.
4. برونهسته (Exokernel)، که هیچ گونه انتزاعی را فراهم نمیکنند، ولی با استفاده از کتابخانهای از توابع (libraries) برای افزایش کارایی، دسترسی مستقیم یا نیمهمستقیم به سختافزار را فراهم میکنند.
هسته یکپارچه (Monolithic)
هسته یکپارچه (Monolithic)، یک رابط مجازی سطح بالا بر روی سختافزار تعریف میکند. همچنین مجموعهای از توابع برای پیادهسازی سرویسدهندههای سیستم عامل، مانند مدیریت پردازشها (Process Management)، همزمانی (Concurrency) و مدیریت حافظه را فراهم میآورد.
حتی اگر تمام اجزایی که به این عملیات سرویس میدهند از کل مجموعه هسته جدا باشند، از لحاظ همبستگی کد در تنگنا سختی خواهیم بود و با توجه به اینکه تمام اجزا در یک فضا اجرا میشوند، بروز خطایی در یکی از آنها میتواند کل سیستم را مختل کند. از طرفی دیگر، وقتی که پیادهسازی تکمیل و قابل اطمینان شد، شرایط همبستگی تنگاتنگ بین اجزای داخلی باعث میشود که امکانات سطح پایین سیستم به طور موثری در دسترس قرار گیرد و منجر به یک هسته یکپارچه، با کارآیی بسیار بالا شود.
طرفداران هستههای یکپارچه عقیده دارند که اگر کدی خطا دارد نبایستی در هسته قرار داشته باشد (متعلق به هسته باشد). چرا که در غیر این صورت، برتری اندکی نسب به ریزهستهها خواهند داشت. سیستمهای عامل Linux و Unix را میتوان جزو پیشرفتهترین هستههای یکپارچه دانست.