رویکرد گسترده معماری هسته

هسته‌های یکپارچه

در هستهٔ یکپارچه تمامی سرویس‌های سیستم عامل در رشتهٔ اصلی هسته اجرا می‌شوند بنابراین در قسمت مشترکی از حافظه قرار دارند. این روش احتیاج به دسترسی قدرتمند و سریعی به حافظه دارد. برخی از توسعه دهندگان یونیکس مانند کن تامسون از هسته‌های یکپارچه نسبت به ریزهسته‌ها به دلیل راحتی پیاده‌سازی حمایت کردند. مشکل اصلی هسته‌های یکپارچه وابستگی قسمت‌های مختلف یک سیستم به یک دیگر است به شکلی که مشکل در قسمت کوچکی از سیستم می‌تواند باعث خرابی در کل سیستم بشود و حفظ هسته‌های بزرگ بسیار سخت است
هسته‌های یکپارچه تمامی تابع‌های هستهٔ سیستم و گرداننده‌های دستگاه را دارا می‌باشد که این یک طراحی سنتی در سیستم‌های یونیکسی است. هستهٔ یکپارچه یک تک برنامه‌ای است که شامل تمامی کدهای لازم جهت اجرا کردن هر دستور درون هسته می‌باشد. هر قسمتی که باید توسط برنامه‌ها مورد دسترسی قرار بگیرد و در کتابخانه نمی‌تواند قرار بگیرد در فضای هستهاست. گرداننده‌های دستگاه، زمانبند، مدیریت حافظه، پرونده‌های سیستم، پشته‌های شبکه. بسیاری از فراخوان‌های سیستمی به نرمافزارها ارائه می‌شوند تا به آن‌ها اجازهٔ دسترسی به دستگاه‌های نام برده شده را بدهد. هنگامی که در ابتدا هستهٔ یکپارچه با ریزسیستم‌هایی که در ابتدا به آن‌ها نیازی نیست بارگذاری می‌شود می‌تواند مانند زمانی عمل کند (یا سریع تر از آن) که به‌طور مشخص برای سخت‌افزار تهیه شده‌است، هسته‌های یکپارچه نوین مانن یونیکس قابلیت اجرای پیمانه‌های در زمان اجرا را دارا می‌باشند ازینرو به راحتی توانایی‌های مورد نیاز هسته را افزایش می‌دهد تا بتوان مقدار کدی که در فضای هسته در حال اجرا است را کمینه کرد و فضای بیشتری خالی شود تا کدهای دیگر هم وارد شوند. برتری‌های این هسته وابسته به نکات زیر می‌باشد
هرچه تعداد کمتری نرمافزار درگیر شوند سریعتر است
اگر قسمتی از یک نرم‌افزار در کد منبع و فرم ترجمه شده باید کوچک‌تر از کل کد نرم‌افزار باشد
کدهای کمتر به معنی اشکالات کمتر است که منجر به مشکلات امنیتی کمتر می‌شود
بیشتر کارها در سیستم‌های یکپارچه توسط فراخوان‌های سیستمی انجام می‌گیرد. این رابط‌ها معمولاً به صورت داده‌های جدولی نگهداری می‌شوندکه به زیر سیستم‌هایی که داخل هسته هستند (مانند عملگرهای دیسک) دسترسی دارند. فراخوان‌های اساسی توسط برنامه‌ها ساخته می‌شوند و یک رونوشت چک شده از درخواست توسط فراخوان سیستمی فرستاده می‌شود. هستهٔ یکپارچهٔ لینوکس می‌تواند بسیار کوچک درست شود نه به دلیل بارگذاری پویای پیمانه‌ها بلکه سهولت در سفارشی سازی. در واقع در برخی از نسخه‌ها به اندازه‌ای کوچک اند که می‌توانند در کنارتعداد زیادی افزونه و نرم‌افزار دیگر بروی فلاپی دیسکی قرار بگیرند و یک سیستم عامل تمام عیار را ارائه دهند. این قابلیت هسته باعث رشد سریع این سیستم عامل در سیستم‌های نهفته شده‌است
این نوع هسته‌ها دارای تابع‌های هستهٔ سیستم عامل و همین‌طور گرداننده‌های دستگاه (که باعث بارگذاری پیمانه‌ها در اجراست) می‌باشند. آن‌ها یک چکیدهٔ قدرتمند از سخت‌افزارهای حیاتی را تهیه می‌کنند. آنان یک دسته از چکیدهٔ سادهٔ سخت افزارتهیه می‌کنند و با استفاده از نرم‌افزارهایی به نام سرور عملکردهای بیشتری را تأمین می‌کنند. این روش خاص یک رابط مجازی سطح بالا برای سخت‌افزار با یک دسته از فراخوان‌های سیستمی برای پیاده‌سازی سرویس‌های سیستم عامل مانند مدیریت پردازه ها، مدیریت حافظه و همزمانی را تعریف می‌کند. این طرح نقص‌ها و محدودیت‌هایی دارد
برنامه‌نویسی در هسته می‌تواند چالش‌برانگیز باشد زیرا از هر کتابخانه‌ای نمی‌توان استفاده کرد، به یک دیباگر سطح کنبع نیاز است و به راه اندازی مجدد سیستم به‌طور مکرر نیاز می‌شود. این مشکل برای راحتی توسعه دهنده نمی‌باشد زیرا هرچه توسعه و برنامه‌نویسی سخت‌تر باشد اشکالات برنامه نیز بیشتر می‌شود
°معمولاً هسته‌ها بسیار سخت حفظ می‌شوند
°حتی اگر پیمانه‌هایی که به این عملگرها سرویس می‌دهند از بقیه جدا باشند، اما باز هم یکپارچه کردن خود برنامه سخت می‌باشد
°از آنجایی که پیمانه‌ها در یک فضای آدرس دهی می‌باشند یک اشکال کوچک می‌تواند سبب اختلال یا نابودی کل سیستم شود
°هسته‌های یکپارچه قابل حمل و پرتابل نیستند ازینرو باید برای هر سیستم و معماری که سیستم عامل باید روی آن نصب شود دوباره نوشته شوند.

ریزهسته‌ها

ریزهسته اصطلاحی است که روشی از طراحی سیستم عامل را توصیف می‌کند که آن مهاجرت از هستهٔ سنتی به دسته‌ای از سرورها که توسط یک هستهٔ مینیمال ارتباط برقرار می‌کند و در حد امکان در فضای سیستم کم هستند و در فضای کاربر زیاد. ریز هسته‌ای که برای دستگاه خاصی طراحی شده‌است تنها قابلیت انجام کاری که آن دستگاه نیاز دارد را دارد. روش ریز هسته شامل تعریفی خلاصه شده از سخت‌افزار به همراه دسته‌ای فراخوان سیستمی جهت پیاده‌سازی دستورها مینیمال سیستم عامل (مانند مدیریت حافظه) می‌باشد. سرویس‌های دیگر شامل کارهای معمولی که توسط هسته انجام می‌گیرند (مانند شبکه) هستند که در فضای کاربر پیاده‌سازی می‌شود (به نام سرورها ارجاع داده می‌شوند) ریزهسته‌ها نسبت به هسته‌های یکپارچه راحت‌تر حفظ می‌شوند اما تعداد زیاد فراخوان‌های سیستمی و تعویض زمینه‌ها دلیل کند شدن این سیستم‌ها است زیرا سربار بیشتری نسبت به تابع‌های ساده ایجاد می‌کند.