1. Введение: Особенности операционных систем реального времени




страница4/10
Дата20.04.2017
Размер1.03 Mb.
Просмотров1244
Скачиваний0
1   2   3   4   5   6   7   8   9   10
2.5.2. INtime
Система INtime является расширением реального времени Windows, которое было разработано корпорацией Radisys Corporation, а в настоящее время поддерживается корпорацией TenAsys [INTIME].
INtime комбинирует возможности ОСРВ жесткого реального времени со стан- дартными ОС Windows, включая Windows XP, Windows XP Embedded,
Windows 2000, Windows NT и Windows NT Embedded, не требуя дополни- тельной аппаратуры. INtime специально разработана под архитектуру процес- сора x86. Приложения реального времени и не реального времени выполняются на разных виртуальных машинах на единственном компьютере
(см. рис. 4).
Рис. 4. Структура INtime.
INtime в отличие от RTX слабо связана с NT. Архитектура INtime основана на механизме аппаратного обслуживания задач (hardware tasking), которое обеспечивается процессором Intel. Получается, что два ядра выполняются на одной аппаратуре. Поскольку они разделяют одну аппаратуру, потребовались

33 некоторые модификации NT HAL. Такой подход позволяет защитить и отделить среду выполнения и область памяти от Windows. Внутри INtime каждый процесс приложения имеет свое собственное адресное пространство.
Кроме того, ядро и приложения выполняются на разных приоритетных уровнях, что позволяет защитить их друг от друга.
INtime показывает предсказуемое поведение, однако ее сложная архитектура не позволяет достичь системе хорошей производительности. Из-за сегмента- ционных ограничений INtime подходит не для всех систем реального времени.
2.5.3. Microsoft Windows Embedded
Операционные системы Microsoft Windows Embedded для встраиваемых систем имеют две разновидности в соответствии с версиями ОС Windows – NT и XP [MSEmb]. Версии систем Embedded корпорации Microsoft состоят из многочисленных конфигурируемых частей, которые позволяют легко манипулировать набором установленного программного обеспечения.
Windows NT Embedded использует технические ресурсы Windows NT и позволяет разрабатывать приложения, которые могут быть легко интегрированы в существующую информационную инфраструктуру.
Рис. 5. Процесс разработки встраиваемого ПО на основе Windows NT
Embedded.
Набор средств разработки – Target Designer и Component Designer – позволяет
OEM (original equipment manufacturer) производителям конфигурировать и создавать операционную систему для конкретной аппаратной платформы.
Windows NT Embedded обладает специфическими компонентами для создания
34 встраиваемых систем, которые позволяют работать в системах без видеоадаптера, осуществлять загрузку и работу накопителей в режиме "только чтение", выполнять удаленное администрирование и предоставляют дополнительные средства обработки ошибок и восстановления. Windows NT
Embedded дает возможность создавать устройства, с которыми работать так же просто, как и со стандартными ПК на основе Windows, и управлять этими новыми устройствами на основе существующих профессиональных продуктов, таких как Microsoft Systems Management Сервер, HP OpenView, IBM Tivoli, CA
Unicenter TNG, и др.
Разработчик встраиваемых систем использует Target Designer для конфигурирования ОС, используя готовый двоичный код Windows NT, дополнительные компоненты для встраивания и дополнительные приложения.
В случае необходимости, Component Designer может использоваться для создания новых компонентов, не входящих в состав продукта (например, драйверов устройств, приложений и пр.). Вновь созданные новые компоненты могут быть импортированы в Target Designer и включены в состав целевой ОС.
После конфигурирования ОС с помощью Target Designer происходит проверка взаимосвязей компонентов и строится образ системы, готовый к загрузке и исполнению на целевой системе.
Windows XP Embedded насчитывает до 10000 отдельных компонентов, а в
Windows NT Embedded их было чуть больше 300. Основной отличительной чертой Windows XP Embedded является четкое разграничение компонент системы, что позволяет разработчикам встраиваемого набора функций при создании образа системы включать только необходимые файлы и максимально сократить размер результирующей системы. Этими компонентами служат отдельные части системы Windows XP Professional.
Компоненты
Windows XP Embedded представлены сервисами, приложениями, библиотеками и драйверами – разработчику нужно сконфигурировать необходимый набор функций и собрать из компонент необходимую конфигурацию в образ среды исполнения (runtime image). Все опции конфигурации собраны воедино в базу данных компонент. Разработчик имеет к ней доступ и может ее редактировать с помощью специального инструмента – Component Database Manager.
Для каждого компонента в процессе создания определяется ряд параметров:

