- •2. Ядра и операционные системы реального времени
- •2.1. Задачи, процессы, потоки
- •2.2. Основные свойства задач
- •2.3. Планирование задач
- •2.4. Синхронизация задач
- •2.5. Тестирование
- •2.6. Можно ли обойтись без ОС РВ?
- •3. Обзор некоторых операционных систем реального времени
- •3.1. Linux реального времени
- •3.2. Операционные системы реального времени и Windows
- •3.3. Операционная система QNX
- •3.4. Проект Neutrino
- •4.1. Организация промышленных систем
- •4.2. Аппаратная архитектура
- •4.3. Стандарты шин
- •4.4. Технологии VME и PCI
- •4.5. Мезонинные технологии
- •4.6. Полевые системы
- •4.7. Программное обеспечение промышленных систем
- •4.8. Управление производством
- •Часть 2. ПРОЕКТИРОВАНИЕ СРВ
- •5. UML проектирование систем реального времени
- •5.1. Объектно-ориентированные методы и UML
- •5.2. Метод и нотация
- •5.3. Системы и приложения реального времени
- •6. Обзор нотации UML
- •6.1. Диаграммы UML
- •6.2. Диаграммы прецедентов
- •6.3. Нотация UML для классов и объектов
- •6.4. Диаграммы классов
- •6.5. Диаграммы взаимодействия
- •6.6. Диаграммы состояний
- •6.7. Пакеты
- •6.8. Диаграммы параллельной кооперации
- •6.9. Диаграммы развертывания
- •6.10. Механизмы расширения UML
- •7.1. Среды для параллельной обработки
- •7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах
- •7.3. Планирование задач
- •7.4. Вопросы ввода/вывода в операционной системе
- •7.6. Технология World Wide Web
- •7.7. Сервисы распределенных операционных систем
- •7.8. ПО промежуточного слоя
- •7.9. Стандарт CORBA
- •7.10. Другие компонентные технологии
- •7.11. Системы обработки транзакций
- •8. Разбиение на задачи
- •8.1. Вопросы разбиения на параллельные задачи
- •8.2. Категории критериев разбиения на задачи
- •8.3. Критерии выделения задач ввода/вывода
- •8.4. Критерии выделения внутренних задач
- •8.5. Критерии назначения приоритетов задачам
- •8.6. Критерии группировки задач
- •8.7. Пересмотр проекта путем инверсии задач
- •8.8. Разработка архитектуры задач
- •8.9. Коммуникации между задачами и синхронизация
- •8.10. Спецификация поведения задачи
- •9. Проектирование классов
- •9.1. Проектирование классов, скрывающих информацию
- •9.2. Проектирование операций классов
- •9.3. Классы абстрагирования данных
- •9.4. Классы интерфейса устройства
- •9.5. Классы, зависящие от состояния
- •9.6. Классы, скрывающие алгоритмы
- •9.7. Классы интерфейса пользователя
- •9.10. Внутренние программные классы
- •9.11. Применение наследования при проектировании
- •9.12. Примеры наследования
- •9.13. Спецификация интерфейса класса
- •10. Детальное проектирование ПО
- •10.1. Проектирование составных задач
- •10.2. Синхронизация доступа к классам
- •10.4. Логика упорядочения событий
- •11.1. Теория планирования в реальном времени
- •11.2. Развитие теории планирования в реальном времени
- •11.5. Пример анализа производительности с помощью анализа последовательности событий
- •11.6. Пример анализа производительности с применением теории планирования в реальном времени
- •11.8. Пересмотр проекта
- •11.9. Оценка и измерение параметров производительности
- •12. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
52 |
Простое решение здесь состоит в том, что NT выполняется на одной группе процессоров, а часть реального времени – на другой. Возможно применение архитектур параллельной шины с VMEbus, PCI, PMC или архитектур последовательной шины с Ethernet. Если необходимо, подсистемы могут быть связаны механизмом IPC и про- цедурами удаленного вызова.
Преимущества такого решения:
§нет модификаций каждой ОС;
§можно применять в больших сложных системах;
§для каждой подсистемы можно выбрать свою, наиболее под- ходящую ОС РВ;
§можно использовать имеющиеся среды разработки. Недостатки:
§высокая стоимость;
§поведение в реальном времени зависит от поведения канала межпроцессорной связи. Поведение прерываний на шине в таких структурах предсказуемо лишь при хорошей организа- ции;
§среды разработки относятся к разным мирам.
3.3.Операционная система QNX
В последнее время система QNX быстро развивалась, превраща-
ясь из узкоспециализированной ОС для систем реального времени в более-менее универсальную систему [3]. Однако ее разработчики от- казались от попыток "добавить еще одну функцию" в QNX, поскольку этот путь ведет в тупик.
QNX относится к категории Unix-подобных систем, несмотря на имеющиеся фундаментальные различия. Поэтому лучший способ по- нять особенности каждой системы – сравнить их.
С точки зрения пользовательского интерфейса и API, эта ОС очень похожа на Unix. Если вы знакомы с Unix на уровне пользовате- ля, то вероятно сможете работать с QNX без проблем – в ней присут-
ствует практически весь набор стандартных утилит и сохраняется большая часть семантики. Конечно, есть и X Window, равно как и TCP/IP. Если вы программист, знающий Unix, то для вас не составит
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
53 |
большого труда перенести собственные или GNU/Free-приложения в QNX. Например, Apache и Mosaic хорошо демонстрируют степень со- вместимости API.
Однако QNX – это не версия Unix. Она была разработана с нуля
ипостроена на совершенно других архитектурных принципах, но с учетом группы стандартов POSIX, которые возникли в результате
обобщения существующей практики в различных версиях системы Unix. Разработка ведется канадской фирмой QNX Software Systems Limited (далее – QSSL).
QNX – это первая коммерческая ОС, построенная на принципах микроядра и обмена сообщениями. Система реализована в виде сово- купности независимых (но взаимодействующих через обмен сообще- ниями) процессов различного уровня (менеджеры и драйверы), каж- дый из которых реализует определенный вид сервиса. Эти идеи обес- печили ряд важнейших преимуществ.
Предсказуемость, означающую ее применимость к задачам же- сткого реального времени. Ни одна версия Unix не может достичь по- добного качества, поскольку нереентрабельный код ядра слишком велик. Любой системный вызов в Unix может привести к непредска- зуемой задержке. То же самое относится к Windows NT, где реальное время заканчивается между ISR (первичный обработчик прерывания)
иDPC (вызов отложенной процедуры).
Масштабируемость и эффективность, достигаемую оптималь-
ным использованием ресурсов и означающую ее применимость для встроенных (embedded) систем. В каталоге /dev нет огромной кучи файлов, соответствующих ненужным драйверам. Драйверы и менед- жеры можно запускать просто из командной строки. И удалять (кро- ме файловой системы J) динамически. Можно иметь только тот сер- вис или те модули, которые реально нужны, причем это не требует серьезных усилий и не порождает проблемы.
Расширяемость и надежность одновременно, поскольку напи-
санный вами драйвер не нужно компилировать в ядро, рискуя вы- звать нестабильность системы. Менеджеры ресурсов (сервис логиче- ского уровня) работают в кольце 3, при этом можно добавлять свои, не опасаясь за систему. Драйверы работают в кольце 1 и могут вы- звать проблемы, но не фатального характера. Кроме того, их доста- точно просто писать и отлаживать. Например, постоянная головная боль разработчиков драйверов для Linux – получение физически не-
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
54 |
прерывного блока памяти для DMA-устройств – устраняется просто и элегантно, через функцию mmap().
Быстрый сетевой протокол FLEET, прозрачный для обмена со-
общениями, автоматически обеспечивающий отказоустойчивость,
балансирование нагрузки и маршрутизацию между альтернативными путями доступа. Он не так универсален, как TCP/IP, но гораздо про- ще в использовании и эффективнее.
Богатый выбор графических подсистем, включающий QNX Windows, X11R5 и Photon, что позволяет разработчикам выбирать ту, которая лучше подходит для их целей. Для типичных областей при- менения QNX традиционная система X11 слишком тяжеловесна, но система Photon, построенная на тех же принципах модульности, что и сама QNX, позволяет получить полнофункциональный GUI (типа Motif 2.0), работающий вместе с POSIX-совместимой ОС всего в 4 Мбайт памяти.
Конечно, любая медаль имеет оборотную сторону. Поскольку QNX не базируется на ядре Unix, не следует ожидать бинарной со- вместимости. Существуют также некоторые ограничения, связанные с ориентацией системы на рынок встроенных систем реального вре- мени. Вот важнейшие из них:
§нет поддержки SMP;
§нет своппинга виртуальной памяти на диск;
§неэффективная и нестандартная поддержка нитей (threads);
§нет поддержки Java (как следствие предыдущего пункта);
§нет поддержки отображения файлов в память;
§многочисленные ограничения файловой системы;
§нет поддержки Unix-domain sockets;
§слабые средства разграничения и контроля доступа пользова- телей;
§отсутствие средств безопасности в рамках собственного сете- вого протокола.
Хотя этот список содержит достаточно важные пункты, не все они являются критичными для рынка QNX, поскольку она не проек- тировалась для конкуренции с Unix. Но, что гораздо более важно, не- которые пункты этого списка, а также другие ограничения QNX, яв-
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
55 |
ляются серьезными недостатками с точки зрения теории систем ре- ального времени. И это притом, что QNX является лидером этого рынка!
Что же это за недостатки? Чтобы понять, нужно определить тре- бования к ОС, предназначенной для реализации систем реального времени. Именно этот смысл я вкладываю в общеупотребительный термин "ОС реального времени" (Real Time OS). Использование ка- кой-либо ОС еще не гарантирует получения результата. Можно взять любую ОС такого типа и создать на ее базе некую систему, предна- значенную для работы в реальном времени (далее – "система реаль- ного времени"), но не способную на это фактически. Чем отличается система реального времени? Есть два основных требования.
§Система должна реагировать на события, успевая обработать
их за фиксированное время или к фиксированному моменту времени (далее - "временные рамки"). Для выполнения этого требования система должна обладать предсказуемостью, ко- торую не следует путать с производительностью. Никакой процессор не сделает Windows предсказуемой.
§Система должна обладать способностью к параллельной об- работке нескольких событий. Если эти события наступают одновременно, система должна успеть обработать всех их в соответствующих каждому из них временных рамках, незави- симо от количества, порядка поступления и соотношения их временных рамок.
Для выполнения этого требования система должна обладать ес- тественным параллелизмом. Практически это означает, что она долж- на поддерживать вытесняющую многозадачность, основанную на приоритетах, а также быть способной использовать несколько про- цессоров одновременно.
Однако можно взять ту или иную ОС и на ее основе создать сис- тему реального времени. При условии, что такая ОС отвечает по крайней мере следующим требованиям.
1.ОС должна поддерживать вытесняющую многопоточность (preemptive multi-threading) и мультипроцессорные архитектуры.
2.Аппаратная архитектура должна поддерживать несколько уровней прерываний (interrupt levels), а ОС должна обеспечивать вы- теснение (preemption) обработчиков прерываний.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
56 |
3.Каждая нить управления (thread) должна иметь способ выра- жения собственной важности. В идеале планировщик должен предос- тавлять процессор той нити, у которой осталось меньше всего време- ни до исчерпания своих временных рамок (алгоритм, известный как EDF - Earliest Deadline First). Но учитывая сложность реализации та- кой схемы, можно ограничиться наличием приоритетов у нитей, при условии поддержки достаточно большого количества уровней при- оритетов.
4.ОС должна обеспечивать предсказуемые механизмы для син- хронизации между нитями и взаимодействия процессов, разрешаю- щие проблему "инверсии приоритетов". Это означает, что как при пе- редаче данных, так и при синхронизации нитей должно обеспечи- ваться "наследование приоритетов" (или эквивалентный механизм).
5.Поведение самой ОС после системных вызовов и наступления событий должно быть предсказуемо и известно заранее. Это означает, что разработчики ОС должны специфицировать такие временные ха- рактеристики, как "задержка обработки прерывания" (interrupt latency), максимальное время маскировки прерываний, а также мак- симальное время исполнения всех системных вызовов.
6.ОС должна быть способна работать в ограниченных ресурсах, особенно это касается оперативной памяти.
7.Стоимость системы при массовых тиражах должна быть дос- таточно низкой.
8.ОС должна обеспечивать API и "нижележащий" сервис, соот- ветствующий по структуре и реализации требованиям систем реаль- ного времени.
Немногие ОС способны выполнить хотя бы часть этих требова- ний, хотя не все из них одинаково важны. Например, Windows NT аб- солютно не соответствует критическим требованиям 2 и 4 и весьма слабо – условимя, изложенным в п.п. 3, 5, 6, 7 и 8. В свою очередь за- метим, что QNX так же не вполне отвечает всем требованиям. В част- ности, она имеет следующие серьезные недостатки:
§неадекватная поддержка нитей и отсутствие поддержки сим- метричных мультипроцессорных архитектур (SMP);
§ограниченное количество уровней прерываний (32);
§отсутствие поддержки "наследования приоритетов" для меха- низмов синхронизации (семафоров);
www.pdffactory.com