Алексей Жданов

Термины “реальное время”, “работа в реальном масштабе времени”, “операционные системы реального времени” известны всем, но толкуются они часто по-разному и спектр этих толкований очень широк. Количество иллюзий и мифов в мире реального времени велико. Часто путают такие понятия, как реальное время и скорость. Иногда полагают, что применение операционной системы реального времени (ОСРВ) автоматически разрешит все проблемы надежности предсказуемости. Порой, наоборот, считают, что системы реального времени - занятие для теоретиков, а практически любую задачу реального времени можно решить с помощью популярных ОС общего назначения: достаточно быть просто хорошим программистом и знать архитектуру компьютера. Так ли это?

Чем принципиально отличаются операционные системы реального времени от операционных систем общего назначения?

ОС общего назначения, особенно многопользовательские вроде UNIX, ориентированы на оптимальное распределение ресурсов компьютера между пользователями и выполняемыми процессами (системы разделения времени). В ОСРВ подобная задача отходит на второй план, все отступает перед главной целью - успеть среагировать на события, происходящие на объекте.

Другое отличие состоит в том, что применение ОСРВ всегда связано с аппаратурой, объектом и событиями, происходящими на объекте. Система реального времени как аппаратно-программный комплекс включает в себя датчики, регистрирующие события на объекте, модули ввода-вывода, которые преобразуют показания датчиков в цифровой вид, пригодный для их обработки на компьютере, и, наконец, компьютер с программой, реагирующей на события в объекте. ОСРВ ориентирована на обработку внешних событий. Именно это обуславливает коренные отличия от ОС общего назначения по структуре, по функциям ядра, по построению системы ввода-вывода. ОСРВ может быть похожа на ОС общего назначения по пользовательскому интерфейсу (к этому, кстати, стремятся почти все производители ОС реального времени), однако устроена она совершенно иначе - об этом речь впереди.

Рис. 1. Системы разработки ОСРВ

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

Назовем системой реального времени (СРВ) аппаратно-программный комплекс, реагирующий в течение предсказуемого времени на непредсказуемый поток внешних событий.

Это определение означает следующее.

Во-первых, система должна успеть отреагировать на событие, произошедшее на объекте, в течение времени, критического для этого события (meet deadline). Критическое время для каждого события определяется объектом и самим событием и, естественно, может быть разным, но время реакции системы должно быть предсказано (вычислено) при создании системы. Отсутствие реакции в течение предсказанного времени считается ошибкой для СРВ.

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

Различают системы реального времени двух типов - системы жесткого реального времени и системы мягкого реального времени.

Системы жесткого реального времени не допускают никаких задержек реакции системы ни при каких условиях:

- в случае опоздания результаты окажутся бесполезными;

- в случае задержки реакции может произойти катастрофа;

- стоимость опоздания может оказаться бесконечно велика.

К системам жесткого реального времени относятся бортовые системы управления, системы аварийной защиты, регистраторы аварийных событий.

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

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

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

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

Это определение выражает отношение к ОСРВ как объекту, содержащему необходимые инструменты, но подразумевает также, что этими инструментами необходимо правильно воспользоваться.

Свойства операционных систем реального времени

Параметры ОСРВ. Выбирая ОС общего назначения, вы учитываете ее распространенность, удобство систем разработки, состав и возможности инструментария сетей, баз данных, офисных пакетов и пр.

А что важно для ОСРВ? Какова структура этих продуктов?

Системы исполнения и системы разработки ОСРВ. Одно из коренных внешних отличий систем реального времени от систем общего назначения - четкое разграничение средств разработки и исполнения. Набор инструментов исполнения в ОСРВ (ядро, драйверы, исполняемые модули) обеспечивает функционирование приложения реального времени.

Большинство современных ведущих ОСРВ поддерживают целый спектр аппаратных архитектур, на которых работают системы исполнения (Intel, Motorola, RISC, MIPS, PowerPC и др.). Дело в том, что набор аппаратных средств является частью комплекса реального времени и аппаратура должна быть также адекватна решаемой задаче; поэтому ведущие ОСРВ, удовлетворяя самым разным требованиям по части аппаратуры, перекрывают целый ряд наиболее популярных архитектур. Систему исполнения ОСРВ вместе с компьютером, на котором она исполняется, называют целевой (target) системой.

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

