- •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. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
177 |
Рис. 8.13. Пример группировки по взаимному исключению:
б– проектная модель (диаграмма параллельной кооперации)
8.7.Пересмотр проекта путем инверсии задач
Идея инверсии задач впервые была сформулирована в методе структурного программирования Джексона и в системе разработки Джексона. Такая инверсия способствует уменьшению числа задач в системе. В предельном случае параллельное решение можно вообще свести к последовательному.
Критерии инверсии задач применяются для объединения задач с целью сокращения накладных расходов на организацию многозадач- ности. На начальной стадии их используют тогда, когда вероятность высоких накладных расходов очевидна. Если же такая опасность осознана позже, то к этому вопросу допустимо вернуться на стадии пересмотра проекта, в частности если анализ производительности проекта показал, что затраты на многозадачность чрезмерно высоки.
Ниже описываются три вида инверсии задач: инверсия несколь- ких экземпляров задачи, инверсия последовательных задач и темпо- ральная инверсия.
8.7.1. Инверсия нескольких экземпляров задачи. Накладные рас-
ходы на создание отдельной задачи для каждого объекта могут ока- заться слишком высокими.
С помощью инверсии нескольких экземпляров задачи все одно-
типные задачи заменяются одной, выполняющей те же функции. На-
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
178 |
пример, все однотипные управляющие объекты можно отобразить на одну и ту же задачу. При этом информация о состоянии каждого объ- екта сохраняется в отдельном пассивном сущностном объекте.
В качестве примера рассмотрим систему управления лифтами. Здесь каждый объект Управление Лифтом отображается на от- дельную задачу с тем же именем. Если накладные расходы все же оказываются слишком высокими, в системе разрешается оставить
только одну задачу Управление Лифтом и завести для каждого лифта свой пассивный сущностный объект Информация о Состоянии Лиф- та (рис.8.14). В таком случае главной процедурой задачи будет дис- петчер, который считывает входную информацию для задачи, решает, для какого лифта она предназначена, и использует соответствующий этому лифту сущностный объект.
Рис.8.14. Пример инверсии нескольких экземпляров задачи
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
179 |
8.7.2.Инверсия последовательных задач. Инверсия последова-
тельных задач применяется главным образом тогда, когда между
двумя или более задачами осуществляется сильно связанный обмен сообщениями. Задачи объединяются так, что задача-производитель вызывает операцию задачи-потребителя, а не посылает ей сообщение.
Это называется инверсией потребителя по отношению к производи-
телю. Каждый тип сообщения, который может послать производи- тель, подменяется операцией потребителя. Параметры сообщения становятся параметрами вызова.
В качестве примера инверсии последовательных задач рассмот- рим последовательность из трех задач в системе круиз-контроля. За- дача Круиз-Контроль посылает сообщение команда Круиз-Контроля задаче Корректировка Скорости, которая, в свою очередь, посылает сообщение значение Дросселя задаче Интерфейс Дросселя. Все со-
общения сильно связаны, ни одно из них не требует ответа, поэтому можно применить инверсию для группировки трех задач в одну – Ин-
вертированный Круиз-Контроль (рис.8.15).
8.7.3.Темпоральная инверсия задач. При темпоральной инвер-
сии, которая напоминает слабые формы темпоральной группировки, две или более периодические задач – внутренние, ввода/вывода или входящие в темпоральную группу – объединяются. В результирую- щей задаче есть процедура диспетчеризации, управляемая событиями таймера, которая решает, когда вызвать ту или иную операцию.
С точки зрения проектирования группировать функционально не связанные темпоральные объекты в одну задачу нежелательно. Но темпоральная инверсия допускается в целях оптимизации, когда за- траты на организацию многозадачности становятся слишком высоки- ми.
Рассмотрим пример темпоральной инверсии задач. На рис.8.16 показано, как две периодические задачи, уже подвергнутые темпо- ральной группировке, – Автодатчики и Калибровка – из соображе- ний оптимизации объединяются в инвертированную задачу Периоди- чески. Эта задача время от времени активизируется событием таймера
иопрашивает состояние датчиков (педали тормоза и двигателя), а также проверяет калибровку, но с разной частотой. При каждом вы- зове она решает, что следует сделать: прочитать входную информа- цию от датчиков, калибровочную информацию или и то, и другое. В первом случае, если состояние изменилось, выводится сообщение за-
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
180 |
прос Круиз-Контролю. Во втором обновляется объект Калибровочная Константа.
Рис.8.15. Пример инверсии последовательных задач:
а – обмен сообщениями между задачами; б – инвертированная задача
www.pdffactory.com