Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2830.Встроенные микропроцессорные системы

..pdf
Скачиваний:
41
Добавлен:
15.11.2022
Размер:
52.65 Mб
Скачать

Сердцевиной любой ОС является ядро (kernel), которое управляет порядком, в котором процессы выполняются, а также тем, какую память используют и как информация передается к периферийным устройствам и сетям через драйверы устройств.

Микроядро (microkernel) – очень маленькая ОС, которая обеспечивает только эти сервисы (или даже подмножество сервисов). ОС могут поддерживать и другие сервисы: виртуальную память, выделение и освобождение памяти, защиту памяти, файловую систему и сервисы для программ, такие как семафоры, мутексы и библиотеки передачи сообщений.

Промежуточное ПО обычно является посредником между приложением и ядром ОС или драйверами устройств.

Основная цель компонентов BSP – это обеспечить уровень абстракции между ОС и драйверами устройств.

На рис. 63 представлены различные уровневые модели встроенных систем, отличающихся стеком программ системного ПО.

2.1. Модель вычислений

При создании прикладного ПО встроенных систем используется метод, основанный на модели (model-based design [2]). Метод состоит из двух этапов. На первом этапе создается модель вычислений (MoC – model of computation) системы, а на втором – разрабатывается ее программная реализация.

Ключевая идея проектирования, основанного на модели, состоит в получении некоторой абстрактной модели проектируемой системы. Свойства системы затем могут быть проанализированы на уровне модели без необходимости получения программного кода. Программный код генерируется только после анализа в деталях поведения модели и ее усовершенствования. Термин проектирования, основанного на модели, точно не определен. Обычно он ассоциируется с моделями систем управления, состоящих из традиционных элементов, таких как интеграторы, дифференциаторы и т.д. Эта точка зрения является ограниченной, так как можно начать разработку с абстрактных моделей и для другого рода систем.

Итак, MoC описывает механизм, предназначенный для выполнения вычислений. В общем случае необходимо представить систему, состоящую из компонентов, взаимодействующих через коммуникаци-

121

онные протоколы. Компоненты и организация вычислений в них – это, в частности, процедуры, процессы, функции, конечные автоматы. Коммуникационные протоколы описывают методы взаимодействия компонентов, такие как асинхронная передача сообщений и рандеву.

Компоненты. Компоненты выполняют вычисления (отображают входную последовательность данных в выходную последовательность данных). Вычисления реализуются на языках программирования. Типичные вычисления содержат итерации. В каждом цикле итерации компоненты получают входные данные, обрабатывают их, генерируют выходные данные.

Связи между компонентами могут быть зафиксированы в виде графа, вершины которого и представляют компоненты. В таких графах к вычислениям относят процессы или задачи и соответственно называют графами задач или сетями процессов. Ребра графа представляют отношения между компонентами. Наиболее очевидным отношением между компонентами является причинная зависимость (вычисления могут быть выполнены только после завершения выполнения других вычислений). Она фиксируется графом зависимости. На рис. 64 приведен пример графа задач, где Т1, Т2, Т3, Т4, Т5 – задачи (Т1, Т2, Т3 являются независимыми). (1,8], например, обозначает, что 8 – время исполнения, а специально помеченные узлы обозначают доступ к ресурсам (ввод/вывод).

Рис. 64. Пример графа зависимости (граф задач)

Модели взаимодействия часто основываются на двух парадигмах: разделяемая память и передача сообщений.

Разделяемая память. В этом случае взаимодействия происходят через доступ всех компонентов к одной и той же памяти. Доступ к разделяемой памяти должен находиться под защитой, за исключением доступа только по чтению. Если выполняется запись, то на это время должен быть гарантирован исключительный доступ компонента к памяти. Сегмент кода программы, выполняющего такой доступ, называют критической сек-

122

цией. Были предложены различные механизмы для гарантированного исключительного доступа, например семафоры. Механизм разделяемой памяти очень быстр, но труднореализуем для микропроцессорных систем, если нетдоступной общей физической памяти.

