Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций ПСРВ.doc
Скачиваний:
81
Добавлен:
12.02.2016
Размер:
2.73 Mб
Скачать

5. Архитектура ос qnx

В настоящее время многие разработчики операционных систем представляют свой программный продукт как системы реального времени. В такой спорной ситуации только экспериментальная проверка операционных систем по минимальной величине времени реакции на запросы прерываний от событий во внешней среде позволяют выявить настоящие операционные системы реального времени (ОС РВ). Из всех многозадачных ОС только QNX является операционной системой реального времени и это определяется её уникальной архитектурой.

Процесс – это выполняющаяся программа. Процесс (или "задача") включает код и данные программы, а также различную дополнительную информацию – переменные системного окружения и т. п.

Кроме процесса важным понятием является "поток управления" (он же просто "поток", он же "нить", он же thread). Процесс является, по сути дела, контейнером потоков и содержит минимум один поток.

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

На этапе выполнения поток может находиться в одном из трех состояний: исполнение на процессоре (RUNNING), ожидание процессора, или готовность к исполнению (READY) и блоки­ровка в ожидании освобождения некоторого ресурса (название блокированного состояния зависит от того, в ожидании какого ресурса заблокирован поток). Есть еще состояние DEAD (в UNIX его называют ZOMBIE) — когда физически поток Уничтожен, но администратор процессов еще сохраняет некоторые структуры данных с информацией о нем, чтобы передать родительскому потоку код завершения.

Потоки весьма полезны в ряде случаев, поэтому поддержка потоков– обязательное свойство POSIX-совместимых ОС.

Обычно нити используют в следующих ситуациях:

 для распараллеливания задачи на многопроцессорных ЭВМ;

 для более эффективного использования процессора (например, когда одна нить ожидает пользовательского ввода, другая может выполнять расчеты);

 для облегчения совместного использования данных (все нити процесса имеют свободный доступ к данным процесса).

Архитектура — это то, чем операционные системы семейста QNX, несмотря на большое внешнее сходство, отличаются от операционных систем семейства UNIX.

Концептуально архитектура QNX проста – она основана на двух фундаментальных понятиях:

 микроядро;

 межзадачное взаимодействие на основе сообщений.

Центральным понятием в QNX является микроядро (microkernel), которое назывется Neutrino (это название теперь распростаняется на всю ОС). Грубо говоря, микроядро почти ничего само не делает, являясь своего рода коммутирующим элементом, к которому с помощью дополнительных программных модулей добавляется та или иная функциональность. Другими словами, микроядро лишь обеспечивает возможность внешним процессам добавлять функциональность ОС.

Итак, микроядро Neutrino – главный и обязательный компонент ОСРВ QNX обеспечивает следующий минимально необходимый набор системных функций:.

 создание и уничтожение потоков;

 диспетчеризация потоков;

 поддержка механизмов синхронизации нитей;.

 поддержка механизмов межзадачного взаимодействия (IPC);

поддержка механизма обработки прерываний;

 поддержка часов и таймеров.

Больше Neutrino не делает ничего. Как видно из приведенного списка функций микроядро не управляет процессами, а работает только с потоками и ничего не знает о процессах.

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

Микроядро QNX Neutrino скомпоновано с Администратором процессов (Process Manager) в единый модуль proento — главный (и единственный безусловно необходимый для работы системы) компонент. Следует заметить, что существуют различные дополнительные варианты модуля proеnto:

  • procnto-smp — вариант модуля procnto с поддержкой симметричной многопроцессорности (входит в SMP TDK);

  • procnto-instr — вариант модуля procnto, оборудованный средствами трассировки событий,

  • procnto-smp-instr — сами догадайтесь, что это за модуль и для чего он предназначен.

Для разных процессоров, естественно существуют свои версии.

Администратор процессов выполняет следующие функции:

       управление процессами;

       управление механизмами защиты памяти;

       поддержка механизма разделяемой памяти и механизмов межпроцессного взаимодействия;

       управление пространством имен путей.

Переключение контекста между нитями в одном процессе происходит без участия администратора процессов, а - между нитями в разных процессах - с участием администратора процессов.

Вся остальная функциональность QNX обеспечивается специальными процессами, называемыми администраторами ресурсов (Resource Manager) и системными прикладными процессами. С помощью администраторов ресурсов, например, реализуется слаженное взаимодействие процессов с помощью механизма сообщений, доступ к устройствам внешней памяти (администраторы различных файловых систем) или сети (администратор сети qnet, администратор TCP/IP) . В качестве системного прикладного процесса выступает, например, процесс, инициируемый запуском командного интерпретатора shell.

Таким образом, в общем случае QNX Neutrino представляет собой группу процессов, работающих в изолированных адресных пространствах, взаимодействующих через микроядро и включающих:

  • Администратор процессов, скомпонованный с микроядром;

  • администраторы ресурсов;

  • системные процессы

  • прикладные процессы.