Graphic overview of Exokernel. Exokernels are much smaller than a normal kernel (monolithic kernel). They give more direct access to the hardware, thus removing most abstractions
**اگزوکرنل** (به انگلیسی: Exokernel) یک هسته سیستم عامل است که توسط گروه سیستم عامل‌های موازی و توزیع شده MIT ساخته شده‌است، و همچنین یک کلاس از سیستم عامل‌های مشابه است.

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

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

Exokernels را می‌توان به عنوان کاربردی از انتهای پایان تا پایان در سیستم عامل‌ها مشاهده کرد، به این دلیل که آنها یک برنامه کاربردی را مجبور به لایه بندی انتزاعات خود در بالای انتزاعهای دیگر که با نیازهای مختلف در ذهن طراحی شده‌اند، نمی‌کنند. به عنوان مثال، در پروژه MIT Exokernel، وب سرور Cheetah بسته‌های پروتکل اینترنتی پیش فرض شده را روی دیسک ذخیره می‌کند، هسته با جلوگیری از خواندن و نوشتن غیرمجاز دسترسی ایمن به دیسک را فراهم می‌کند، اما نحوه انتزاع دیسک بستگی به برنامه یا موارد دیگر دارد کتابخانه‌هایی که برنامه استفاده می‌کند.

انگیزه
------

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

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

افراد خارج از MIT
-----------------

MIT دو سیستم عامل مبتنی بر اگزوکلنل با استفاده از دو هسته توسعه داد: Aegis، اثبات مفهوم با پشتیبانی محدود برای ذخیره‌سازی، و XOK، که مفهوم اگزوکرنل را با دقت بیشتری به کار می‌برد.

یک ایده اساسی از سیستم exokernel MIT این است که سیستم عامل باید به عنوان یک مجری برای برنامه‌های کوچک ارائه شده توسط نرم‌افزار کاربردی عمل کند، که فقط با این شرط محدود می‌شوند که exokernel باید قادر به تضمین استفاده ایمن از سخت‌افزار باشد.

### طرح

Exokernel MIT منابع سخت‌افزاری را به شرح زیر مدیریت می‌کند:

#### پردازنده

هسته منابع پردازنده را به عنوان جدول زمانی معرفی می‌کند که از طریق آن برنامه‌ها می‌توانند فواصل زمانی را اختصاص دهند. یک برنامه می‌تواند بقیه بخش زمان خود را به یک برنامه تعیین شده دیگر منتقل کند. هسته برنامه‌های رویدادهای پردازنده مانند وقفه، استثناء سخت‌افزار و شروع یا پایان یک برش زمان را آگاه می‌کند. اگر برنامه مدت زمان زیادی را برای رسیدگی به یک رویداد طول بکشد، هسته آن را با تخصیص قطعه قطعه بعدی مجازات می‌کند. در موارد شدید، هسته می‌تواند برنامه را سقط کند.

#### حافظه

هسته صفحات حافظه بدنی را به برنامه‌ها اختصاص می‌دهد و بافر نگاهی ترجمه را کنترل می‌کند. یک برنامه می‌تواند با ارسال قابلیت برای دسترسی به آن صفحه، صفحه را با برنامه دیگری به اشتراک بگذارد. هسته تضمین می‌کند که برنامه‌ها فقط به صفحاتی که توانایی آنها را دارند دسترسی دارند.

#### ذخیره‌سازی دیسک

هسته بلوک‌های دیسک را با آدرس بلوک فیزیکی خود به برنامه برنامه شناسایی می‌کند و به برنامه اجازه می‌دهد تا داده‌های موجود را بهینه کند. وقتی برنامه اولیه استفاده از دیسک را آغاز می‌کند، عملکردی را در اختیار هسته قرار می‌دهد که هسته می‌تواند از آن استفاده کند تا مشخص کند کنترل‌های برنامه بلوک می‌کند. این هسته از این پاسخ به تماس استفاده می‌کند تا تأیید کند که وقتی یک بلوک جدید اختصاص می‌دهد، برنامه فقط بلوکی را که علاوه بر مواردی که قبلاً کنترل کرده بود، اختصاص داده‌است.

