Экзоядро — это ядро операционной системы , разработанное группой параллельных и распределенных операционных систем Массачусетского технологического института [1] , а также класс аналогичных операционных систем.
Операционные системы обычно предоставляют приложениям аппаратные ресурсы через абстракции высокого уровня, такие как (виртуальные) файловые системы. Идея экзоядер заключается в том, чтобы навязывать разработчикам приложений как можно меньше абстракций, позволяя им принимать как можно больше решений относительно аппаратных абстракций. [2] Экзоядра крошечные, поскольку их функциональность ограничивается обеспечением защиты и мультиплексированием ресурсов, что значительно проще, чем в обычных микроядрах — реализация передачи сообщений и монолитных ядрах — реализация высокоуровневых абстракций.
Реализованные абстракции называются библиотечными операционными системами; они могут запрашивать определенные адреса памяти, дисковые блоки и т. д. Ядро лишь гарантирует, что запрошенный ресурс свободен и приложению разрешен доступ к нему. Этот низкоуровневый аппаратный доступ позволяет программисту реализовывать собственные абстракции и исключать ненужные, чаще всего для повышения производительности программы. Это также позволяет программистам выбирать, какой уровень абстракции они хотят: высокий или низкий.
Экзоядра можно рассматривать как применение сквозного принципа к операционным системам, поскольку они не заставляют прикладную программу накладывать свои абстракции поверх других абстракций, которые были разработаны с учетом других требований. Например, в проекте MIT Exokernel веб-сервер Cheetah хранит на диске предварительно отформатированные пакеты Интернет-протокола , ядро обеспечивает безопасный доступ к диску, предотвращая несанкционированное чтение и запись, но то, как диск абстрагируется, зависит от приложения или библиотеки, которые использует приложение.
Традиционно разработчики ядра стремились сделать отдельные аппаратные ресурсы невидимыми для прикладных программ, требуя от программ взаимодействия с оборудованием посредством некоторой модели абстракции. Эти модели включают файловые системы для дискового хранилища, виртуальные адресные пространства для памяти, планировщики для управления задачами и сокеты для сетевого взаимодействия. Эти абстракции аппаратного обеспечения облегчают написание программ в целом, но ограничивают производительность и сдерживают экспериментирование с новыми абстракциями. Приложению, ориентированному на безопасность, может потребоваться файловая система, которая не оставляет старые данные на диске, а приложению, ориентированному на надежность, может потребоваться файловая система, которая хранит такие данные для восстановления после сбоя.
Один из вариантов — полностью удалить ядро и программировать непосредственно на аппаратном обеспечении, но тогда вся машина будет посвящена написанию приложения (и, наоборот, вся кодовая база приложения будет посвящена этой машине). Концепция экзоядра представляет собой компромисс: позволить ядру распределять основные физические ресурсы машины (например, дисковые блоки, страницы памяти и процессорное время) множеству прикладных программ, и позволить каждой программе решать, что делать с этими ресурсами. Затем программа может подключиться к вспомогательной библиотеке, которая реализует необходимые ей абстракции (или реализовать свои собственные).
MIT разработал две операционные системы на основе экзоядра, использующие два ядра: Aegis, экспериментальную концепцию с ограниченной поддержкой хранилища, и XOK, в которой концепция экзоядра применялась более тщательно.
Основная идея экзоядра MIT заключается в том, что операционная система должна выступать в качестве исполнителя для небольших программ, предоставляемых прикладным программным обеспечением, которые ограничены только требованием, чтобы экзоядро могло гарантировать безопасное использование аппаратного обеспечения.
Экзоядро MIT управляет аппаратными ресурсами следующим образом:
Доступные библиотеки операционных систем для Exokernel включают специальную систему ExOS и эмулятор для BSD . В дополнение к этому команда exokernel создала веб-сервер Cheetah , который использует ядро напрямую.
Концепция экзоядра существует как минимум с 1994 года [3] , но по состоянию на 2010 год [обновлять]экзоядра все еще являются исследовательской разработкой и не использовались ни в каких крупных коммерческих операционных системах.
Концепция управления экзоядерной системой — Nemesis , разработанная Кембриджским университетом , Университетом Глазго , Citrix Systems и Шведским институтом компьютерных наук . MIT также создал несколько систем на основе экзоядра, включая ExOS.
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь ){{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )Насколько простые и эффективные операции являются хорошим выбором при проектировании интерфейса ядра..