платформа, на которой будет выполняться данный компонент, определяет порядок компиляции и сборки;

описание и схема подключения компонента;

список ассоциированных ресурсов, таких как файлы и ключи реестра;

зависимости компонента от других компонент (например, от DirectX или NET runtime);

указатель на хранилище файлов (чаще всего это просто локальный каталог, но может быть и сетевым ресурсом);

35

принадлежность к группе для упрощения обращения сразу к нескольким компонентам как к целому.
Сама база данных представляет собой БД в терминах MS SQL и может быть расположена как локально, на компьютере разработчика, так и на сервере.
2.6. TinyOS
Разработка операционной системы TinyOS [HSW00] связана с появлением новой концепции беспроводной связи – Motes. Motes (в переводе с английского
– пылинки, соринки) – это реализация идеи "smart-dust" ("распыленной разумности"), предложенной оборонным агентством Darpa (Defense Advanced
Research Projects Agency) для отслеживания передвижений противника.
Motes разработаны Калифорнийским Университетом в Беркли совместно с
Intel, и в настоящее время ведутся испытания этих самоорганизующихся сетей, построенных на основе открытых технологий Intel Mote и программного обеспечения TinyOS, TinyDB.
Умные сенсоры Motes, распределенные в пространстве, могут самостоятельно связываться друг с другом, образуя распределенную беспроводную информационную сеть. "Пылинка разума" состоит из 8-битового микро- контроллера семейства Amtel AVR, приемопередающего интегрального модуля
TR1000 и двух микросхем средней степени интеграции – энергонезависимой памяти и дополнительного загрузочного микроконтроллера, позволяющего по радиоканалу обновлять ПО центрального процессора – AVR.
"Smart-dust" создавалась для динамических, изменяющихся как в пространстве, так и во времени сетей – для той области, в которой абсолютно неприменимы ни традиционные алгоритмы управления, ни отработанные принципы маршрутизации, ни архитектурные решения, лежащие в основе традиционного системного ПО. Стремление конструкторов сделать ее как можно более компактной (в перспективе – 1 мм3) влечет за собой ряд существенных ограничений, в первую очередь энергетических.
Ограниченные вычислительные ресурсы и динамический характер сети приводят к тому, что функциональность "пылинки" надо время от времени изменять, что может быть достигнуто только одним способом – передачей по радиоканалу нужного
ПО. С другой стороны, энергетическая дороговизна передачи информации требует сверхкомпактного представления передаваемого кода, в противном случае "пылинки" просто не будут работать из-за быстрого истощения крохотных автономных источников питания.
При проектировании ОС TinyOS основными требованиями являлись достижение энергетической эффективности и создание высокого уровня абстракции системных вызовов для упрощения разработки программ. Эта система обладает всеми отличительными признаками развитой ОС – в первую очередь, крайне простой, но достаточно развитой компонентной моделью.
Однако специфика предназначения этой компонентной модели существенно отличается от традиционных разработок, поскольку главной целью компонентности является не облегчение подбора интерфейсов,
36 соответствующих требованиям запрашивающего компонента, а обеспечение развитых и надежных механизмов параллельного выполнения задач в условиях крайне ограниченных ресурсов.
Вышеописанные причины привели разработчиков TinyOS к выбору событийной модели, которая позволяет управлять высокой степенью параллельности выполнения задач в ограниченном пространстве памяти.
Подход к управлению многопоточности, основанный на стеках, потребовал бы значительно больших ресурсов памяти, чем предполагалось в данном проекте.
Для каждого контекста исполнения потребовалось бы выделение памяти для наихудшего варианта, либо нужно было бы применить какой-либо слишком изощренный и сложный метод управления памятью.
Архитектура TinyOS объединяет такое привычную составляющую, как планировщик задач (scheduler), и оригинальное понятие – компонентный граф.
Термин "компонент" здесь одновременно и соответствует общепринятому пониманию, и существенно расширяет его. Так, интерфейс компонента TinyOS состоит из двух множеств – верхнего, предоставляемого им, и нижнего, требуемого для его функционирования. Каждое из этих множеств содержит описания команд и событий – синхронных и асинхронных процессов.
Согласно описанию системы компонент имеет 4 взаимосвязанные части – набор команд, набор обработчиков событий, инкапсулированный фрейм фиксированного размера и пучок простых потоков. Потоки, команды и обработчики событий выполняются в контексте данного фрейма и воздействуют на его состояние. Кроме того, каждый компонент декларирует команды, которые он использует и события, о которых он сигнализирует. Эти декларации используются при компоновке для конфигурации системы, настроенной на определенный класс приложений. Процесс композиции создает слои компонентов, где каждый более высокий уровень выдает команды к нижележащему уровню, а нижележащий уровень обращается к более высокому с помощью сигналов, что понимается в данной системе как события.
Аппаратное обеспечение является самым низким слоем компонентов.
Написана TinyOS с использованием структурированного подмножества языка
C. Использование статического распределения памяти позволяет определять требования к памяти на уровне компиляции и избегать накладных расходов, связанных с динамическим распределением. Кроме того, этот подход позволяет сокращать время выполнения благодаря статическому размещению переменных во время компиляции вместо доступа к ним по указателю во время выполнения.
Команды являются неблокируемыми запросами к компонентам нижележащего слоя. Команда сохраняет необходимые параметры в своем фрейме и может инициировать поток для его последующего выполнения. Для того чтобы не возникало неопределенных задержек, время ответа от вызванной команды не должно превышать заданного интервала времени, при этом команда должна вернуть статус, указывающий успешно она завершилась или нет. Команда не может подавать сигналы о событиях.