Заметим, что функционально системы разработки ОСРВ отличаются от привычных - таких, например, как Developers Studio, TaskBuilder, поскольку они часто содержат средства дистанционной отладки, профилирования (измерение времени выполнения отдельных участков кода), эмуляции целевого процессора, специальные средства отладки взаимодействующих задач, а иногда и средства моделирования.

Время реакции системы. Почти все производители ОСРВ приводят такой параметр, как время реакции системы на прерывание (interrupt latency).

В самом деле, если главным для системы реального времени является ее способность вовремя отреагировать на внешние события, то время ее реакции является основополагающим параметром. Однако что это за время и как следует его рассматривать?

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

Как быть в этой ситуации?

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

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

Интервал от события на объекте до выполнения первой инструкции в программе его обработки и является временем реакции системы на событие. Проектируя комплекс ОСРВ, разработчики должны уметь вычислять этот интервал. Из чего он складывается?

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

Неплохим основанием для оценки времени реакции могут служить результаты тестирования с подробным описанием архитектуры целевой системы, в которой проводились измерения, средств измерения и точным указанием, какие промежутки времени измерялись. Некоторые производители ОСРВ результаты такого тестирования предоставляют. Их не увидишь в рекламных проспектах, но можно отыскать на Web-страницах, в документах технической поддержки, в публикациях фирм, проводящих независимое тестирование.

Время реакции на прерывание, характерное для некоторых ОСРВ, представлено на рис. 2.

Рис. 2. Время реакции различных систем на прерывание

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

Рис. 3. Время переключения контекста

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

Например, размер ядра ОСРВ OS9 на микропроцессорах МС68xxx составляет 22 Кб, VxWorks - 16 Кб.

Возможность исполнения системы из ПЗУ. Это одно из базовых свойств ОСРВ. Оно позволяет создавать компактные встроенные СРВ повышенной надежности, с ограниченным энергопотреблением, без внешних накопителей.

Механизмы реального времени

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

Мечтой каждого разработчика является идеальная ОСРВ, в которой приложения реального времени разрабатываются на языке событий объекта. Хотя такая система и существует только в теории, она имеет свое название: система, управляемая критическими сроками. Разработка приложений реального времени в этой системе сводится к описанию возможных событий на объекте. В каждом описании указываются два параметра: временной интервал - критическое время обслуживания данного события и адрес подпрограммы его обработки. Всю дальнейшую заботу о том, чтобы подпрограмма обработки стартовала до истечения критического интервала времени, берет на себя операционная система.

Но это - мечта. В реальности же разработчик должен перевести язык событий объекта в сценарий многозадачной работы приложений ОСРВ, стараясь при этом оптимательно использовать предоставленные ему специальные механизмы и оценить времена реакций системы на внешние события.

Какие же механизмы в операционных системах реального времени делают СРВ предсказуемой?

Система приоритетов и алгоритмы диспетчеризации. Базовыми инструментами разработки сценария для системы являются система приоритетов процессов (задач) и алгоритмы планирования (диспетчеризации) ОСРВ.

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

Алгоритмы круговой диспетчеризации в чистом виде в ОСРВ неприменимы. Основным их недостатком является то, что в течение непрерывного кванта времени процессором владеет только один процесс. Планировщики же ОСРВ имеют возможность сменить процесс до истечения time slice, если в этом возникла необходимость. Один из возможных алгоритмов планирования при этом - приоритетный с вытеснением. Мир ОСРВ отличается богатством различных алгоритмов планирования: динамические, приоритетные, монотонные, адаптивные и пр., цель же всегда преследуется одна - предоставить инструмент, позволяющий в нужный момент времени исполнять именно тот процесс, который необходим.

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

Средства для работы с таймерами. Такие инструменты, как средства работы с таймерами, необходимы для систем с жестким временны/м регламентом, поэтому они являются необходимым атрибутом ОСРВ. Эти средства, как правило, позволяют:

- измерять и задавать различные промежутки времени (от 1 мкс и выше);

- генерировать прерывания по истечении временны/х интервалов;

- создавать разовые и циклические будильники.

В статье описаны только базовые, обязательные механизмы, использующиеся в ОСРВ. Но помимо них почти в любой ОСРВ вы найдете целый набор дополнительных, специфических только для нее возможностей, касающийся системы ввода-вывода, управления прерываниями, работы с памятью. Каждая система содержит также ряд средств, обеспечивающих ее надежность: встроенные механизмы контроля целостности кодов, инструменты для работы со сторожевыми таймерами.

Окончание следует