Архитектура гипервизора
Микроядро — это минимальная реализация функций ядра операционной системы.
Классические микроядра предоставляют лишь очень небольшой набор низкоуровневых примитивов, или системных вызовов, реализующих базовые сервисы операционной системы.
К ним относятся:
управление адресным пространством оперативной памяти.
управление адресным пространством виртуальной памяти.
управление процессами и потоками (нитями).
средства межпроцессной коммуникации.
Все остальные сервисы ОС, в классических монолитных ядрах предоставляемые непосредственно ядром, в микроядерных архитектурах реализуются в адресном пространстве пользователя (Ring3) и называются сервисами. Примерами таких сервисов, выносимых в пространство пользователя в микроядерных архитектурах, являются сетевые сервисы, файловая система, драйверы.
В этой архитектуре API
отсутствует вообще. Взаимодействие между компонентами системы (микроядрами) и
пользовательскими процессами осуществляется посредством обычного вызова функций,
поскольку и система, и приложения написаны на одном языке (Для ОСРВ SoftKernel это
C++).Это обеспечивает максимальную скорость системных вызовов.
Фактическое равноправие всех компонент системы обеспечивает возможность
переключения задач в любое время, т.е. система полностью preemptible.
Объектно-ориентированный подход обеспечивает модульность, безопасность, легкость
модернизации и повторного использования кода.
Роль API играет компилятор и динамический редактор объектных связей (linker). При
старте приложения динамический linker загружает нужные ему микроядра (т.е., в отличие от
предыдущих систем, не все компоненты самой операционной системы должны быть загружены
в оперативную память). Если микроядро уже загружено для другого приложения, оно повторно
не загружается, а использует код и данные уже имеющегося ядра. Это позволяет уменьшить
объем требуемой памяти.
Поскольку разные приложения разделяют одни микроядра, то они должны работать в
одном адресном пространстве. Следовательно, система не может использовать виртуальную
память и тем самым работает быстрее (так как исключаются задержки на трансляцию
виртуального адреса в физический).
Поскольку все приложения и сами микроядра работают в одном адресном пространстве,
то они загружаются в память, начиная с неизвестного на момент компиляции адреса.
Следовательно, приложения и микроядра не должны зависеть от начального адреса (как по
коду, так и поданным (последнее обеспечить значительно сложнее)). Это свойство
автоматически обеспечивает возможность записи приложений и модулей в ПЗУ, с их
последующим исполнением как в самом ПЗУ, так и оперативной памяти.
Микроядра по своим характеристикам напоминают структуры, используемые в других
операционных системах. Однако есть и свои различия.