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