Алексей Жданов
Классы систем реального времени
Количество разнообразных операционных систем реального времени очень велико. В последнем обзоре в Real-Time Magazine (№ 2-3/97) было упомянуто около шестидесяти таких ОС. Наверное, на самом деле их еще больше, если иметь в виду некоммерческие ОСРВ. Однако сама специфика применения ОСРВ требует гарантий надежности, причем гарантий в том числе и юридических - этим, видимо, можно объяснить тот факт, что среди некоммерческих систем реального времени нет сколько-нибудь популярных.
Среди коммерческих СРВ можно выделить группу ведущих по объемам продаж и по популярности систем. VxWorks, OS9, pSOS+, LynxOS, QNX, VRTX.
Исполнительные системы реального времени. Признак систем этого типа - различные платформы для разработки и исполнения. Приложение реального времени разрабатывается на хост-компьютере (компьютер ведения разработки), затем компонуется с ядром и загружается в целевую систему для исполнения. Как правило, приложение реального времени - это одна задача, и параллелизм здесь достигается с помощью потоков (threads).
Системы данного типа обладают рядом достоинств, главными из которых являются скорость и реактивность. Высокая реактивность достигается благодаря тому, что в системе имеются только потоки, требующие малого времени на переключение контекста (в отличие от процессов).
Этим свойством определяется и ряд недостатков: зависание всей системы при зависании потока, проблемы с динамической подгрузкой новых приложений.
Кроме того, системы разработки для продуктов такого класса традиционно дороги (порядка 20 000 долл.). Хотя надо отметить и традиционно высокое их качество и функциональность, объясняющееся тем, что изначально они были кроссовыми.
Как наиболее яркого представителя здесь можно назвать ОС VxWorks - компактную систему реального времени с хорошими временами реакций.
Системы с ядром реального времени (Real Time Kernel). В этот класс входят системы с монолитным ядром, где и реализованы механизмы реального времени. Исторически такие системы всегда были хорошо спроектированы. В отличие от других классов, которые появлялись как временные компромиссы и затем “наращивали мускулы” благодаря первым удачным реализациям (исполнительные системы реального времени и UNIX реального времени), в данном случае программисты имели возможность трудиться над созданием систем именно реального времени, причем изначально они не были ограничены в выборе средств (например, в распоряжении фирмы Microware было три года для разработки первого варианта OS9).
Системы с ядром реального времени, как правило, модульны, хорошо структурированы, имеют развитый набор специфических механизмов реального времени, компактны и предсказуемы. Наиболее популярные среди них - OS9, QNX.
Продукты этого класса отличаются высокой степенью масштабируемости. На их базе можно построить как компактные СРВ, так и большие системы-серверы. Ядра реального времени обычно имеют два типа систем разработки - кроссовую и резидентную.
UNIX реального времени. Системы реального времени создавались в эпоху расцвета и бума UNIX, поэтому многие из них содержат те или иные заимствования из этой красивой концепции ОС (пользовательский интерфейс, концепция процессов и т. д.).
Некоторые разработчики попытались попросту переписать ядро UNIX, сохранив, насколько возможно, интерфейс пользовательских процессов с системой. Реализация этой идеи не была слишком сложной, поскольку не было препятствия для доступа к исходным текстам ядра, а результат оказался замечательным: получили и реальное время, и сразу весь набор пользовательских приложений - компиляторы, пакеты, различные инструментальные системы.
В этом смысле создателям систем первых двух классов пришлось потрудиться не только над ядром реального времени, но и над развитой системой разработки.
Однако UNIX реального времени не избавлены от некоторых недостатков: они имеют немалый объем и более низкую реактивность.
Самым популярным представителем систем этого класса является операционная система реального времени LynxOS.
Расширения реального времени для Windows NT. В последние два года сразу несколько фирм объявили о создании расширений реального времени для Windows NT. Следовательно, подобные продукты были востребованы, что и подтверждает динамика их рыночного развития. В самом деле, появление в свое время UNIX реального времени означало не что иное, как попытку применить господствующую программную технологию для создания этого типа приложений. Появление расширений реального времени для Windows NT имеет те же корни, ту же мотивацию. Это и огромный набор прикладных программ под Windows, и мощный программный интерфейс Win32 и большое количество специалистов, знающих эту систему. Конечно, соблазнительно получить все эти возможности в системе реального времени. Поэтому остановимся на них чуть подробнее.
Несмотря на то, что Windows NT создавалась как сетевая операционная система, сочетание слов “Windows NT” и “реальное время” многими воспринимается как нонсенс, хотя при создании в нее были заложены некоторые элементы реального времени, а именно - двухуровневая система обработки прерываний (ISR и DPC) и классы реального времени (процессы с приоритетами 16 - 32 планируются в соответствии с правилами реального времени). Видимо, объяснить это можно тем, что у разработчиков Windows NT за плечами есть опыт создания классической для своего времени ОСРВ RSX11M (для компьютеров фирмы DEC).
Конечно, даже поверхностный анализ показывает, что Windows NT не годится для построения систем жесткого рального времени (она непредсказуема: время выполнения системных вызовов и время реакции на прерывания в значительной степени зависит от загрузки; велик ее объем; в ней нет механизмов защиты от зависаний и пр.). Поэтому даже в системах мягкого реального времени Windows NT может быть использована только при выполнении целого ряда рекомендаций и ограничений.
Разработчики расширений пошли двумя путями.
1. Использовали ядра классических ОСРВ в качестве дополнения к ядру Windows NT (“два в одном флаконе”). Таковы решения фирм LP Elektroniks и Radisys. В первом случае параллельно с Windows NT (на одном компьютере!) работает операционная система VxWorks, во втором случае - InTime. Кроме того, предоставляется набор функций для связи приложений реального времени и приложений Windows NT. Вот как, скажем, это выглядит у LP Elektroniks. Вначале стандартным образом загружается Windows NT, затем с помощью специального загрузчика - VxWorks, распределяя под свои нужды необходимую память Windows (что в дальнейшем позволяет избежать конфликтов памяти между двумя ОС). После этого полной “хозяйкой” на компьютере уже становится VxWorks - она отдает процессор ядру Windows NT только в тех случаях, когда в нем нет надобности для приложений. Каналами для синхронизации и обмена данными между Windows NT и VxWorks служат драйверы TCP/IP в обеих системах. Технология использования двух систем на одном компьютере понятна: работу с объектом выполняет приложение реального времени, передавая затем результаты приложениям Windows NT для обработки, передачи в сеть, архивирования и пр. (рис. 4).
Рис. 4. Взаимодействие двух ОС в едином комплексе
2. Вариант расширений реального времени фирмы VenturCom выглядит иначе: здесь сделана попытка “интегрировать” реальное время в Windows NT путем исследования причин задержек и зависаний и их устранения с помощью подсистемы реального времени. Решения фирмы VenturCom (RTX 4.2) базируются на модификациях уровня аппаратных абстракций Windows NT (HAL, Hardware Abstraction Layer) - программного слоя, через который драйверы взаимодействуют с аппаратурой. Модифицированый HAL и дополнительные функции (RTAPI) отвечают за стабильность и надежность системы, обеспечивая отслеживание краха Windows NT, зависания приложений или блокировку прерываний. В состав RTX входит также подсистема реального времени RTSS, расширяющая Windows NT дополнительным набором объектов (аналогичным стандартным, но с атрибутами реального времени). Среди новых объектов - потоки и процессы, управляемые специальным планировщиком реального времени (256 фиксированных приоритетов, алгоритм - приоритетный с вытеснением). Побочной возможностью RTX является простое создание программ управления устройствами, так как среди функций RTAPI есть и функции работы с портами ввода-вывода и физической памятью. Решения VenturCom характерны еще и тем, что они предоставляют совершенно экзотическую для NT возможность конфигурирования Windows NT и создания встроенных конфигураций (без дисков, клавиатуры и монитора).
Несмотря на неоднозначное (а на самом деле как раз однозначное!) отношение традиционных пользователей систем реального времени ко всему, что связано со словом “Microsoft”, необходимо констатировать факт: появился новый класс ОСРВ - расширения реального времени для Windows NT. Результаты независимого тестирования этих продуктов показывают, что они могут быть использованы для построения систем жесткого реального времени.
Область применения таких расширений - большие системы реального времени, где требуется визуализация, работа с базами данных, доступ в Интернет и пр. (рис. 5).
Тенденции развития ОСРВ
После того как мы попытались навести порядок в мире ОСРВ, предложив классификацию систем, придется этот порядок разрушить, рассказав о том, как развивается мир систем реального времени.
Один из видимых процессов - сближение систем различных классов. Так, во многих ОСРВ с ядром реального времени и UNIX реального времени (UNIX РВ) появились в последнее время кроссовые системы разработки высокого качества, характерные для ОСРВ класса “исполнительные системы реального времени”. И это - общая тенденция. Резидентные средства разработки для ОСРВ, поддерживающих многие целевые архитектуры, уже выглядят как архаизм. Например, мощные кроссовые системы разработки появились в таких ОСРВ, как OS9 (с ядром реального времени ) и LynxOS (UNIX реального времени).
Такая же картина наблюдается в области систем исполнения ОСРВ: в продуктах класса “UNIX РВ” и “ядра РВ” появляются новые компактные варианты систем исполнения с малым временем переключения контекста (качество класса “исполнительные ОСРВ”). Примерами могут служить OS9, QNX, LynxOS.
Нельзя не заметить и еще одну тенденцию - появление во многих ОСРВ таких продуктов, как Real-Time Java и Embedded Java. Сейчас Java - один из обязательных атрибутов систем реального времени.
Интересно, что в последнее время в ряде ОСРВ (QNX, LynxOS) появились дополнительные библиотеки, реализующие подмножества программного интерфейса Win32. Аналогичные процессы происходили не так давно в отношении стандарта POSIX 1003.1 (базовый программный интерфейс UNIX). В итоге многие ОСРВ стали POSIX-совместимыми. Видимо, в недалеком будущем они станут еще и Win32-совместимыми.
Говоря о тенденциях развития ОСРВ, нельзя обойти вниманием вопрос, о котором сейчас много говорят и пишут. Я имею в виду проблему операционной системы Windows CE, ее позиционирования по отношению к ОСРВ.
Версии Windows CE, появившиеся к настоящему моменту (2.0 и 2.1), никак не назовешь системами реального времени. Здесь можно говорить скорее о поиске, в котором находятся специалисты Microsoft, чем о какой-то магистральной линии развития. Так, программные интерфейсы для драйверов 2.1 и 2.0 несовместимы друг с другом, причем в версии 2.1 появились существенные недостатки, обуславливающие большие задержки при операциях ввода-вывода. Появление версии 3.0, о которой уже известно, что она будет существенно отличаться от предыдущих, прояснит ситуацию и позволит понять, как будет развиваться Windows CE дальше. Несомненно одно: Microsoft открыла проект CE c целью выйти на рынок встроенных систем и, наверное, достигнет многого на этом поприще. Однако встроенные системы и системы реального времени - не одно и то же. Различные интеллектуальные калькуляторы, электронные записные книжки, переводчики, органайзеры и другие инструменты составляют огромный рынок сбыта - именно туда направлены интересы Microsoft и требования именно этого рынка будут определять технические решения в области СЕ, а никак не требования жесткого реального времени. Создать же универсальную систему, удовлетворяющую противоречивым требованиям, невозможно. Поэтому маловероятно, что Windows CE составит серьезную конкуренцию системам, о которых говорилось в этой статье.
С автором статьи можно связаться по телефону: (095) 742-6828 или по E-mail: rtsoft@rtsoft.msk.ru.
Окончание. Начало см. PC Week/RE, № 8/99, с. 17.