/
Студентам/
СРВ/
Тема 09
Тема 9
ОСРВ QNX. Архитектура, функции микроядра
Основные особенности ОСРВ QNX
Основные особенности ОСРВ QNX
-
Микроядерная архитектура
(размер ядра - 10-20 Кб, в зависимости от версии).
В состав ОС QNX, кроме микроядра, входят диспетчер процессов,
диспетчер ввода-вывода (диспетчер устройств),
диспетчер файловых систем,
сетевой диспетчер.
Эти диспетчеры "оформлены" в виде обычных процессов.
Драйверы устройств (как разновидность т.наз. "менеджеров ресурсов")
- также обычные процессы. Выражаясь образно, можно сказать,
что граница между прикладными программами и ОС в
системах с микроядром размыта, нечетка. С одной стороны,
важные компоненты (например, драйверы) представляют собой
обычные процессы, с другой стороны, эти компоненты выполняют
функции, свойственные (в системах с монолитным ядром) именно
ядру как таковому , а не прикладным программам.
-
Базовый способ взаимодействия процессов - обмен сообщениями
( remember context switching! ). Все процессы, включая "системные"
(например, драйверы устройств),
взаимодействуют друг с другом посредством обмена сообщениями.
Кроме того, в силу особенностей поведения процессов (см. далее),
примитивы взаимодействия процессов можно использовать
как средства синхронизации. Отметим, что стандартная
библиотека функций для языка программирования С реализована
с использованием данного механизма. Поэтому при разработке
приложений не обязательно пользоваться примитивами работы
с сообщениями напрямую. Например, функция открытия файла
open() имеет семантику, определенную стандартом POSIX,
а "внутри" она посылает определенное сообщение менеджеру
файловых систем.
-
Системные вызовы "прозрачны" в сетевом отношении.
Например, открытие файла на не локальном узле семантически
не отличается от открытия локального файла. Разница только
в соотвествующем написании пути к файлу. Подобным образом
операция создания процесса "выглядит" совершенно одинаково
вне зависимости от того, на каком узле сети, локальном
или удаленном, создается процесс.
-
Полуфилософское замечание.
ОС-"монстры" типа Windo$ или Unix весьма сильно ограничивают
действия процессов в отношении прямой работы с аппаратурой
ЭВМ, но зато предоставляют мощнейшие средства для всевозможных
нужд. Примитивные ОС типа DO$, напротив, практически никак
не ограничивают запущенную в ней программу, но и не предоставляют
этой программе развитых средств для работы с аппаратурой.
QNX в этом отношении занимает как бы промежуточное положение:
с одной стороны, она содержит в себе все механизмы организации
многозадачности, взаимодействия процессов, а, с другой стороны,
позволяет прикладным программам напрямую работать с аппаратурой,
и, что самое важное, обрабатывать прерывания от устройств,
входящих в состав ЭВМ.
Микроядро ОСРВ QNX и его функции
Архитектура ОСРВ QNX (картина честно
заимствована из руководства по QNX,
уж очень вписалась, а свою было лень рисовать, да и зачем...):
Микроядро ОСРВ QNX выполняет следующие функции:
-
обеспечение взаимодействия процессов (IPC)
- маршрутизация сообщений, доставка сигналов процессам,
обеспечение работы механизма "proxy"
-
планирование процессов
-
предобработка прерываний и постобработка прерываний
- предоставление доступа к сетевым интерфейсам
Взаимодействие процессов
Имеется три механизма взаимодействия процессов:
- Сообщения (базовый способ)
- Так называемые proxy (применяются в случае, если
отправителю сообщения не требуется ответ)
- Сигналы
Сообщение - это совокупность байтов, передаваемый от одного
процесса к другому, при этом содержимое сообщения
имеет смысл только для обменивающихся, а задача микроядра -
передать. Для отправки сообщения используется системный
вызов Send(), для приема - Receive(), для ответа
на сообщение - Reply().
Основные особенности механизма обмена сообщениями:
-
При передаче сообщения микроядро не копирует его в
свое адресное пространство. Передача производится
тогда, когда получатель исполняет Receive(),
при этом данные копируются непосредственно
из адресного пространства отправителя в адресное
пространство получателя.
-
Операция Reply() не блокирует процесс и исполняется
атомарно (то есть не может быть прервана).
-
Отправитель сообщения ничего не должен знать
о состоянии получателя.
-
В случае, если получатель один, а отправителей много,
сообщения принимается в порядке отправления; однако,
имеется возможность принимать сообщения в порядке,
основанном на приоритетах отправителей.
-
Имеется ряд стандартных сообщений. Такие сообщения
имеют в начале код сообщения. Имеется также группы
зарезервированных кодов сообщений. Например,
имеются группы сообщений, предназначенных диспетчеру
процессов, сетевому диспетчеру и т.п.
-
Сообщение и ответ на него могут быть нулевой длины
При выполнений операций по приему-отправке сообщений
процесс переходит из состояние в состояние, как показано на следующей
диаграмме:
Планирование процессов
Прерывания
Сетевая подсистема микроядра
Некоторые параметры ОСРВ QNX
Время реакции на прерывание:
4.3 microsec on 133 MHz Pentium
4.4 microsec on 100 MHz Pentium
7 microsec on 100 MHz 486DX4
15 microsec on 33 MHz 386
Время переключения контекстов
Дата последней модификации: 2012-11-03
/
Студентам/
СРВ/
Тема 09