Главная Пресс-центр Статьи и публикации Замечания о выборе операционных систем при построении систем реального времени, "PCWeek", N 1, 2001

Замечания о выборе операционных систем при построении систем реального времени, "PCWeek", N 1, 2001

А. Жданов, А. Латыев., ЗАО «РТСофт», Москва

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

1. Из чего же можно выбирать?

Среди современных операционных систем есть класс продуктов, называемых операционными системами реального времени и разработанных специально для построения систем жесткого реального времени — VxWorks, OS9, QNX, LynxOS, OSE и другие. Эти системы содержат необходимый для достижения этой цели набор инструментов и в некоторых случаях являются единственным выбором — на него приходится идти, невзирая на затраты.

Однако достаточно часто требования к реальному времени (полная предсказуемость времени реакции) допускают компромиссы. Иногда, например, необходимо добиться только нужной средней производительности. Иногда достаточно жестко контролировать только одно из событий, допуская при этом задержки реакций на остальные. В подобных случаях возможности выбора расширяются и желаемых результатов можно достичь, используя такие широко распространенные операционные системы как LINUX, Windows NT, Windows CE, дополняя их расширениями реального времени (RTAI, RT LINUX, RTX), и (или) используя глубокие знания системы и высокое искусство конкретных специалистов.

2. Экономические критерии

Один из главных вопросов, интересующих российского пользователя, — стоимость. Стоимость чего? Казалось бы очевидно, что должна быть важна стоимость проекта в целом. Однако именно об этом чаще всего забывают и, экономя на частностях, увеличивают интегральную стоимость проекта. Одна из стандартных ошибок, например, заключается в том, что величина затрат на программное обеспечение сводится к затратам на покупку операционной системы. И механически выбирается наиболее дешевый из допустимых (иногда недопустимых) вариантов. Ниже приведены основные статьи затрат на программную часть проекта:

стоимость операционной системы и средств разработки;
стоимость разработки (включая затраты на освоение системы);
стоимость дальнейших модификаций проекта;
стоимость лицензий;
стоимость сопровождения;
стоимость возможных рисков.

Эти затраты очевидны и известны. Тем не менее, хочу привести некоторые соображения о возможных «подводных камнях» при оценке стоимостей для разных операционных систем.

Коммерческие операционные системы реального времени

Стоимость операционной системы и средств разработки. Недорогие системы этого класса стоят до $10k (OS9, QNX). Зато нередко можно встретить системы стоимостью порядка $20k (VxWorks). Но это — разовые затраты на полный набор средств разработки. Они легко оправдываются при больших проектах или больших тиражах. Стоимость лицензий для этих систем быстро падает от $200-$1000 за единицу до $10-$50 при больших количествах.

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

Стоимость сопровождения, стоимость дальнейших модификаций, стоимость рисков. Для операционных систем реального времени эти параметры в общем случае ниже, чем для других систем (LINUX, Windows NT). Причем разница тем больше, чем сложнее система, чем жестче к ней требования. Причина проста — необходимые параметры системы достигаются с помощью штатных средств, а не с помощью остроумных нестандартных решений, которые могут оказаться неприменимы при небольшой модификации начальных условий. Что касается стоимости рисков, то она здесь также ниже, ввиду хорошей «обкатанности» систем, т.к. наиболее известные ОСРВ работают в миллионах копий по всему миру в системах разной сложности.

LINUX, RT LINUX, RTAI

Стоимость операционной системы и средств разработки. Стоимость носителя и его пересылки (не более $0-$100).

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

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

Windows NT/2000/NTE/CE, RTX

Стоимость операционной системы и средств разработки. Она, естественно, ниже, чем для ОСРВ, однако полная закупка всех необходимых средств разработки заставит вас потратить около $3000. Что касается систем разработок для Windows CE или RTX, то они выводят вас в ценовой диапазон недорогих операционных систем реального времени.

Стоимость разработки и отладки. Выбор средств разработки и отладки здесь достаточно широк. Однако специализированные средства — для отладки и разработки систем реального времени, драйверов, нужно закупать дополнительно. Вероятность столкнуться с непредвиденными проблемами при использовании стандартных средств разработки невелика, однако нужно отметить, что среда разработки Windows CE еще очень далека от совершенства и время на освоение системы велико.

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