#### شبکه سازی

هسته یک فیلتر بسته قابل برنامه‌ریزی را اجرا می‌کند، که برنامه‌ها را به زبان کد بایت اجرا می‌کند که برای بررسی آسان امنیت توسط هسته طراحی شده‌است.

### برنامه‌های کاربردی

سیستم عامل‌های موجود در کتابخانه برای Exokernel شامل سیستم سفارشی ExOS و یک شبیه‌ساز BSD است. علاوه بر اینها، تیم Exokernel سرور وب سایت یوزپلنگ را ایجاد کرد که مستقیماً از کرنل استفاده می‌کند.

تاریخچه
-------

مفهوم اگزوکرنل حداقل از سال ۱۹۹۴ وجود داشته‌است، اما از سال ۲۰۱۰ تاکنون بیرونی‌ها هنوز هم یک تحقیق تحقیقاتی هستند و در هیچ سیستم عامل اصلی تجاری مورد استفاده قرار نگرفته‌اند.

سیستم اگزوکرنل مفهومی Nemesis است که توسط دانشگاه کمبریج، دانشگاه گلاسگو، Citrix Systems و انستیتوی علوم کامپیوتر در سوئد نوشته شده‌است. MIT همچنین چندین سیستم مبتنی بر اگزوکرنل از جمله ExOS را ساخته‌است.

جستارهای وابسته
---------------

* هسته رایانش
* هسته یکپارچه
* هسته پیوندی
* ریز هسته
* سیستم عامل
* میان افزار

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «Exokernel». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۸ ژوئن ۲۰۲۰.

پیوند به بیرون
--------------

* Erlingsson, Úlfar; Kyparlis, Athanasios, *Microkernels*, Cornell, The extent to which simple, efficient operations are a good choice in a kernel interface design.
* *Exokernel Operating System*, MIT. A research exokernel.
* *Nemesis*, بریتانیا: Cambridge. A research exokernel.
* *BareMetal OS*, Return Infinity, archived from the original on 2014-09-06. A commercial exokernel.
* *XOmB*, archived from the original on 28 July 2019, retrieved 7 June 2020. A research exokernel.
* *ExAmour*, پاریس. The گنو exokernel.

| * ن
* ب
* و
سیستم‌عامل |
| --- |
| اطلاعات کلی | 
* Advocacy
* Comparison
* Forensic engineering
* History
* Hobbyist development
* فهرست سیستم‌عامل‌ها
* Timeline
* Usage share

 |
| هسته (رایانش) | 

|  |  |
| --- | --- |
| معماری رایانه | 
* Exokernel
* هسته پیوندی
* ریزهسته
* هسته یکپارچه
* vkernel
* Rump kernel
* Unikernel

 |
| مولفه‌ها | 
* گرداننده دستگاه
* Loadable kernel module
* ریزهسته
* فضای کاربری

 |

 |
| مدیریت فرایند (رایانه) | 

|  |  |
| --- | --- |
| مفاهیم | 
* تعویض زمینه
* وقفه
* ارتباط بین پردازشی
* فرایند (رایانه)
* بلاک کنترل فرایند
* سیستم‌عامل بی‌درنگ
* ریسه (رایانه)
* اشتراک زمانی

 |
| زمان‌بندی (رایانه) | 
* چندکارگی (رایانه)
* Fixed-priority preemptive
* صف چندسطحی فیدبک
* قبضه‌کردن (رایانش)
* زمان‌بندی نوبت گردشی
* نخست کوتاه‌ترین کار

 |

 |
| مدیریت حافظه،محافظت از منابع | 
* Bus error
* General protection fault
* حفاظت از حافظه
* صفحه‌بندی (رایانه)
* حلقه حفاظتی
* Segmentation fault
* حافظه مجازی

 |
