Введение

Ядро операционной системы, разработанное группой MIT Parallel and Distributed Operating Systems.

Exokernel — это ядро операционной системы, разработанное группой MIT Parallel and Distributed Operating Systems, а также класс подобных операционных систем. Обычно операционные системы предоставляют приложениям аппаратные ресурсы через абстракции высокого уровня, такие как (виртуальные) файловые системы. Основная идея экзоядер заключается в том, чтобы навязать разработчикам приложений как можно меньше абстракций, позволяя им самостоятельно принимать максимально возможное количество решений относительно аппаратных абстракций. Экзоядра имеют небольшой размер, поскольку их функциональность ограничивается обеспечением защиты и мультиплексированием ресурсов, что значительно проще, чем реализация передачи сообщений в традиционных микроядрах или реализация абстракций высокого уровня в монолитных ядрах. Реализованные абстракции называются библиотечными операционными системами; они могут запрашивать конкретные адреса памяти, дисковые блоки и т.п. Ядро лишь гарантирует, что запрошенный ресурс свободен, и приложение имеет право доступа к нему. Такой низкоуровневый доступ к аппаратному обеспечению позволяет программисту реализовывать собственные абстракции и исключать ненужные, чаще всего для повышения производительности программы. Это также позволяет программистам выбирать желаемый уровень абстракции – высокий или низкий. Экзоядра можно рассматривать как применение принципа сквозной организации к операционным системам, поскольку они не вынуждают приложение накладывать свои абстракции на другие абстракции, разработанные с учетом иных требований. Например, в проекте MIT Exokernel веб-сервер Cheetah хранит предварительно отформатированные пакеты протокола IP на диске, а ядро обеспечивает безопасный доступ к диску, предотвращая несанкционированное чтение и запись, однако способ абстрагирования диска определяется приложением или используемыми им библиотеками.

Мотивация

Традиционно разработчики ядра стремились скрыть отдельные аппаратные ресурсы от прикладных программ, заставляя их взаимодействовать с оборудованием через определенную модель абстракции. К этим моделям относятся файловые системы для хранения данных, виртуальные адресные пространства для памяти, планировщики задач и сокеты для сетевой связи. Эти абстракции упрощают написание программ в целом, но ограничивают производительность и препятствуют экспериментам с новыми абстракциями. Приложению, ориентированному на безопасность, может потребоваться файловая система, которая не сохраняет устаревшие данные на диске, а приложению, ориентированному на надежность, – файловая система, которая сохраняет такие данные для восстановления после сбоев. Один из вариантов – полностью отказаться от ядра и программировать непосредственно аппаратное обеспечение, но тогда вся машина будет выделена для конкретного приложения (и, соответственно, вся кодовая база приложения будет предназначена для этой машины). Концепция экзоядра представляет собой компромисс: ядро выделяет основные физические ресурсы машины (например, блоки диска, страницы памяти и процессорное время) нескольким прикладным программам, а каждая программа сама решает, как использовать эти ресурсы. Затем программа может подключиться к библиотеке поддержки, реализующей необходимые абстракции (или реализовать их самостоятельно).

Экзоядры MIT

MIT разработала две операционные системы на базе экзоядра, используя два ядра: Aegis – демонстрация концепции с ограниченной поддержкой устройств хранения, и XOK, который более полно реализовал концепцию экзоядра. Ключевая идея системы экзоядра MIT заключается в том, что операционная система должна функционировать как исполнитель для небольших программ, предоставляемых прикладным программным обеспечением, при этом эти программы должны соответствовать единственному требованию: экзоядро должно гарантировать их безопасное использование аппаратных ресурсов.

Приложения

Доступные библиотечные операционные системы для Exokernel включают в себя разработанную ExOS и эмулятор BSD. Помимо этого, команда разработчиков Exokernel создала веб-сервер Cheetah, использующий ядро напрямую.

История

Концепция экзоядерных систем существует как минимум с 1994 года, но экзоядра до сих пор остаются предметом исследований и не применяются ни в одной крупной коммерческой операционной системе. Примером системы, работающей на экзоядре, является Nemesis, разработанная Кембриджским университетом, Глазгоским университетом, Citrix Systems и Шведским институтом компьютерных наук. MIT также создал несколько систем на базе экзоядерных технологий, включая ExOS.