Передача сообщений. В этом случае передаются и принимаются сообщения. Этот способ легко реализуется, даже если нет доступной общей памяти. Однако передача сообщений происходит медленнее. Рассмотрим различные техники передачи сообщений.

Асинхронная передача сообщений (или взаимодействие без блоки-

ровки). Компоненты взаимодействуют между собой посылкой сообщений через канал, оборудованный буфером для сообщений. Отправителю не надо ждать готовности получателя для приема. Это аналогично отправке обычного или электронного письма. Потенциальная проблема кроется в переполнении буфера сообщений. Существует несколько схем взаимодействия, такие как взаимодействующие конечные автоматы (в языке SDL) и модель потока данных.

Синхронная передача сообщений (или взаимодействие с блокиров-

кой). Компоненты взаимодействуют с помощью немедленных неделимых действий, называемых рандеву. Компонент, достигший точки взаимодействия первым, должен дождаться достижения партнером своей точки взаимодействия. Это аналогично физической встрече людей или телефонным вызовам. Нет риска переполнения, но производительность ниже. Такое взаимодействие включено, например, вязык ADA.

Расширенное рандеву, удаленный вызов. В этом случае отправите-

лю разрешается продолжить работу только после получения подтверждения от приемника. Приемник не должен посылать подтверждение немедленно после приема сообщения. Он может сделать ряд предварительных проверок перед отправкой подтверждения.

Организация вычислений в компонентах

Модель фон Неймана. Эта модель основана на последовательном выполнении цепочек примитивных вычислений.

Модель дискретных событий. События в модели переносят строго упорядоченные штампы времени, показывающие моменты возникновения событий. Симулятор дискретных событий обычно содержит глобальную очередь событий, упорядоченную во времени. Записи очереди обрабатываются в соответствии с этим порядком. Недостаток модели в том, что она полагается на глобальное понятие очереди событий, де-

123

лающей трудным отображение семантики модели на параллельную реализацию. Такую модель поддерживают языки проектирования ап-

паратуры VHDL, SystemC и Verilog.

Машина с конечным числом состояний (FSM, конечный автомат).

Эта модель основана на понятии конечного множества состояний, входов, выходов и на переходах между состояниями. Несколько таких машин могут взаимодействовать между собой, образуя взаимодейст-

вующие машины с конечным числом состояний (CFSM). Дифференциальные уравнения. Дифференциальные уравнения

способны моделировать аналоговые электрические схемы и физические системы. Поэтому они находят применение для моделирования киберфизических систем.

Модель потока данных. В случае если вычисления предпочтительнее представить не как синхронизированные события, а в виде зависимости реакции одних компонентов от реакции других компонентов, то такую модель называют моделью потока данных.

Комбинированные модели. Реальные языки программирования обычно объединяют определенные модели взаимодействия с организацией вычислений в компонентах. Например, SDL объединяет машины с конечным числом состояний с асинхронной передачей сообщений. Языки ADA и CSP объединяют модель фон Неймана с синхронной передачей сообщений.

Каждая из MoC успешна в той или иной прикладной области. Выбор «лучшей» MoC для конкретного приложения может быть очень трудным. Преодолению дилеммы помогаетприменение смешанных MoC.

Средства для ранней стадии проектирования встроенной системы

Самые первые идеи о системе часто фиксируются неформально на естественном языке с помощью бумаги и карандаша. Это является входом в раннюю стадию проектирования. Такие описания обычно используют крайне неформальный стиль и должны быть зафиксированы в машинно-читаемом документе.

Примеры использования (use cases). Для многих приложений целесообразно представлять потенциальные применения проектируемой системы. Такие применения фиксируются как use cases. Use cases описывают возможные применения системы и могут использовать разные способы обозначения. Для поддержки ранних стадий проектирования был разработан стандарт UML (unified modeling language), содержащий

124

стандартизованную форму для use cases [23]. На рис. 65 приведен пример нескольких use cases для устройства «Автоответчик».

Use cases идентифицируют различные классы пользователей и приложений проектируемой системы. Есть возможность зафиксировать на самом высоком уровнепроектирования то, что ожидается от системы.

