И. Соммервилл - Инженерия программного обеспечения (1133538), страница 69
Текст из файла (страница 69)
4. Разработка алгоритмов, выполняющих необходимые вычисления для всех входных и ответных сигналов. Чтобы получить представление об объемах вычислительных и временнзж затрат в процессе обработки сигналов, разработка алгоритмов обычно проводится на ранних этапах процесса проектирования. 5.
Разработка временнзго графика работы системы. Б. Сборка системы, работающей под управлением диспетчера — управляющей про. граммы. Конечно, описанный процесс проектирования является итерационным. Как только определена структура вычислительных процессов и временной график работы, необходимо сделать всесторонний анализ и провести имитацию работы системы, чтобы удостовериться в том, что она удовлетворяет временным ограничениям. В результате анализа может обнаружиться, что система не отвечает временным требованиям.
В таком случае для повышения производительности системы необходимо изменить структуру вычислительных процессов, алгоритм управления, управляющую программу или все эти компоненты вместе. 13. Проектирование систем реального времени 2б9 В системах реального времени сложно анализировать временные зависимости. Из-эа непредсказуемой природы апериодических входных сигналов разработчики вынуждены делать некоторые предварительные предположения относительно вероятности появле. кий апернодических сигналов.
Сделанные предположения мо!уг оказаться неверными, и после разработки системы ее показатели производительности не будут удовлетворять временным требованиям. В работах [86, б2) обсуждаются общие проблемы проверки временньж параметров систем. В книге [132) всесторонне рассмотрены методы, используе! l ! мыс при анализе производительности систем реального времени. !н! Все процессы в системе реального времени должны быть скоординированы. Механизм я!я координации процессов обеспечивает исключение конфликтов при использовании общих ресурсов. Когда один процесс использует общий ресурс (или объект), другие процессы не должны иметь доступ к этому ресурсу.
К механизмам, обеспечивающим взаимное исключение процессов, относятся семафоры [97), мониторы [182] и метод критических областей [59]. Здесь я не буду рассматривать эти механизмы, так как все они хорошо документированы в описаниях операционных систем [332, 318].
13.1.1. Моделирование систем реального времени Системы реального времени должны реагировать на события, происходящие через нерегулярные интервалы времени. Такие события (или входные сигналы) часто приводят к переходу системы из одного состояния в другое.
Поэтому одним из способов описания систем реального времени может быть модель конечного автомата и соответствующая диаграмма состояний, рассмотренные в главе 7. В модели конечного автомата в каждый момент времени система находится в одном из своих состояний. Получив входной сигнал, она переходит в другое состояние. Например, система управления клапаном может перейти из состояния "Клапан открыт" в состояние "Клапан закрыт" после получения определенной команды оператора (входной сигнал). Описанный выше подход к моделированию системы я проиллюстрирую на рассмотренном в главе 7 примере микроволновой печи.
На рис. 13З показана модель конечного автомата для обычной микроволновой печи, оборудованной кнопками включения питания, таймера и запуска системы. Состояния системы обозначены скругленными прямоугольниками, входные сигналы, вызывающие переход системы из одного состояния в другое, показаны стрелками. Надиаграмме показаны все состояния печи, также названыдействия исполнительных механизмов системы или действия по выводу информации.
Просматривать последовательность работы системы нужно слева направо. В началь. ном состоянии Ожидание, пользователь может выбрать режим полной или половинной мощности. Следующее состояние наступает при нажатии на кнопку таймера и установке времени работы печи.
Если дверь печи закрыта, система переходит в состояние Действие. В этом состоянии идет процесс приготовления пищи, после завершения которого печь возвращается в состояние Ожидание. Модели конечного автомата — хороший способ представления структуры систем реального времени. Поэтому такие модели являются неотъемлемой частью методов проектирования систем реального времени [338]. Метод Харела (Нате!) [115), базирующийся на диазрдммах сэсэыякяй, направлен на решение проблемы внутренней сложности моделей конечного автомата. Диаграмма состояний структурирует модели таким образом, что группы состояния можно было бы рассматривать как единые сущности.
Кроме того, с помощью диаграмм состояний параллельные системы можно представить в виде модели состояний. Модели состояний поддерживаются также ()МЕ [304, 30э]. В этой книге я также использую систему нотации, принятую в ()М[.. 270 Часть П1. Проектирование Ркс )ЗЗ.
Мадгль хонгчгкмо авоюмалю для них)гоооанооой лечи 13.1.2. Программирование систем реального времени На архитектуру систсмы рояльного врсмснн оказываст влиянис язык програмынрования, который используется для реализации системы. До сих пор жесткие систсмы реального времени часто програмлгируются на ассемблсрньпс языках.
Языки болсс высокого уровня также дают возможность сгснсрировать зффсктивный программный код. Напринср, язык С позволяет писать весьма зффсктивныс програмиы. Однако в нсм нот конструкций, поддерживающих параллельность процессов и управление совмсстно испольэусмыми рссурсамп. Кроме того, программы на С часто сложны для понимания.
Язык Аба изначально разрабатывался для реализации встроенных систем, а потому располагает такнии средствами, как управлснис процессами, искзючсния н правила прод. ставлсния. Его средство рандгоу (гспдехчопз) — отличный механизм для синхронизации задач (процсссов) (бЗ, 24, 4ч). К сожалению, порвав версия языка Аг)а (Аг)а 83) оказалась нспригодной для рсалнэации жсстких систсм реального времснн. В ней отсутствовали сред. ства, позволяющис установить нрсдсльпыс сроки завсршсния задач, нс было встроенных искчючсний для случая прсвышсиия предельных сроков н предлагался строгий алгоритм обслуживания очсрслн "псрвым пришел — первым вышел". При пересмотре стандартов языка Аг)а (23) глзвнос вннмапнс уделялось именно этим момснтам. В псрсслютрснной версии языка поддсрживаются защищенные типы, что позволило более просто рсализовывать эащищснныс разделяемые структуры данных и обеспечивать более полный контроль прн выполнснин н синхронизации задач. Однако при программировании систем 1$.
Проектирование систем реального времени 271 реального времени улучшенная версия языка Аг(а всетаки не обеспечивает достаточного контроля над жесткими системами реального времени. Первые версии языка ]ага разрабатывались для создания небольших встраиваемых систем, таких, например, как контроллеры устройств и приборов. Разработчики ]ага включили несколько средств для поддержки параллельных процессов в виде параллельных объектов (потоков) и синхронизированных методов. Но поскольку в подобных снс. темах нет строгих временных ограничений, то и в языке ]ага ие предусмотрены средства, позволяющие управлять планированием потоков или запускать потоки в конкретные мо.
с менты времени. '! Поэтому ]ака не подходит для программирования жестких систем реального времени нли систем, в которых имеется строгий временной график процессов. Перечислим основные проблемы]ага как языка программирования систем реального времени.
1. Нельзя указать время, в течение которого должен выполняться поток. 2. Неконтролируем процесс очистки палшти — он люжст начатьсл в любое время. По. этому невозлюжно предсказать поведение потоков во времени. 3. Нельзя определить размеры очереди, связанной с разделяемыми ресурсами. 4. Реализация виртуальной машины ]ага отличается для разных компьютеров. 5. В языке нет средств для детазьного анализа распределения времени работы процессоров.
В настоящее время ведется работа по решению некоторых из этих проблем и форми. руется новая версия языка)ага для программирования систем реального времени [25б]. Однако не совсем понятно, каким образом эту версию можно отделить от лежащей в ес основе виртуальной мацкины ]ага: свойство переносимости языка всегда конфликтовало с характеристиками режима реального времени. 13.2. Управляющие программы Управляющая программа (диспетчер) системы реального времени является аналогом операционной системы компьютера. Она управляет процессами и распределением ресурсов в системах реального времени, запускает н останавливает соответствующие процессы для обработки входных сигналов и распределяет ресурсы памяти и процессора. Однако обычно в управляющих программах отсутствуют более сложные средства, присупп1е опс.
рацнонным системам, например средства управления файлами. В работе [17] представлен полный обзор средств, необходимых управляющим программам систем реального времени. Данная тема обсужлается в монографии [Вб], где также кратко рассмотрены коммерческие разработки > правляющих программ для систем реального времени. Несмотря на то что на рынке программных пролуктов существует не. сколько управляющих программ систем реального времени, их часто проектируют самостоятельно как части систем из.за специальных требований, предъявляемых к конкретным системам реального времени.
Компоненты управляющей программы (рис. 15.4) зависят от размеров н сложности проектируемой системы реального времени. Обычно управллющие программы, за исключением самых простых, состоят из следующих компонентов. 1. Часы ргпаанто времени периодически предоставляют информацию для планирования процессов.
2. Оэзлбзэюик я)зсрмэанкк управляет апериодическими запросами к сервисам. 272 Часть Ш. Проектирование 8. Пллнировгвик просматривает список процессов, которые назначены на выполнение, и выбирает один из них. 4. Админипврлгяйв ресурсов, получив процесс, запланированный на выполнение, выде- ляет необходимые ресурсы памяти и процессора.