| دسترسی به حافظه غیرفرار،سیستم‌های فایل‌بندی | 
* راه‌اندازی (رایانه)
* یکپارچه‌سازی دیسک سخت
* فایل دستگاهی
* صفت پرونده
* آی‌نود
* فایل سیستم ژورنالی
* پارتیشن‌بندی
* سامانه پرونده مجازی
* Virtual tape library

 |
| فهرست سیستم‌عامل‌ها | 
* Acorn
	+ Arthur
	+ ARX
	+ MOS
	+ RISC iX
	+ RISC OS
* Amiga Inc.
	+ آمیگااواس
	+ AmigaOS 1.0-3.9 (Motorola 68000)
	+ AmigaOS 4 (PowerPC)
	+ Amiga Unix, a.k.a. Amix
* Amstrad
	+ AMSDOS
	+ کانتیکی
	+ SymbOS
* اندروید
* Apple Inc.
	+ اپل ۲ family
	+ اپل III
	+ Apple DOS
	+ اپل لیسا
	+ Apple SOS
	+ Apple Pascal
	+ ProDOS
	+ GS/OS
	+ GNO/ME
	+ کانتیکی
	+ مکینتاش
		- Classic Mac OS
		- اپل یونیکس
		- Copland
		- MkLinux
		- Pink
		- Rhapsody
		- مک‌اواس (formerly Mac OS X and OS X)
		- macOS Server (formerly Mac OS X Server and OS X Server)
		- سرور شبکه اپل
	+ Apple MessagePad
		- Newton OS
	+ آیفون and آی‌پاد تاچ
		- آی‌اواس (formerly iPhone OS)
	+ آی‌پد
		- آی‌پداواس
	+ اپل واچ
		- واچ اواس
	+ اپل تی‌وی
		- تی‌وی او اس
	+ داروین (سیستم‌عامل)
	+ آی‌پاد
		- آی‌پاد (unnamed embedded OS)
* A/ROSE
* Apollo Computer
	+ Domain/OS
* Atari
	+ Atari DOS
	+ Atari TOS
	+ Atari MultiTOS
* BAE Systems XTS-400
* Be Inc.
	+ بی اواس
	+ BeIA
	+ BeOS r5.1d0
* Bell Labs Non-Unix
	+ BESYS
	+ پلان ۹ از آزمایشگاه‌های بل
	+ اینفرنو)
* Burroughs Corporation
	+ Burroughs MCP
* بی‌اس‌دی
* Control Data Corporation
	+ Chippewa Operating System
	+ Kronos
	+ NOS (Network Operating System)
	+ SCOPE)
* Convergent Technologies Operating System
* Cosmos (سیستم‌عامل)
* Cromemco
	+ Cromemco DOS
	+ Cromix
* Data General
	+ AOS (for 16-bit)
	+ DG/UX
	+ RDOS (Real-time DOS)
* Datapoint (CTOS for Z-80)
* DDC-I Inc.
	+ HeartOS
* Digital Research, Inc.
	+ CP/M
	+ CP/M Plus
	+ CP/M-68K
	+ CP/M-8000
	+ CP/M-86
	+ CP/M-86 Plus
	+ Concurrent CP/M
	+ Concurrent CP/M-86
	+ Concurrent CP/M 8-16
	+ Concurrent CP/M-68K
	+ Concurrent DOS
		- Concurrent PC DOS
		- Concurrent DOS 8-16
		- Concurrent DOS 286
		- Concurrent DOS XM
		- Concurrent DOS 386
		- Concurrent DOS 386/MGE
		- Concurrent DOS 68K
	+ DR-DOS
	+ FlexOS
		- FlexOS 186
		- FlexOS 286
		- FlexOS 68K
	+ Multiuser DOS
	+ Datapac Multiuser DOS
	+ Datapac System Manager, a derivative of Datapac Multiuser DOS
	+ IMS Multiuser DOS
	+ MP/M
		- MP/M II
		- MP/M-86
		- MP/M 8-16
	+ PalmDOS 1.0
	+ Personal CP/M
