stringtranslate.com

Экзоядро

Графический обзор Exokernel. Экзоядра намного меньше обычного ядра ( монолитного ядра ). Они дают более прямой доступ к оборудованию, тем самым удаляя большинство абстракций

Exokernelядро ​​операционной системы , разработанное группой параллельных и распределенных операционных систем Массачусетского технологического института [1] , а также класс подобных операционных систем.

Операционные системы обычно представляют аппаратные ресурсы приложениям через высокоуровневые абстракции , такие как (виртуальные) файловые системы. Идея экзоядер заключается в том, чтобы навязывать разработчикам приложений как можно меньше абстракций, позволяя им принимать как можно больше решений относительно аппаратных абстракций. [2] Экзоядра крошечные, поскольку функциональность ограничена обеспечением защиты и мультиплексирования ресурсов, что значительно проще, чем реализация передачи сообщений в обычных микроядрах и реализация высокоуровневых абстракций в монолитных ядрах .

Реализованные абстракции называются библиотечными операционными системами; они могут запрашивать определенные адреса памяти, блоки диска и т. д. Ядро только гарантирует, что запрошенный ресурс свободен, и приложению разрешен доступ к нему. Этот низкоуровневый аппаратный доступ позволяет программисту реализовывать пользовательские абстракции и пропускать ненужные, чаще всего для повышения производительности программы. Он также позволяет программистам выбирать, какой уровень абстракции им нужен, высокий или низкий.

Экзоядра можно рассматривать как применение принципа end-to-end к операционным системам, поскольку они не заставляют прикладную программу накладывать свои абстракции поверх других абстракций, разработанных с учетом различных требований. Например, в проекте MIT Exokernel веб-сервер Cheetah хранит предварительно отформатированные пакеты протокола Интернета на диске, ядро ​​обеспечивает безопасный доступ к диску, предотвращая несанкционированное чтение и запись, но то, как абстрагируется диск, зависит от приложения или библиотек, которые использует приложение.

Мотивация

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

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

Экзоядра MIT

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

Основная идея экзоядерной системы Массачусетского технологического института заключается в том, что операционная система должна выступать в качестве исполнителя для небольших программ, предоставляемых прикладным программным обеспечением, которые ограничены только требованием, что экзоядро должно быть способно гарантировать безопасное использование оборудования.

Дизайн

Экзоядро MIT управляет аппаратными ресурсами следующим образом:

Процессор
Ядро представляет ресурсы процессора как временную шкалу, из которой программы могут выделять интервалы времени. Программа может отдать остаток своего временного среза другой назначенной программе. Ядро уведомляет программы о событиях процессора, таких как прерывания , аппаратные исключения и начало или конец временного среза. Если программе требуется много времени для обработки события, ядро ​​будет штрафовать ее при последующих выделениях временных срезов; в крайних случаях ядро ​​может прервать программу.
Память
Ядро выделяет программым страницы физической памяти и управляет буфером поиска перевода . Программа может делиться страницей с другой программой, отправляя ей возможность доступа к этой странице. Ядро гарантирует, что программы получают доступ только к тем страницам, к которым у них есть возможность.
Дисковое хранилище
Ядро идентифицирует блоки диска для прикладной программы по их физическому адресу блока, позволяя приложению оптимизировать размещение данных. Когда программа инициализирует свое использование диска, она предоставляет ядру функцию, которую ядро ​​может использовать для определения того, какие блоки контролирует программа. Ядро использует этот обратный вызов для проверки того, что при выделении нового блока программа запрашивает только тот блок, который был выделен в дополнение к тем, которые она уже контролировала.
Нетворкинг
Ядро реализует программируемый фильтр пакетов , который выполняет программы на языке байт-кода, разработанном для легкой проверки безопасности ядром.

Приложения

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

История

Архитектура MINIX 3

Концепция экзоядра существует по крайней мере с 1994 года [3] , но по состоянию на 2010 год экзоядра все еще оставались исследовательской разработкой и не использовались ни в одной крупной коммерческой операционной системе.

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

Смотрите также

Ссылки

  1. ^ "MIT Exokernel Operating System". pdos.csail.mit.edu . Получено 2018-01-25 .
  2. ^ Энглер, DR; Каашук, MF; О'Тул-младший, J.; Энглер, DR; Каашук, MF; О'Тул-младший, J. (1995-12-03). "Экзоядро: архитектура операционной системы для управления ресурсами на уровне приложений". Обзор операционных систем ACM SIGOPS . 29 (5): 251, 251–266, 266. doi :10.1145/224056.224076. ISSN  0163-5980. S2CID  221932539.
  3. ^ Энглер, Каашук и О'Тул 1995.

Библиография

Внешние ссылки