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