Системная архитектура QNX
Концепция QNX. Главная обязанность ОС состоит в управлении ресурсами компьютера. Все действия в системе – диспетчеризация прикладных программ, запись файлов на диск, пересылка данных по сети и т.п. – должны выполняться совместно слитно и прозрачно. ОС QNX обеспечивает все неотъемлемые составляющие СРВ: многозадачность, диспетчеризацию программ на основе приоритетов и быстрое переключение контекста. Конфигурация QNX изменяется от ядра с несколькими небольшими модулями до полноценной сетевой системы, обслуживающей сотни пользователей. QNX достигает своего уникального уровня производительности, модульности и простоты благодаря двум фундаментальным принципам:
· архитектура на основе микроядра;
· связь между процессами на основе сообщений.
Рис. 2.22. Внутри микроядра QNX |
Архитектура микроядра системы QNXвключает ядро, координирующее работу процессов (рис. 2.22). Микроядро QNX имеет небольшой размер и отвечает за выполнение функций:
· связь между процессами – микроядро управляет маршрутизацией сообщений; поддерживает две другие формы IPC –прокси и сигналы;
· сетевой интерфейс низкого уровня – микроядро осуществляет доставку сообщений, предназначенных для процессов на других узлах сети;
· диспетчеризация процессов – входящий в Ядро планировщик решает, какому из запущенных процессов передается управление;
· первичная обработка прерываний – все аппаратные прерывания и исключения сначала проходят через Микроядро, а затем передаются соответствующему драйверу или системному менеджеру.
В отличие от всех остальных процессов, ядро никогда не получает управления в результате диспетчеризации. Входящий в состав ядра код выполняется только в результате прямых вызовов из процесса или аппаратного прерывания. Все услуги ОС, за исключением тех, которые выполняются ядром, в QNX предоставляются через стандартные системные процессы. Типовая конфигурация QNX имеет следующие системные процессы:
· менеджер процессов (Proc);
· менеджер файловой системы (Fsys);
· менеджер устройств (Dev);
· менеджер сети (Net).
Связь между процессами.Микроядро QNX поддерживает три важнейшие формы связи между процессами: сообщения, прокси и сигналы.
· Сообщения – это основополагающая форма IPC в QNX. Они обеспечивают синхронную связь между взаимодействующими процессами, когда процессу, посылающему сообщение, требуется получить подтверждение того, что оно получено и, возможно, ответ.
· Прокси – это форма неблокирующего сообщения, особенно подходящего для извещения о наступлении события, когда посылающий процесс не нуждается в диалоге с получателем. Единственная функция прокси состоит в посылке фиксированного сообщения определенному процессу, который является владельцем прокси.
· Сигналы – это традиционная форма IPC. Они используются для асинхронной связи между процессами.
IPC посредством сообщений. Сообщения в QNX – это пакеты байт, которые синхронно передаются от одного процесса к другому. QNX при этом не анализирует содержание сообщения. Передаваемые данные понятны только отправителю и получателю и никому более.
Примитивы передачи сообщений. Для непосредственной связи друг с другом взаимодействующие процессы используют следующие функции языка программирования Си:
Функция языка Си: | Назначение: |
Send() | посылка сообщений |
Receive() | получение сообщений |
Reply() | ответ процессу, пославшему сообщение |
Эти функции могут быть использованы как для связи между процессами на одном компьютере, так и для связи между процессами на разных узлах сети. Однако далеко не всегда возникает необходимость использовать функции Send(), Receive() и Reply() в явном виде. Библиотека функций языка Си в QNX построена на основе использования сообщений – в результате, когда процесс использует стандартные механизмы передачи данных, он косвенным образом использует передачу сообщений.
Системные и пользовательские процессы.Системные процессы не имеют какого-либо скрытого или особого интерфейса, недоступного пользовательским процессам. За счет такой системной архитектуры QNX обладает уникальной наращиваемостью. Так как большинство услуг ОС предоставляются стандартными процессами QNX, то расширение ОС требует написания новой программы, обеспечивающей новую услугу. Граница между ОС и прикладной программой может быть очень размыта. Единственный критерий, по которому можно отличить прикладные процессы и системные сервисные процессы, состоит в том, что процесс ОС управляет каким-либо ресурсом в интересах прикладного процесса.
Как сервер файловой системы принимает запросы (в QNX реализованные через механизм сообщений) на открытие файлов и запись или чтение данных, так это делает и сервер базы данных. Оба сервера обеспечивают доступ к ресурсу посредством запросов. Оба они являются независимыми процессами, которые могут быть написаны пользователем и запускаться по мере необходимости. Сервер базы данных рассматривается как процесс в одном случае и как приложение в другом. Создание и выполнение таких процессов в QNX не требует изменений в стандартных компонентах ОС.
Драйверы устройств – это процессы, которые являются посредниками между ОС и устройствами и избавляют ОС от необходимости иметь дело с особенностями конкретных устройств. Добавление нового драйвера в QNX не влияет на другие части ОС. После запуска и завершения процедуры инициализации, драйвер может выбрать один из двух вариантов поведения:
· стать расширением определенного системного процесса;
· продолжать выполнение как независимый процесс.
Связь между процессами (IPC). Для многозадачной СРВ ОС должна предоставить механизмы для общения друг с другом. Связь между процессами (Interprocess communication, IPC) является ключом к разработке приложений как совокупности процессов, в которых каждый процесс выполняет отведенную ему задачу. QNX предоставляет мощный набор возможностей IPC, которые облегчают разработку приложений, состоящих из взаимодействующих процессов.
Передача сообщений.QNX первая ОС своего класса, которая использовала передачу сообщений в качестве основного способа IPC. Сообщения в QNX – это последовательность байт, передаваемых от одного процесса другому. ОС не пытается анализировать содержание сообщения – передаваемые данные имеют смысл только для отправителя и получателя. Передача сообщения позволяет не только обмениваться данными, но и является способом синхронизации выполнения нескольких процессов. Когда они посылают, получают или отвечают на сообщения, процессы претерпевают различные "изменения состояния", которые влияют на то, когда и как долго они могут выполняться. Зная состояния и приоритеты процессов, ядро организует их диспетчеризацию таким образом, чтобы максимально эффективно использовать ресурсы центрального процессора (ЦП).
QNX как сеть
В простейшем случае локальная сеть обеспечивает разделяемый доступ к файлам и периферийным устройствам для нескольких соединенных между собой компьютеров. QNX объединяет всю сеть в единый однородный набор ресурсов. Любой процесс на любом компьютере в сети может использовать любой ресурс на любом другом компьютере. С точки зрения приложений не существует никакой разницы между местным или удаленным ресурсом, и использование удаленных ресурсов не требует каких-либо специальных средств. Чтобы определить, находится ресурс (файл, устройство) на локальном компьютере или на другом узле сети, в программу потребуется включить специальный дополнительный код.
Пользователи имеют доступ к файлам по всей сети, используют любое периферийное устройство, запускают программы на любом компьютере сети (при условии, что они имеют надлежащие полномочия). Связь между процессами осуществляется единообразно, независимо от их местоположения в сети.
Модель единого компьютера. QNX изначально проектировался как сетевая ОС. QNX обеспечивает быструю реакцию системы, т.к. соответствующий объем вычислительных ресурсов может быть выделен на каждом узле в соответствии с потребностями каждого пользователя.
В условиях управления производством используются программируемые контроллеры и другие устройства ввода/вывода, а также комплексы программ, работающие в режиме реального времени, которым может потребоваться больше ресурсов, чем другим менее ответственным приложениям. Сеть QNX достаточно "отзывчива", чтобы поддерживать одновременно оба этих типа приложений, QNX позволяет сфокусировать вычислительную мощность системы на производственном оборудовании (там, где это необходимо), в то же время, не жертвуя интерфейсом пользователя.
Гибкая поддержка сети. QNX сеть строится с использованием различного оборудования и стандартных промышленных протоколов. В силу своей полной прозрачности для прикладных программ и пользователей, новые сетевые архитектуры могут быть внедрены в любое время, не разрушая ОС. Каждому узлу QNX сети присваивается уникальный номер, который становится его идентификатором. Этот номер также единственный видимый признак того, функционирует QNX как сеть или как однопроцессорная ОС.
Рис. 2.23. Сервер получил сообщение от клиента A и клиента B (но еще не ответил им). Сообщения от клиентов C, D, E еще не получены |
Дата добавления: 2016-04-06; просмотров: 1629;