Exokernel - это операционная система ядро , разработанное MIT Parallel and Distributed Группа операционных систем, а также класс аналогичных операционных систем.
Операционные системы обычно представляют аппаратные ресурсы приложениям через высокоуровневые абстракции, такие как (виртуальные) файловые системы. Идея exokernels состоит в том, чтобы навязать разработчикам приложений как можно меньше абстракций, позволяя им принимать как можно больше решений об аппаратных абстракциях. Экзоядра крошечные, так как функциональность ограничена обеспечением защиты и мультиплексированием ресурсов, что значительно проще, чем обычные микроядра 'реализация передачи сообщений и монолитные ядра ' реализация высокоуровневых абстракций.
Реализованные приложения называются библиотечными операционными системами; они могут запрашивать определенные адреса памяти, блоки диска и т. д. Ядро только гарантирует, что запрошенный ресурс свободен, и приложению разрешен доступ к нему. Этот низкоуровневый доступ к оборудованию позволяет программисту реализовывать собственные абстракции и опускать ненужные, чаще всего для повышения производительности программы. Это также позволяет программистам выбирать, какой уровень абстракции они хотят, высокий или низкий.
Экзоядра можно рассматривать как применение принципа сквозного соединения к операционным системам, поскольку они не вынуждают прикладную программу накладывать свои абстракции поверх других абстракций, которые были разработаны с учетом различных требований. Например, в проекте MIT Exokernel веб-сервер Cheetah хранит на диске предварительно отформатированные пакеты Интернет-протокола, ядро обеспечивает безопасный доступ к диску, предотвращая несанкционированное чтение и запись, но способ абстрагирования диска зависит от приложения или библиотек, которые оно использует.
Традиционно разработчики ядра стремились сделать отдельные аппаратные ресурсы невидимыми для прикладных программ, требуя, чтобы программы взаимодействовали с аппаратным обеспечением посредством некоторой модели абстракции. Эти модели включают файловые системы для дискового хранилища, виртуальные адресные пространства для памяти, планировщики для управления задачами и сокеты для сетевого взаимодействия. Эти абстракции оборудования облегчают написание программ в целом, но ограничивают производительность и сдерживают эксперименты с новыми абстракциями. Приложению, ориентированному на безопасность, может потребоваться файловая система, которая не оставляет старые данные на диске, а приложению, ориентированному на надежность, может потребоваться файловая система, которая хранит такие данные для восстановления после сбоя.
Один из вариантов - полностью удалить ядро и программировать непосредственно на оборудовании, но тогда вся машина будет выделена для написанного приложения (и, наоборот, вся кодовая база приложения будет выделена этой машине). Концепция экзоядра - это компромисс: позвольте ядру выделить основные физические ресурсы машины (например, дисковые блоки, страницы памяти и время процессора) нескольким прикладным программам, и пусть каждая программа решает, что делать с этими ресурсами. Затем программа может ссылаться на вспомогательную библиотеку, которая реализует необходимые ей абстракции (или может реализовать свои собственные).
Массачусетский технологический институт разработал две операционные системы на основе экзоядра, используя два ядра: Aegis, доказательство концепции с ограниченной поддержкой хранилища, и XOK, в котором концепция экзоядра применялась более тщательно.
Существенная идея системы экзоядра Массачусетского технологического института заключается в том, что операционная система должна действовать как исполнительная система для небольших программ, предоставляемых прикладным программным обеспечением, которые ограничены только требованием, что экзоядро должно быть в состоянии гарантировать, что они безопасно использовать оборудование.
Экзоядро MIT управляет аппаратными ресурсами следующим образом:
Доступные библиотечные операционные системы для Exokernel включают настраиваемые Система ExOS и эмулятор для BSD. В дополнение к этому, команда exokernel создала веб-сервер Cheetah , который напрямую использует ядро.
Концепция экзоядра существует по крайней мере с 1994 года, но по состоянию на 2010 год экзоядро все еще является исследовательской работой и не использовалось ни в каких основных коммерческих операционных системах..
Концепция операционной системы экзоядра - это Nemesis, разработанная Кембриджским университетом, Университетом Глазго, Citrix Systems, и Шведский институт компьютерных наук. MIT также построил несколько систем на основе экзоядра, включая ExOS.
Степень, в которой простые и эффективные операции являются хорошим выбором при разработке интерфейса ядра.