Рис. 65. Пример use cases

Рис. 66. Пример MSC автоответчика для случая вызова

Диаграмма взаимодействия (MSC – message sequence charts). Это чуть более детальный уровень представления, позволяющий подробно задавать последовательность сообщений между компонентами для реализации некоторого применения проектируемой системы. В MSC одно измерение (вертикальное) используется для представления последовательностей, а другое (горизонтальное) отражает взаимодейст-

125

вие компонентов. MSC описывает частичный порядок между передачами сообщений и показывает возможное поведение проектируемой системы. MSC стандартизовано в UML. На рис. 66 показана MSC одного из use cases автоответчика.

2.2. Автомат с конечным числом состояний

Начальное представление проектируемой системы на более детальном уровне требует более точной модели, основанной на представлении поведения с помощью состояний. Граф переходов, представляющий автомат с конечным числом состояний (FSM), является классическим способом представления состояний. Будем рассматривать детерминированные FSM, в которых в каждый момент активным является только одно состояние. Узлы графа представляют состояния. Ребра представляют переходы между состояниями. Метки ребер представляют события. Предположим, что некоторое состояние FSM активно, происходит событие, которое соответствует одному из исходящих ребер. FSM изменит свое текущее активное состояние на состояние, указанное этим ребром. Если FSM полностью тактируема, то ее называют синхронной. FSM может также генерировать выход.

FSM недостаточны для задания встроенных систем, тат как не моделируют время и не поддерживают совместного поведения нескольких FSM. Поэтому были предложены следующие усовершенствования классических автоматов.

Расширенный конечный автомат (ЕFSM) – автомат, пополненный переменными, которые могут быть прочитаны и записаны как часть перехода между состояниями. Введение переменных решает проблему быстрого увеличения числа состояний классического автомата для моделирования реальных объектов.

Для моделирования времени в ЕFSM ввели действительные переменные, которые моделируют логические часы системы. Переменные времени инициализируются значением 0 при старте системы, а затем синхронно увеличиваются с одной и той же скоростью. Автоматы с такими переменными называют временными автоматами (timed automata ТА). Переменные времени являются элементами охранных условий ребер. Переходы будут выполняться, когда значения часов удовлетворят охранным условиям ребер. Часы могут быть сброшены в

126

0 во время перехода [24]. На рис. 67 приведен пример модели автоответчика в виде временного автомата.

Автоответчик обычно находится в начальном состоянии «Старт». При поступлении вызова часы Х устанавливаются в 0, и выполняется переход в состояние «Ожидание». Если вызываемый абонент поднимает трубку, то происходит разговор до опускания трубки. В противном случае выполняется переход в состояние «Проигрывание текста», если время достигнет значения 4. По завершении проигрывания текста выполняется переход в состояние «Бип-сигнал». Часы Y обеспечивают однократную генерацию бип-сигнала. После бип-сигнала часы Х сбрасываются снова в 0, и автоответчик готов к записи сообщения. Когда время достигает величины 8 или вызывающий абонент замолчал, генерируется следующий однократный бип-сигнал. После второго бипсигнала выполняется переход в состояние «Отключено».

Рис. 67. Модель обслуживания входящих вызовов автоответчиком в виде временного автомата

В этом примере переходы выполняются или под воздействием входов (таких как «Трубка поднята») или так называемых временных ограничений (clock constraints). Временные ограничения описывают переходы, которые могут, но не обязаны быть. Для того чтобы обеспечить реальный переход по этим условиям, дополнительно определяются инварианты местоположения (location invariants). Инварианты местоположения X <= 5, X <= 9 и Y <= 2 используются в примере для того, чтобы переходы выполнялись не позже, чем через время, при котором условия инварианта становятся истинными.

Формально временной автомат определяется следующим образом [24]. Пусть С есть множество действительных неотрицательных переменных, представляющих часы. Пусть Σ есть конечный алфавит возможных входов.

127

Определение. Временное ограничение есть коньюктивная формула элементарных ограничивающих условий в форме

