اگزوکرنل
اگزوکرنل یک هسته سیستم عامل است که توسط گروه سیستم عامل‌های موازی و توزیع شده MIT ساخته شده‌است، و همچنین یک کلاس از سیستم عامل‌های مشابه است.
سیستم‌های عامل معمولاً منابع سخت‌افزاری را از طریق انتزاعات سطح بالا مانند سیستم فایل (مجازی) در اختیار برنامه‌ها قرار می‌دهند. ایده خارج از اگزوکلنل این است که به زور ممکن است کمترین انتزاع را بر روی توسعه دهندگان برنامه‌ها داشته باشید و به آنها این امکان را بدهید که تصمیم بگیرند تا حد امکان در مورد تجرید سخت‌افزاری تصمیم‌گیری کنند. اگزوکلن‌ها کوچک هستند، از آنجا که کارکردها محدود به تضمین حفاظت و تعدیل منابع است، که به‌طور قابل توجهی ساده‌تر از اجرای معمول ریزگردها از ارسال پیام و اجرای هسته‌های یکپارچه از انتزاعات سطح بالا است.
برنامه‌های اجرا شده سیستم عامل‌های کتابخانه نامیده می‌شوند. آنها ممکن است آدرس‌های حافظه خاص، بلوک‌های دیسک و غیره را درخواست کنند. هسته هسته فقط تضمین می‌کند که منبع درخواستی رایگان باشد و به برنامه اجازه دسترسی به آن را دارد. این دسترسی سخت‌افزاری سطح پایین به برنامه‌نویس اجازه می‌دهد تا انتزاعات سفارشی را پیاده‌سازی کند و موارد غیر ضروری را که معمولاً برای بهبود عملکرد یک برنامه است، حذف کند. همچنین به برنامه نویسان این امکان را می‌دهد تا انتخاب کنند که سطح انتزاع مورد نظر، زیاد یا پایین چیست.
Exokernels را می‌توان به عنوان کاربردی از انتهای پایان تا پایان در سیستم عامل‌ها مشاهده کرد، به این دلیل که آنها یک برنامه کاربردی را مجبور به لایه بندی انتزاعات خود در بالای انتزاعهای دیگر که با نیازهای مختلف در ذهن طراحی شده‌اند، نمی‌کنند. به عنوان مثال، در پروژه MIT Exokernel، وب سرور Cheetah بسته‌های پروتکل اینترنتی پیش فرض شده را روی دیسک ذخیره می‌کند، هسته با جلوگیری از خواندن و نوشتن غیرمجاز دسترسی ایمن به دیسک را فراهم می‌کند، اما نحوه انتزاع دیسک بستگی به برنامه یا موارد دیگر دارد کتابخانه‌هایی که برنامه استفاده می‌کند.
طراحان هسته به‌طور سنتی سعی در ایجاد منابع سخت‌افزاری انفرادی برای برنامه‌های کاربردی دارند که با استفاده از برخی مدل‌های انتزاع، برنامه‌های لازم برای برقراری تعامل با سخت‌افزار را دارند. این مدل‌ها شامل سیستم‌های فایل برای ذخیره‌سازی دیسک، فضای آدرس‌های مجازی برای حافظه، برنامه ریزان برای مدیریت کار و پریزها برای ارتباطات شبکه هستند. این انتزاع‌های سخت‌افزاری نوشتن برنامه‌ها به‌طور کلی را آسان‌تر می‌کند، اما عملکرد و آزمایش‌های سخت را در انتزاعات جدید محدود می‌کند. یک برنامه امنیتی گرا ممکن است به یک سیستم پرونده ای نیاز داشته باشد که داده‌های قدیمی را بر روی دیسک باقی نگذارد، در حالی که یک برنامه قابلیت اطمینان محور ممکن است به یک سیستم پرونده ای نیاز داشته باشد که چنین داده‌هایی را برای بازیابی خرابی حفظ کند.
یک گزینه این است که هسته را به‌طور کامل حذف کرده و مستقیماً روی سخت‌افزار برنامه‌ریزی کنید، اما در این صورت کل دستگاه به برنامه‌نویسی اختصاص داده می‌شود (و برعکس، کل برنامه کد برنامه به آن دستگاه اختصاص داده می‌شود). مفهوم اگزوکرنل یک سازش است: اجازه دهید هسته منابع اصلی بدنی دستگاه (به عنوان مثال بلوک دیسک، صفحات حافظه و زمان پردازنده) را به چندین برنامه کاربردی اختصاص دهد و اجازه دهید هر برنامه تصمیم بگیرد که با این منابع چه کاری انجام دهد. سپس این برنامه می‌تواند به یک کتابخانه پشتیبانی که مجرای مورد نیاز خود را پیاده‌سازی می‌کند (یا می‌تواند خودش را پیاده‌سازی کند) پیوند دهد.
MIT دو سیستم عامل مبتنی بر اگزوکلنل با استفاده از دو هسته توسعه داد: Aegis، اثبات مفهوم با پشتیبانی محدود برای ذخیره‌سازی، و XOK، که مفهوم اگزوکرنل را با دقت بیشتری به کار می‌برد.
یک ایده اساسی از سیستم exokernel MIT این است که سیستم عامل باید به عنوان یک مجری برای برنامه‌های کوچک ارائه شده توسط نرم‌افزار کاربردی عمل کند، که فقط با این شرط محدود می‌شوند که exokernel باید قادر به تضمین استفاده ایمن از سخت‌افزار باشد.
Exokernel MIT منابع سخت‌افزاری را به شرح زیر مدیریت می‌کند:
هسته منابع پردازنده را به عنوان جدول زمانی معرفی می‌کند که از طریق آن برنامه‌ها می‌توانند فواصل زمانی را اختصاص دهند. یک برنامه می‌تواند بقیه بخش زمان خود را به یک برنامه تعیین شده دیگر منتقل کند. هسته برنامه‌های رویدادهای پردازنده مانند وقفه، استثناء سخت‌افزار و شروع یا پایان یک برش زمان را آگاه می‌کند. اگر برنامه مدت زمان زیادی را برای رسیدگی به یک رویداد طول بکشد، هسته آن را با تخصیص قطعه قطعه بعدی مجازات می‌کند. در موارد شدید، هسته می‌تواند برنامه را سقط کند.
هسته صفحات حافظه بدنی را به برنامه‌ها اختصاص می‌دهد و بافر نگاهی ترجمه را کنترل می‌کند. یک برنامه می‌تواند با ارسال قابلیت برای دسترسی به آن صفحه، صفحه را با برنامه دیگری به اشتراک بگذارد. هسته تضمین می‌کند که برنامه‌ها فقط به صفحاتی که توانایی آنها را دارند دسترسی دارند.
هسته بلوک‌های دیسک را با آدرس بلوک فیزیکی خود به برنامه برنامه شناسایی می‌کند و به برنامه اجازه می‌دهد تا داده‌های موجود را بهینه کند. وقتی برنامه اولیه استفاده از دیسک را آغاز می‌کند، عملکردی را در اختیار هسته قرار می‌دهد که هسته می‌تواند از آن استفاده کند تا مشخص کند کنترل‌های برنامه بلوک می‌کند. این هسته از این پاسخ به تماس استفاده می‌کند تا تأیید کند که وقتی یک بلوک جدید اختصاص می‌دهد، برنامه فقط بلوکی را که علاوه بر مواردی که قبلاً کنترل کرده بود، اختصاص داده‌است.
هسته یک فیلتر بسته قابل برنامه‌ریزی را اجرا می‌کند، که برنامه‌ها را به زبان کد بایت اجرا می‌کند که برای بررسی آسان امنیت توسط هسته طراحی شده‌است.
سیستم عامل‌های موجود در کتابخانه برای Exokernel شامل سیستم سفارشی ExOS و یک شبیه‌ساز BSD است. علاوه بر اینها، تیم Exokernel سرور وب سایت یوزپلنگ را ایجاد کرد که مستقیماً از کرنل استفاده می‌کند.
مفهوم اگزوکرنل حداقل از سال ۱۹۹۴ وجود داشته‌است، اما از سال ۲۰۱۰ تاکنون بیرونی‌ها هنوز هم یک تحقیق تحقیقاتی هستند و در هیچ سیستم عامل اصلی تجاری مورد استفاده قرار نگرفته‌اند.
سیستم اگزوکرنل مفهومی Nemesis است که توسط دانشگاه کمبریج، دانشگاه گلاسگو، Citrix Systems و انستیتوی علوم کامپیوتر در سوئد نوشته شده‌است. MIT همچنین چندین سیستم مبتنی بر اگزوکرنل از جمله ExOS را ساخته‌است.