37
Обработчики событий прямо или косвенно имеют дело с аппаратными событиями. Самый нижний слой компонент содержит обработчики, непосредственно связанные с аппаратными прерываниями. Обработчик событий может положить информацию в свой фрейм, запустить потоки, подать сигнал вышележащему уровню о событиях или вызвать команды нижележащего слоя. Аппаратное событие инициирует фонтан обработки, которая распространяется вверх по уровням через события и может вернуться вниз через команды. Для того, чтобы избежать циклов в цепочке команд/событий, команды не могут подавать сигналы о событиях. Как команды, так и события предназначены для выполнения небольшой, строго фиксированной порции обработки, которая возникает внутри контекста выполняющегося потока.
Основная работа возлагается на потоки. Потоки в TinyOS являются атомарными, и в отличие от потоков в других ОС выполняются до завершения, хотя они и могут быть вытеснены событиями. Потоки могут вызывать команды нижележащего уровня, сигнализировать о событиях более высокому уровню и планировать другие потоки внутри компонента. Семантика потока
“выполнение до завершения” позволяет иметь один стек, который выделяется выполняющемуся потоку, что очень существенно в системах с ограниченной памятью. Потоки дают возможность симулировать параллельную обработку внутри каждого компонента, т.к. они выполняются асинхронно по отношению к событиям. Однако потоки не должны блокироваться или простаивать в ожидании, потому в таких случаях они будут препятствовать развитию обработки в других компонентах. Пучки потоков обеспечивают средство для встраивания произвольных вычислительных обработок в модель, управляемую событиями.
В системе предусмотрена также отдельная абстракция задачи, понимаемая как продолжительный вычислительный процесс. Взаимоотношение между понятиями “команда” и “задача” следующее: команда – это атомарная составляющая задачи. Команда ставится в очередь на исполнение планировщика, затем она выполняется и может быть временно прервана обработкой события.
Планировщик работает по принципу очереди FIFO, т.е. для передачи управления следующей задаче требуется полное завершение предыдущей.
Однако в зависимости от требований приложения могут использоваться и более сложные механизмы планирования, основанные на приоритетах или на дедлайнах. Ключевым моментом является то, что планировщик ориентирован на энергосбережение: процессор засыпает, если очередь планировщика пуста, а периферийные устройства работают, и каждое из них может разбудить систему. Когда очередь становится пустой, новый поток может быть запущен на исполнение только как результат какого-либо события, которое может воз- никнуть только в аппаратных устройствах. Планировщик имеет крайне малые размеры – всего 178 байтов, данные планировщика занимают только 16 байтов.
38
В TinyOS полностью отсутствуют механизмы блокирования исполнения, что означает необходимость введения индикации завершения продолжительной операции соответствующим асинхронным событием. Традиционные приемы построения ОС реального времени и привычные отработанные архитектурные решения здесь оказались неприменимы. В результате вся ОС и ее компоненты построены по принципу конечных автоматов – переходов из состояния в состояние.
Итак, TinyOS состоит из набора компонентов (каждый размером примерно 200 байт), из которых разработчики собирают систему для каждого конкретного сенсора. Для компоновки системы из набора компонентов, которые статически линкуются с ядром, используется специальный описательный язык. После проведения компоновки модификация системы не возможна.
Для того, чтобы обеспечить динамичность во время выполнения была разработана виртуальная машина, которая является надстройкой над ОС
TinyOS. Эта виртуальная машина решает проблему потребление – компак- тность представления программ. Код для виртуальной машины можно загру-зить в систему во время выполнения. Для работы этой виртуальной машины необходимы 600 байт оперативной памяти и менее 8 KB памяти команд 8- битового микроконтроллера. Программы виртуальной машины представляются
8-битовыми инструкциями всего трех типов, объединяемых в "капсулы" – атомарные последовательности не более чем двадцати четырех инструкций.
Иерархическая структура сети получается автоматически благодаря тому, что все сенсоры следуют простым правилам, заложенным в TinyOS. Правила эти, к примеру, определяют способ поиска кратчайшего пути до ближайшего стационарного узла, а уже в зависимости от того, где и как расположены сенсоры, сеть принимает привычную для системных администраторов древообразную форму. В TinyOS учитывается также и то, что некоторые виды сенсоров могут работать от солнечных батарей или иных источников энергии, зависящих от погоды, поэтому при потере связи с ближайшим узлом сети происходит смена маршрута, по которому пересылаются пакеты.
2.7. OSEK/VDX
Как уже упоминалось в разделе о стандартах, OSEK/VDX является комбинацией стандартов компьютерных систем реального времени, разработанных консорциумами OSEK и VDX для автомобильной промышленности. В данной работе рассматривается только стандарт OSEK, касающийся архитектуры операционной системы.
ОС OSEK оперирует такими объектами, как задачи, события, ресурсы. Кроме того, обеспечиваются такие возможности, как управление ошибками и средства для пользовательских функций отслеживания изменений в состоянии системы.
ОС OSEK обеспечивает определенный набор интерфейсов для пользователя.
Интерфейсы используются сущностями, конкурирующими за центральный процессор. ОС OSEK оперирует двумя типами таких сущностей – задачи и прерывания – и определяет три уровня обработки – уровень прерываний,