* Digital Equipment Corporation
	+ Batch-11/DOS-11
	+ OS/8
	+ RSTS/E
	+ RSX-11
	+ RT-11
	+ TOPS-10
	+ TOPS-20
	+ TENEX
	+ ترو۶۴ یونیکس
	+ Ultrix
	+ OpenVMS
	+ WAITS
* داس (سیستم‌عامل)
* ENEA AB OSE
* Fujitsu Towns OS
* General Electric, Honeywell, Bull
	+ Real-Time Multiprogramming Operating System
	+ GCOS
	+ مولتیکس
* Genode
* گنو
* Google
	+ اندروید
	+ سیستم‌عامل کرومیوم
	+ کروم اواس
	+ گوبونتو
	+ گوگل فیوشا)
* Green Hills Software
	+ اینتگریتی
	+ اینتگریتی
	+ *µ-velOSity*
* هایکو (سیستم‌عامل)
* Harmony
* Heathkit, Zenith Data Systems
	+ HDOS
	+ HT-11
* Hewlett-Packard
	+ اچ‌پی-یواکس
	+ Multi-Programming Executive
* Honeywell CP-6
* Huawei Harmony OS
* Intel Corporation
	+ ISIS
* IBM
	+ Pre-360
		- BESYS
		- سیستم اشتراک زمانی سازگار
		- GM OS & GM-NAA I/O
		- IBSYS
		- SHARE Operating System
		- University of Michigan Executive System (UMES)
	+ OS/360 and successors
		- OS/360 and successors
		- ذخیره مجازی چندگانه
		- OS/390
		- Phoenix/MVS
		- زد/اواس)
	+ DOS
		- DOS/360 and successors on IBM S/360, S/370, and successor mainframes
		- BOS/360
		- TOS/360
		- DOS/VS
		- DOS/VSE
		- VSE/SP
		- VSE/ESA
		- z/VSE)
	+ VM/CMS
		- CP/CMS
		- CP-40
		- CP-67
		- VM/370
		- VM/XA
		- VM/ESA ماشین مجازی
		- z/VM)
	+ TPF line
		- Airline Control Program *ACP*
		- Transaction Processing Facility)
	+ Unix-like
		- آی‌بی‌ام ای‌آی‌اکس
		- UTS (Mainframe UNIX)
		- Linux on IBM Z
	+ Others on IBM S/360, S/370, and successor mainframes
		- TSS/360
		- MUSIC/SP
		- ORVYL and WYLBUR
	+ IBM PC
		- آی‌بی‌ام داس
		- اواس/۲
		- اواس/۲
		- eComStation)
	+ Other hardware
		- IBM Series 1
			* EDX
			* RPS
			* CPS
	+ IBM 1130 DM2
	+ IBM 1800 MPX & TSX
	+ IBM 8100
		- DPCX
		- DPPX)
	+ System 3 DMS
	+ IBM System 34, 36, 38
	+ OS/400
* illumos
* IncludeOS
* آی‌اواس
	+ هوم‌پاد
	+ آی‌پداواس
	+ تی‌وی او اس
* لینوکس
* مینیکس
* مورف اواس
* MUSIC/SP
* Nemesis
* نکست‌استپ
* NOS
* ORVYL
* اواس/۲
* OS-9
* OSv
* Pick
* QNX
* ری اکت او اس
* RISC OS
* سولاریس (سیستم‌عامل)
* Tandem
	+ NonStop
* TPF
* TRIPOS
* یونیکس
* Visi On
* VS/9
* وب او اس
* مایکروسافت ویندوز
* Xerox 500 series (530 RTB, 560)
* Xinu
* زد/اواس

 |
| مفاهیم جانبی | 
* رابط برنامه‌نویسی کاربردی
* شبکه رایانه‌ای
* لایه انتزاعی سخت‌افزاری
* لوح زنده
* یواس‌بی زنده
* پوسته (رایانه)
	+ واسط خط فرمان
	+ رابط کاربر گرافیکی
	+ واسط طبیعی کاربر
	+ واسط کاربر متن بنیان
	+ رابط کاربری صوتی
	+ ZUI
* PXE

 |