Вы пытаетесь использовать эти ОС в проектах, где этого делать нельзя (сложные системы реального времени);

Ваш заказчик требует перехода на новую версию (например на Windows 2000 с Windows NT или на Windows CE 3.0 с Windows CE 2.12), и Вы увидели, что-либо  поведение системы изменилось, либо не все инструментальные средства третьих фирм, которые Вы использовали ранее, работают в новой версии.

Резюме по экономическим критериям

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

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

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

если после изучения требований проекта вы пришли к выводу, что можете остановиться на операционной системе LINUX (RT LINUX, RTAI), постарайтесь установить кооперацию с компанией, способной консультировать вас при проектировании и способной оказать техническую поддержку, даже если программисты вашей компании уверяют, что они все сделают сами. Постарайтесь тем самым снизить риск больших потерь в ситуации, когда Вы окажетесь лицом к лицу с неожиданной проблемой;

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

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

3. Технические критерии

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

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

Время реакции системы на события, связанные с объектом. Операционные системы реального времени содержат механизмы, гарантирующие заранее вычисленное время реакции системы. Эта гарантия достигается знанием максимального времени блокировок прерываний в системе, времени переключения контекста, времен выполнения различных системных вызовов, применением нужных механизмов диспетчеризации и пр. Т.е. время реакции на события для операционных систем реального времени можно вычислить с большой точностью. Эти вычисления невозможны для операционных систем LINUX и Windows NT — здесь можно полагаться только на результаты тестирования, эмпирические оценки. Часто производительность компьютера подбирается таким образом, чтобы успевать в нужные времена, но сути дела это не меняет, поэтому риски в сложных комплексах могут оказаться велики — при небольшом изменении внешних условий или при модификации приложений времена могут «поплыть». Что касается расширений реального времени для LINUX и Windows NT, то здесь, по крайней мере, можно полагаться на времена, полученные при тестировании.

Какие операционные системы могут быть использованы при разных требованиях к реактивности системы? В табл.1 приведены ориентировочные цифры, дающее представление о порядке времён реакции и более или менее подходящих операционных системах. Ими ни в коем случае нельзя пользоваться как строгими рекомендациями.

Возможность создания бездисковой конфигурации системы. По этому признаку подходят все рассматриваемые операционные системы, кроме Windows NT. Однако и для этого случая есть решение: Windows NT Embedded.

Время перезагрузки системы. Этот параметр кажется второстепенным, однако мы были свидетелями случаев, когда именно этот параметр целиком определил выбор дорогой операционной системы (время перезагрузки не должно было превышать 1 секунду). Этот параметр важен для систем, от которых требуется непрерывная работа; в этих случаях ставятся ловушки, отслеживающие зависание системы или приложений, и, если таковое произошло, автоматически перезагружающие систему (такие ловушки необходимы в системах повышенной надежности, т.к от ошибок., по крайней мере, в приложениях никто не застрахован). В таких случая важным является такое свойство системы, как ее живучесть при незапланированных перезагрузках. Большинство операционных систем реального времени устойчивы к перезагрузкам и могут быть прерваны и перезагружены в любое время.

Время загрузки для разных ОСРВ колеблется от секунды до нескольких десятков секунд. В большинстве систем (OS9, VxWorks) время загрузки можно регулировать, изменяя стартовые последовательности.

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

В Windows NT время загрузки более минуты, система неустойчива к внезапным сбоям. Использование расширений реального времени (RTX) позволяет детектировать зависания системы и выполнить в этих случаях необходимые операции по спасению данных и по выполнению каких-то страховочных действий.

Наличие необходимых инструментальных средств. Чем выше требования к инструментальным средствам, необходимым для создания системы (наличие специфических сетевых протоколов, баз данных, редких компиляторов), тем существенно выше шансы операционных систем LINUX и Windows NT и их расширений реального времени.

Наличие необходимых драйверов устройств. Если разрабатываемая система имеет обширную периферию, то наличие уже готовых драйверов может оказать большое влияние на выбор операционной системы. Естественно, самый большой набор драйверов создан для операционных системах LINUX и Windows NT. Наиболее популярные операционные системы реального времени, такие как VxWorks, OS9, QNX, также имеют обширные наборы готовых драйверов и, кроме того, содержат средства для их быстрой разработки.

Несколько слов в заключение

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

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

19.04.2014