39 логический уровень планировщика и уровень задач. Задачи выбираются на выполнение в соответствии с присвоенным им приоритетам.
Задача в ОС OSEK может быть

базовой или расширенной,

вытесняемой или невытесняемой.
Главным различием между базовой и расширенной задачами заключается в том, может ли она впасть в состояние ожидания (в котором она ждет появления события). Только расширенная задача может ожидать события.
Вытесняемая задача может быть вытеснена задачей более высокого приоритета или прервана прерыванием. Невытесняемая задача может быть вытеснена только с помощью прерывания (когда прерывания не запрещены).
Рис. 6. Уровни обработки в ОС OSEK.
Концепция двух типов задач потребовала введения нового понятия – класс соответствия (conformance class) для описания своеобразной реализации ОС
OSEK и системных сервисов. Определяются четыре класса соответствия – два для базового соответствия (BCC1 и BCC2 – Basic conformance Classes 1 и 2) и два для расширенного (ECC1 и ECC2 – Extended Conformance Classes 1 и 2).
Реализации, которые соответствуют базовым классам, требуют использования только базовых задач, в то время как расширенные классы требуют как расширенных, так и базовых задач. Числа 1 и 2 в именах указывают количество запросов на задачу для базовых задач и количество задач на приоритет для всех задач. Таким образом, BCC1 и ECC1 имеют только одну задачу на приоритет и базовые задачи могут быть запрошены только один раз. BCC2 и ECC2 40 допускают множественность задач на приоритет и множественное запрашивание базовых задач.
Каждая задача должна находиться в одном из четырех состояний:

Выполняющаяся – только одна задача может быть в этом состоянии,

Готовая к выполнению – планировщик может выбрать ее на выполнение на основании приоритетов и правил вытеснения,

Ожидающая – задача ждет появления события,

