- •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. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
228 |
Масла должен предоставить сам. Для нее требуется указать расстоя- ние, после которого масло надо менять (скажем, каждые 5 000км), и сообщение, выводимое, когда пробег с момента последней замены превысил заданный порог. Нужно также задать операцию вывести- СообщениеО ЗаменеМасла, которая вызывается для объекта Интер- фейс Индикатора ТО. Помимо этого, операция проверить вызывает
операцию читать объекта Путь для получения текущего полного Пробега. Она вычитает из него значение начального Пробега, чтобы выяснить, не прошла ли машина 5 000 км и не пора ли, следова- тельно, менять масло.
9.13.Спецификация интерфейса класса
Вспецификации интерфейса класса определяется интерфейс скрывающего информацию класса, в том числе его операции. Специ- фикация должна включать:
– описание информации, скрываемой классом, например инкап- сулированную структуру данных (если речь идет о классе абстраги- рования данных) или интерфейс устройства;
– критерий, на основании которого был выделен данный класс;
– предположения, сделанные при специфицировании класса: мо- гут разные задачи получать одновременный доступ к операциям объ- екта этого класса или доступ должен быть строго последовательным;
– предположительные модификации, побуждающие проектиро- вать с учетом возможных изменений;
– суперкласс (если есть);
– унаследованные операции (если есть);
– операции класса. Для каждой операции необходимо опреде-
лить:
§выполняемую функцию;
§предусловие (условие, которое должно выполняться перед вызовом операции);
§постусловие (условие, которое должно выполняться после вызова операции);
§инвариант (условие, которое должно выполняться всегда);
§входные параметры;
§выходные параметры;
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
229 |
§вызываемые операции других классов.
Спецификацию интерфейса класса можно представить в описа- тельной или табличной форме. Ниже приводится пример описатель- ной документации.
9.13.1. Пример спецификации интерфейса класса. Для иллюст-
рации возьмем класс, абстрагирующий данные о датчиках и приводах
(рис.9.12).
Рис.9.12. Пример класса, для которого составляется спецификация интерфейса
Скрывающий информацию класс. Хранилище Показаний Датчиков и Приводов.
Скрываемая информация. Инкапсулирует структуры данных, связанных с датчиками и приводами. Хранит текущие показатели датчиков и приводов.
Критерий выделения класса. Класс абстрагирования данных.
Предположения. Операции могут вызываться одновременно несколькими задачами.
Предположительные модификации. Сейчас поддерживает только булевские датчики и приводы. Возможно расширение для ра- боты с аналоговыми устройствами.
Суперкласс. Нет. Унаследованные операции. Нет.
Предоставляемые операции:
1. читатьДатчик (in идДатчика, out значениеДатчика) Функция. Возвращает текущее значение указанного датчика.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
230 |
Предусловие. Значение датчика ранее было обновлено. Инвариант. Значение датчика не изменяется. Постусловие. Прочитано значение датчика.
Входные параметры. идДатчика. Выходные параметры. значениеДатчика. Вызываемые операции. Нет.
2. обновитьПривод (in идПривода, in значениеПривода) Функция. Обновляет значение указанного привода перед выво-
дом.
Предусловие. Привод существует. Постусловие. Значение привода обновлено.
Входные параметры. идПривода, значениеПривода.
Выходные параметры. Нет. Вызываемые операции. Нет.
3. обновитьДатчик(in идДатчика,in значение Датчика)
Функция. Заменяет значение указанного датчика новым показа- нием, прочитанным с внешнего устройства.
Предусловие. Датчик существует. Постусловие. Значение датчика обновлено.
Входные параметры. идДатчика, значениеДатчика.
Выходные параметры. Нет. Вызываемые операции. Нет.
4.читатьПривод (in идПривода,out значение Привода)
Функция. Читает новое значение привода для вывода во внеш- нюю среду.
Предусловие. Значение привода ранее было обновлено. Инвариант. Значение привода не изменяется. Постусловие. Прочитано значение привода.
Входные параметры. идПривода. Выходные параметры. значениеПривода.
Вызываемые операции. Нет.
www.pdffactory.com