یونیکرنل
یونیکرنل (به انگلیسی: ) یک تصویر ماشین تک آدرسی تخصصی است که با استفاده از سیستم عاملهای کتابخانه ساخته شده‌است. یک توسعه‌دهنده، یک مجموعه از حداقل تعداد کتابخانه‌هایی را که با ساختارهای سیستم‌عامل مورد نیاز برای اجرای برنامه مطابقت دارد را از یک پشته مدولار انتخاب می‌کند.سپس این کتابخانه‌ها، با برنامه کاربردی و کد پیکربندی برای ساخت تصاویر مهر و موم شده و با هدف ثابت (یونیکرنل ها) که مستقیماً روی یک هایپروایزر یا سخت‌افزار بدون مداخله‌ سیستم‌عامل هایی مانند لینوکس یا ویندوز اجرا می‌شوند، کامپایل می‌شوند.
اولین سیستم‌های این چنینی، Exokernel و Nemesis، در اواخر دهه 1990 بودند.
در یک سیستم عامل کتابخانه، مرزهای حفاظتی به پایین‌ترین لایه‌های سخت‌افزاری کشیده می‌شوند و بر موارد زیر اثر می‌گذارند:معماری سیستم عامل کتابخانه دارای مزایا و معایب متعددی در مقایسه با طرح‌های سیستم عامل‌های معمولی است. یکی از مزیت‌ها این است که از آنجایی که تنها یک فضای آدرس وجود دارد، برای انتقال داده‌ها بین فضای‌کاربر و فضای هسته، نیازی به انتقال پی‌درپی دسترسی نیست. بنابراین، یک سیستم‌عامل کتابخانه‌ای می‌تواند با دسترسی دادن مستقیم به سخت‌افزار، بدون نیاز به انتقال بین حالت کاربر و حالت هسته، عملکرد بهتری را فراهم سازد (در یک هسته مرسوم، این انتقال شامل یک دستورالعمل TRAP است و مانند تغییر زمینه (context switch) نیست). دستاوردهایی که در عملکرد (Performance ) بدست می‌آید، ممکن است با از بین بردن نیاز به کپی داده‌ها بین فضای کاربر و فضای هسته محقق شود، اگرچه این امر با درایورهای دستگاه بدون کپی در سیستم عامل‌های مرسوم نیز امکان پذیر است.
در کنار این‌ها، یکی از معایب این است که چون جدایی وجود ندارد، تلاش برای اجرای چندین برنامه در کنار هم، در یک سیستم عامل کتابخانه، همراه‌با جداسازی منابع قوی، می‌تواند پیچیده شود. علاوه بر این، درایورهای دستگاه برای سخت‌افزار خاصی که سیستم عامل کتابخانه روی آن اجرا می شود مورد نیاز است. از آنجایی که سخت‌افزار به سرعت در حال تغییر است، بار درایورها به طور منظم بازنویسی می‌شوند تا به روز بمانند.
مجازی‌سازی سیستم عامل می تواند بر برخی از این اشکالات بر روی سخت افزار کالا غلبه کند. یک هایپروایزر مدرن، ماشین‌های‌مجازی همراه با زمان CPU و دستگاه های‌مجازی به شدت ایزوله‌شده را فراهم می‌کند. یک سیستم‌عامل کتابخانه‌ای که به‌عنوان یک ماشین مجازی اجرا می‌شود، فقط نیاز به پیاده‌سازی درایورهای این دستگاه‌های سخت‌افزار مجازی پایدار دارد و می‌تواند برای هدایت سخت‌افزار فیزیکی واقعی به هایپروایزر وابسته باشد. با این حال، کتابخانه‌های پروتکل هنوز برای جایگزینی خدمات یک سیستم‌عامل مرسوم مورد نیاز هستند. ایجاد این کتابخانه‌های پروتکل، جایی است که بخش عمده کار در پیاده‌سازی یک سیستم‌عامل کتابخانه مدرن در آن نهفته است. علاوه بر این، اتکا به یک هایپروایزر ممکن است باعث ایجاد دوباره سربار در عملکرد (reintroduce performance) هنگام جابجایی بین یونیکرنل و هایپروایزر و همچنین هنگام انتقال داده‌ها بین دستگاه‌های مجازی هایپروایزر شود.
با کاهش مقدار کد استقرار یافته، یونیکرنل ها قطعا سطح حمله احتمالی را کاهش می دهند و درنتیجه ویژگی‌های امنیتی را بهبود میبخشند.
یک سرویس گیرنده پیام‌رسانی مبتنی بر یونیکرنل، حدود 4 درصد حجم بیس کد معادل با استفاده از لینوکس را دارد.
همچنین، با توجه به ماهیت ساخت آنها، می توان بهینه سازی کل سیستم را در درایورهای‌دستگاه و منطق برنامه انجام داد و در نتیجه تخصص (specialisation) را بهبود بخشید. به عنوان مثال، برنامه های کاربردی مانند nginx، SQLite و Redis که بر روی یک یونیکرنل اجرا می شوند، بهبود عملکرد 1.7 تا 2.7 برابری را نشان داده اند.
به طور مکرر نشان داده شده است که یونیکرل‌ها در زمان پاسخگویی به درخواست‌های دریافتی، قبل از اتمام زمان درخواست ها، بسیار سریع بوت می شوند.
یونیکرنل ها خود را در ایجاد سیستم‌هایی که از معماری‌های نرم افزاری سرویس گرا یا میکروسرویس پیروی می کنند، مشارکت می‌دهند.
درجه بالای تخصص (specialisation) به این معنی است که یونیکرنل ها برای آن نوع محاسبات عمومی و چند کاربره ای که سیستم عامل‌های مروسوم برای آن استفاده می شوند، مناسب نیستند. افزودن عملکرد اضافی یا تغییر یک یونیکرنل کامپایل شده به طور کلی امکان پذیر نیست. درواقع رویکرد، کامپایل و استقرار یک یونیکرنل جدید با تغییرات مورد نظر است.