
- •Введение
- •Глава 1. Основные принципы организации операционных систем реального времени
- •1.1. Общие положения и определения
- •1.2. Отличие механизма современных осрв
- •1.3. Параметры осрв
- •1.4. Программное обеспечение многозадачности ос
- •1.5. Архитектура осрв. Классы осрв
- •1.6. Синхронизация задач
- •1.7. Базовые понятия программного обеспечения реального времени
- •1.8. Асинхронный обмен данными
- •1.9. Надежность систем реального времени
- •1.10. Планирование задач
- •1.11. Планирование периодических процессов
- •1.12. Взаимоблокировки
- •Контрольные вопросы
- •Глава 2. Типовые операционные системы реального времени
- •2.1. Обзор систем реального времени
- •2.2. Операционная система Windows nt
- •2.2.1. Ужесточение требований к ос 90-х годов
- •2.2.2. Операционные системы реального времени и Windows nt
- •2.2.3. Процессы и потоки nt
- •2.2.4. Пути расширения реального времени для nt
- •2.2.5. Обработка прерываний и исключений
- •2.2.6. Особенности системы ввода/вывода системы nt
- •2.2.7. Windows nt как операционная система реального времени
- •2.2.8. Расширения Windows nt
- •2.3. Операционная система qnx
- •2.3.1. Общие положения
- •2.3.2. Системная архитектура qnx
- •2.3.3. Qnx как сеть
- •2.3.5. Оконная система Photon microGui
- •2.3.6. Phocus 4 для создания встраиваемых scada
- •2.4. Операционные системы реального времени для встраеваемых систем
- •2.5. Ос рв для встраиваемых модулей от компании Microsoft
- •2.6. Функциональные потребности scada-системы
- •Контрольные вопросы
- •Глава 3. Общий анализ контроллеров
- •3.1. Аппаратное обеспечение
- •3.2. Программирование plc
- •3.3. Выбор контроллерных средств
- •3.4. Классификация современных контроллеров
- •3.5. Взаимодействие компонентов
- •3.6. Проектирование распределенных систем управления
- •3.7. Открытая модульная архитектура контроллеров
- •3.8. Архитектура производственной базы данных реального времени
- •3.9. Эволюция стандарта pci для жестких встраиваемых приложений
- •3.11. Одно- и многоуровневые системы диспетчерского контроля и управления
- •3.12. Технологии и протоколы передачи данных в промышленности: Industrial Ethernet
- •3.13. Обеспечение надежности асу тп с использованием резервированного кольца Turbo Ring
- •3.14. Анализ архитектур контроллеров с параллельной шиной
- •3.15. Повышенные требования к устойчивости функционирования
- •Контрольные вопросы
- •Глава 4. Примеры реализации типовых контроллеров
- •4.1. Промышленные контроллеры для автоматизации технологических процессов
- •4.2. Модули adam-8000 от компании Advantech9 и система программирования adam-winplc7
- •4.3. LabView Real-Time LabView реального времени
- •4.4. Встраиваемые системы и ос для них
- •4.5. Промышленный контроллер р-130isa
- •4.6. Совместное использование hmi и pac
- •4.7. Система Реального Времени cf-mntr
- •4.8. Экономичные контроллеры Pico
- •4.9. RapidIo: технология для приложений реального времени
- •4.10. Trace mode 6 и t-factory 6: обзор исполнительных модулей
- •4.11. Контроллер Crestron cp2e
- •4.12. Асу тп на базе контроллеров micro-pc
- •4.14. Itv ndc-f18 – универсальные контроллеры ndc-f18
- •4.15. Сетевой контроллер компании Lenel для систем контроля доступа
- •4.16. Сетевой контроллер реального времени
- •Контрольные вопросы
- •Глава 5. Мультимедийные системы реального времени
- •5.1. Требования реального времени в системах мультимедиа
- •5.2. Требования к архитектуре мультимедиа-систем
- •5.3. Объединение графического и мультимедийного ядра в систему Freescale
- •5.5. Scsa: архитектура для систем мультимедиа реального времени
- •Контрольные вопросы
- •Заключение
- •Рекомендуемый библиографический список
- •Оглавление
- •Глава 1. Основные принципы организации операционных систем реального времени 6
- •Глава 2. Типовые операционные системы реального времени 55
- •Глава 3. Общий анализ контроллеров 179
- •Глава 4. Примеры реализации типовых контроллеров 236
- •Глава 5. Мультимедийные системы реального времени 292
- •Системы реального времени Программно-технический комплекс
- •346428, Г. Новочеркасск, ул. Просвещения, 132
2.3.2. Системная архитектура qnx
Концепция QNX. Главная обязанность ОС состоит в управлении ресурсами компьютера. Все действия в системе – диспетчеризация прикладных программ, запись файлов на диск, пересылка данных по сети и т.п. – должны выполняться совместно слитно и прозрачно. ОС QNX обеспечивает все неотъемлемые составляющие СРВ: многозадачность, диспетчеризацию программ на основе приоритетов и быстрое переключение контекста. Конфигурация 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 – это последовательность байт, передаваемых от одного процесса другому. ОС не пытается анализировать содержание сообщения – передаваемые данные имеют смысл только для отправителя и получателя. Передача сообщения позволяет не только обмениваться данными, но и является способом синхронизации выполнения нескольких процессов. Когда они посылают, получают или отвечают на сообщения, процессы претерпевают различные "изменения состояния", которые влияют на то, когда и как долго они могут выполняться. Зная состояния и приоритеты процессов, ядро организует их диспетчеризацию таким образом, чтобы максимально эффективно использовать ресурсы центрального процессора (ЦП).