x n или (x y) ◦ n для x, y C, ◦ {≤,<,=,>,≥} и n N.

Пусть B(C) есть множество временных ограничений. Определение. Временной автомат есть кортеж (S, s0, E, I), где S – конечное множество состояний.

s0 – начальное состояние.

E S*B(C)*Σ*2C*S – множество ребер. B(C) представляет конъ-

юнктивное условие, которое должно иметь место, и Σ – входы, необходимые для перехода. 2C выражает множество временных переменных, которые сбрасываются во время перехода. I: SB(C) – множество инвариантов для каждого состояния. B(C) представляет инвариант, который должен иметь место для определенного состояния. Этот инвариант описывается коньюктивной формулой.

Временной автомат хоть и расширяет классический автомат, однако в своей стандартной форме не выражает таких свойств, как иерархия и одновременность работы. Это учитывают в различных языках проектирования, ориентированных на те или иные модели вычислений.

2.3.Асинхронный язык проектирования SDL

Вкачестве примера рассмотрим язык SDL (specification and description language, стандартизован ITU), основанный на CFSM с асинхронной передачей сообщений. Наряду с текстовым представлением SDL поддерживает и графическое представление проектов. Базовыми элементами SDL являются процессы, представляющие компоненты MoC как EFSM. На рис. 68 показаны графические символы, используемые для представления EFSM.

На рис. 69 приведено графическое представление в виде процесса (Process P) на SDL временного автомата автоответчика из примера на рис. 67. Временные переменные (часы) X и Y на SDL представляют два таймера X и Y.

Рис. 68. Символы графической формы SDL

128

Оператор SET (NOW+4, X), например, запускает таймер X на интервал, равный 4, а оператор RESET(X) останавливает таймер X. Процессы SDL представляют EFSM, поэтому они могут выполнять преобразования над данными. Переменные могут быть объявлены локально в процессах. Многие типы данных предопределены, также они могут быть определены пользователем. Синтаксис для объявлений и операций подобен другим языкам. На рис. 70 показаны объявления, оператор присвоения и условный оператор.

Рис. 69. Модель автоответчика на SDL

Рис. 70. Объявление, присвоение и условный оператор SDL

В общем, описание на SDL состоит из взаимодействующих процессов, представляющих EFSM. Процессы могут посылать сигналы другим процессам, образуя CFSM. Семантика взаимодействия процессов основана на асинхронной передаче сообщений и реализована в виде очередей типа FIFO (first-in, first-out), ассоциированных с процесса-

129

ми (на каждый процесс своя очередь). Сигналы, посылаемые определенному процессу, поступают в соответствующую очередь (рис. 71).

Рис. 71. Взаимодействие процессов SDL

Каждый процесс выбирает из очереди запись и проверяет, совпадает ли она с одним из входов, назначенных текущему состоянию. Если да, то выполняется соответствующий переход и генерируется выход. Выбранная запись игнорируется, если нет совпадения ни с одним из назначенных входов. Запись при этом может остаться в очереди, если используется механизм запоминания SAVE.

Концептуально очереди бесконечны, а значит, не могут переполниться. На практике это нереализуемо, и это одна из проблем реализаций проектов на SDL.

Язык SDL хорошо подходит для описания распределенных систем. Порядок обработки сигналов, одновременно поступающих в очередь, не специфицирован, поэтому SDL не является детерминированным. Надежная реализация очереди требует знания длины ее верхней границы. Вычисление длины может оказаться трудной задачей, а концепция таймера подходит лишь для мягкого реального времени.

2.4. Синхронный язык проектирования Lustre

Трудно описывать сложные (смешанные) встроенные системы только в терминах FSM. Диаграммы состояний не могут выражать сложных вычислений. Стандартные языки программирования могут выражать сложные вычисления, но результат последовательного исполнения нескольких потоков может оказаться непредсказуемым. Исполнение множества потоков в среде с приоритетным планировщиком задач приводит к множеству чередований различных вычислений. Трудно понять все возможные нюансы поведения таких одновремен-

130