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