ОСРВ с монолитной архитектурой можно представить в виде
Прикладного уровня: состоит из работающих прикладных процессов;
Системного уровня: состоит из монолитного ядра операционной системы, в котором можно выделить следующие части:
- интерфейс между приложениями и ядром (API)
- собственно ядро системы
- интерфейс между ядром и оборудованием (драйверы устройств).
API в таких системах играет двойную роль:
1. управление взаимодействием прикладных процессов и системы;
2. обеспечение непрерывности выполнения кода системы (т.е. отсутствие переключения задач во время исполнения кода системы).
Основным преимуществом монолитной архитектуры является относительная быстрота работы по сравнению с другими архитектурами.
Недостатки монолитной архитектуры:
1. Системные вызовы, требующие переключения уровней привилегий должны реализовывать API как прерывания или ловушки.Это сильно увеличивает время их работы.
2. Ядро не может быть прервано пользовательской задачей. Это может привести к тому, что высокоприоритетная задача может не получить управление из-за работы низкоприоритетной.
3. Сложность переноса на новый архитектуры процессора из-за значительных ассемблерных вставок.
4. Негибкость и сложность развития: изменение части ядра системы требует его полной перекомпиляции.
Модульная архитектура (на основе микроядра) появилась как попытка убрать узкое место – API и облегчить модернизацию системы и перенос ее на новые процессоры. API обеспечивает связь прикладных процессов и специального модуля – менеджера процессов. Однако, теперь микроядро играет двойную роль:
1. управление взаимодействием частей системы (например, менеджеров процессов и файлов)
2. обеспечение непрерывности выполнения кода системы (т.е. отсутствие переключения задач во время исполнения микроядра).
Недостатки у модульной архитектуры фактически те же, что и у монолитной. Проблемы перешли с уровня API на уровень микроядра. Системный интерфейс по-прежнему не допускает переключения задач во время работы микроядра, только сократилось время пребывания в этом состоянии. API по-прежнему может быть реализован только на ассемблере, проблемы с переносимостью микроядра уменьшились (в связи с сокращением его размера), но остались. Объектная архитектура на основе объектов-микроядер. В этой архитектуре API отсутствует вообще. Взаимодействие между компонентами системы (микроядрами) и пользовательскими процессами осуществляется посредством обычного вызова функций, поскольку и система, и приложения написаны на одном языке (Для ОСРВ SoftKernel это C++).Это обеспечивает максимальную скорость системных вызовов.
Фактическое равноправие всех компонент системы обеспечивает возможность переключения задач в любое время, т.е. система полностью preemptible.
Объектно-ориентированный подход обеспечивает модульность, безопасность, легкость модернизации и повторного использования кода.
Роль API играет компилятор и динамический редактор объектных связей (linker). При старте приложения динамический linker загружает нужные ему микроядра (т.е., в отличие от предыдущих систем, не все компоненты самой операционной системы должны быть загружены в оперативную память). Если микроядро уже загружено для другого приложения, оно повторно не загружается, а использует код и данные уже имеющегося ядра. Это позволяет уменьшить объем требуемой памяти.