Приостановленная – задача в пассивном состоянии и ждет активации.
Рис. 7. Модель состояний задачи в ОС OSEK.
Каждая задача имеет приоритет. Стандарт ОС OSEK не ограничивает максимальное количество приоритетов – это определяет реализация.
ОС OSEK определяет два уровня программ управления прерываниями, которые различаются возможностями вызова системных сервисов. Прерывания уровня 1 выполняются независимо от ОС очень быстро. Уровень 2 обеспечивает выполнение функций приложений, которые содержат вызовы ОС.
События в ОС OSEK используются для синхронизации различных задач.
События являются собственностью задач. Любая задача, в том числе и базовая, может установить событие, и только собственник события может ожидать или снять его.
Управление ресурсами обеспечивает доступ к разделяемым ресурсам, таким как память, аппаратура и т.п. Планировщик также считается специальным ресурсом, который может быть захвачен задачами. Для того, чтобы избежать инверсии приоритетов и тупиковые ситуации, OSEK применяет потолочный протокол приоритетов. Согласно этому протоколу задаче, захватившей ресурс, временно повышается приоритет, и таким образом, никакие другие задачи, обращающиеся к данному ресурсу, не смогут выполняться до тех пор, пока ресурс остается захваченным. Однако, все задачи с более высоким

41 приоритетом, чем приоритет задачи, захватившей ресурс, все еще могут выполняться.
Аварийные сигналы и счетчики в OSEK используются для синхронизации активации задач с повторяющимися событиями. Аварийный сигнал статически присваивается счетчику, задаче и воздействию. Воздействие может либо активировать задачу, либо установить событие. Счетчики оперируют тактами и могут представлять время, количество принятых импульсов и т.п. Каждая реализация обеспечивает один временной счетчик, который используется для планирования периодических событий. Все другие счетчики управляются через API, и являются специфическими для конкретной реализации и не могут быть переносимыми.
В OSEK существует два типа аварийных сигналов: циклические и одинарные.
Циклические аварийные сигналы применяются для диспетчеризации задачи, которая должна запускаться периодически. Счетчик аварийного сигнала может быть установлен в относительное или абсолютное значение. Параметры цикла и значение счетчика могут переустанавливаться динамически.
ОС OSEK обеспечивает минимальные средства для управления ошибками времени выполнения. Однако, есть возможность дополнительного управления ошибками во время разработки благодаря расширенной функциональности возврата управления. Причина такого решения состоит в том, что после того как продукт запущен в производство, большинство возможных ошибок могут быть выявлены во время тестирования (такие как “неверный идентификатор задачи”, “ресурс занят”, “непредусмотренный вызов с уровня прерываний” и т.д.). Во время выполнения большинство системных сервисов не возвращают ошибки, но некоторые сервисы, такие как аварийные сигналы, которые могут стартовать и останавливаться динамически, возвращают ошибку, если данный аварийный сигнал уже использовался.
ОС OSEK определяет два типа ошибок – ошибки приложения и фатальные ошибки. При ошибке приложения целостность внутренних данных все еще сохраняется, в то время как приложение пытается выполнить несанкционированную операцию (например, активизировать несуществующую задачу). Фатальные ошибки возникают, если ОС обнаруживает нарушение целостности внутренних данных. Такие ошибки вызывают сервис завершения работы ОС.
2.8. OSE RTOS
Операционная система реального времени OSE RTOS, разработанная в корпорации ENEA, имеет ядро с приоритетным планированием [OSERTOS]. Это ядро сильно оптимизировано для обеспечения высокой производительности и достаточно компактно для использования во встраиваемых системах. OSE имеет архитектуру, управляемую сообщениями, с простыми системными вызовами.
Передача сообщений в OSE служит концептуальным шлюзом в распределенных многопроцессорных встраиваемых системах. Задачи посылают сообщения друг другу напрямую через ОС без поддержки очередей, почтовых ящиков или других промежуточных механизмов. OSE RTOS поддерживает подкачку,
42 дублирование, динамическое обновление кода и многие коммуникационные протоколы.
OSE RTOS предлагает три варианта ядра, построенные по одному принципу.
OSE Epsilon – для глубоко встраиваемой и SoC (system-on-chip) разработки.
OSEck – компактное ядро для DSP. OSE Link Handler – для многочисленных смешанных CPU/DSP проектов. Все они имеют очень маленькое количество системных вызовов – от шести до восьми.
Архитектура OSE RTOS основана на многослойной модели (рис.8).
Рис. 8. Многослойная архитектура OSE RTOS.
Единицей выполнения в OSE RTOS является процесс. Процессы могут быть сгруппированы в блок, который может иметь собственный пул памяти. В ядре
OSE RTOS адресное пространство принадлежит сегменту, который может включать один или больше блоков. Отображение блоков в сегменты и отображение пулов в регионы дает возможность достичь полной защиты памяти и изоляции программы. Блоки и пулы могут размещаться в одном или нескольких сегментах.


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   10


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал