SCADA, АСУ ТП, контроллеры – основная тематика журнала «ИСУП»
Журнал «Информатизация и Системы Управления в Промышленности» публикует тематические материалы посвященные SCADA, АСУ ТП, контроллерам, автоматизации в промышленности.

Реальное время и Windows

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

ЗАО «РТСофт», г. Москва

RTSoft_new_Site.gif


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

Одной из весьма удачных попыток приблизиться к реализации мечты человечества о «сверхуниверсальной» ОС является расширение RTX (Real Time eXtension), позволяющее добавить в стандартные офисные и встраиваемые операционные системы семейства Windows (кроме линейки Windows CE) поддержку реального времени. Но до появления операционной системы Windows NT выход на рынок такого продукта, как RTX, был невозможен.


Windows NT как необходимое условие

Создатели расширения RTX стремились к тому, чтобы популярную недорогую ОС общего назначения можно было комфортно использовать во встраиваемых системах и системах жесткого реального времени. Как уже было сказано, сама эта идея родилась в незапамятные времена, однако реальный шанс для ее воплощения появился лишь с началом эры Windows NT. Став, по сути, первой устойчивой многозадачной ОС общего назначения (в силу своих архитектурных особенностей операционные системы MS-DOS, Windows 3.xx и Windows 9x не могли служить основой для профессиональных многозадачных и реально устойчивых проектов) от Microsoft или, если угодно, первой «профессиональной» ОС с человеческим лицом (высокие профессиональные качества данной операционной системы были признаны даже специалистами из мира Unix, не скрывавшими своего, мягко говоря, не очень высокого мнения обо всем, что связано с MS-DOS, Windows 3.xx и Windows 9x), платформа Windows NT открыла новую эру в истории корпорации Microsoft и в истории операционных систем вообще. А с легкой руки компании VenturCom, создавшей расширение RTX, – и в истории систем реального времени.


pic1.jpg

Рис. 1. Внутреннее устройство RTX


Что касается рынка встраиваемых компьютерных технологий (ВКТ), роль Windows NT в его формировании и развитии также весьма велика. Если о масштабном применении Windows 95 и Windows 98 во встраиваемых приложениях не могло быть и речи, то Windows NT и ее производные – уже совсем другое дело, и в середине 90 годов прошлого века встраиваемые проекты на базе Windows NT стали возникать массово. Для комфортного использования Windows NT во встраиваемых системах и задачах реального времени разработчикам не хватало лишь трех вещей:
1_возможности уменьшать размеры ОС до приемлемых величин;
2_средств обеспечения работы ОС в бездисковых конфигурациях (из флеш-памяти), в т.ч. без монитора и без клавиатуры;
3_средств обеспечения детерминированного поведения.


pic2.jpg

Рис. 2. Окно настроек RTX


Программные технологии компании VenturCom

В ответ компания VenturCom выпустила свои теперь уже легендарные продукты – Component Integrator и RTX. Инструмент Component Integrator представлял разработчику ОС Windows NT в качестве «кубиков» – отдельных компонентов, из которых он мог легко собрать операционную систему с необходимой только ему функциональностью, расширение же RTX позволяло добавлять в обычную «настольную» ОС Windows NT поддержку работы в режиме жесткого реального времени.

Результатом применения Component Integrator являлось значительное (нередко в несколько раз) снижение требований к аппаратуре, а также дополнительное повышение надежности и производительности. Впоследствии чрезвычайно успешная технология декомпозиции и сборки нужного образа для встраиваемой системы Component Integrator была куплена корпорацией Microsoft и под именем Component Designer стала основой нового бизнес-направления Microsoft: производство и поставка встраиваемых операционных систем (продуктовая серия Windows Embedded).
Что касается RTX, то этот продукт компании VenturCom позволил и вовсе доселе немыслимое: использовать стандартные «настольные» операционные системы Microsoft, в том числе и в приложениях реального времени (операционные системы серии Windows CE могут быть сконфигурированы как самые настоящие ОСРВ, однако они не базируются на ядре NT и с архитектурной точки зрения имеют мало общего с остальными ОС семейства Windows). За неброским названием «Real-Time eXtension» скрывается весьма мощный программный продукт, открывающий перед Windows-пользователями двери в мир систем с детерминированным поведением.

Движение по направлению к «сверхуниверсальной» операционной системе1 осуществлялось, таким образом, в два этапа: сначала бывшие сотрудники компании DEC совместили удобство Windows с надежностью профессиональных ОС, затем специалисты компании VenturCom добавили к этому сочетанию возможность оптимального выбора нужных компонентов ОС и временной детерминизм.

В настоящее время поставками расширения RTX занимается компания IntervalZero Inc., штат которой почти полностью укомплектован бывшими сотрудниками компании VenturCom. Этому предшествовала следующая цепочка событий: в 2004 году компания VenturCom сменила название на Ardence, затем в 2006 году компания Ardence была куплена корпорацией Citrix, наконец, в 2008 году на основе подразделения корпорации Citrix, занимавшегося ПО реального времени, была создана отдельная компания, получившая название IntervalZero Inc. Данное название носит характер ребрендинга и призвано подчеркнуть, что своими продуктами компания IntervalZero стремится обеспечить минимальные задержки в работе системы. В результате всех этих пертурбаций сегодня решения серии RTX развивает и поддерживает та же команда, что и раньше, поскольку костяк технических специалистов и менеджеров легендарной компании VenturCom перешел во вновь образованную компанию IntervalZero практически в полном составе.

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


pic3.jpg

Рис. 3. Справочная система RTX


Что у RTX внутри

Продукт RTX состоит из двух частей. Первая часть – пакет разработчика RTX SDK (Software Development Kit) – предназначена для создания собственных приложений для работы в среде RTX. Вторая часть – подсистема исполнения RTX Runtime – представляет собой непосредственно подсистему реального времени для обслуживания приложений RTX. Подсистема RTX Runtime устанавливается на целевые системы, где предполагается запуск RTX-приложений. Пакет разработчика также включает в себя подсистему реального времени, поэтому разрабатываемые приложения RTX можно запускать и отлаживать непосредственно на локальном месте разработчика. Кроме того, очень ценным свойством SDK является его тесная интеграция со средой разработки Visual Studio от компании Microsoft.

На момент написания статьи последней версией RTX являлась RTX 2009. С этой версии нумерация слегка изменилась. Ранее версии имели номера (вплоть до 8.1.1), теперь вместо номеров используются годы выпуска. Компания IntervalZero обеспечивает 10-летний срок поддержки своих продуктов, поэтому, например, приобрести системы исполнения к ранее купленной версии не составляет труда.

Каким образом можно создать на основе Windows систему реального времени? Стоит сразу отметить, что все предлагаемые на рынке решения не меняют функциональность и возможности самой ОС Windows; в ее поведении и работе ничего не меняется. Подсистема, реализующая функции ОСРВ, работает «рядом» с Windows. Обычные Windows-задачи выполняются в недетерминированной среде, как и раньше. Один из вариантов реализации подобного механизма – разделение ресурсов между ОС Windows и подсистемой реального времени. Подобный подход реализовала, например, компания TenAsys, предлагающая продукт INTime. При использовании INTime на одной аппаратной платформе запускаются две виртуальные машины – с ОС Windows и с подсистемой реального времени INTime. Здесь в целом неважно, какая ОС выполняется параллельно с подсистемой реального времени, поддержка Windows определяется только наличием модифицированного HAL для работы в таком режиме и наличием API для связи задач, работающих в режиме реального времени и в Windows-среде. С популяризацией многоядерных архитектур стало возможным и просто выделение отдельных ядер под Windows и под самостоятельную ОС реального времени. Однако довольно сложная архитектура того же INTime не позволяет добиться высокой производительности в задачах реального времени.

В отличие от описанного подхода RTX тесно интегрируется с ОС Windows. На рис. 1 приведена его архитектура. RTX дополняет стандартный HAL Windows своим расширением (RTX HAL Extension). На этом уровне кроме организации доступа к аппаратуре обрабатываются прерывания от таймера подсистемы реального времени. Непосредственно функциональность реального времени реализует слой RTSS (Real-Time SubSystem). Это ядро всей подсистемы реального времени. Здесь находится свой планировщик, который оперирует выполнением задач реального времени и предоставлением ресурсов задачам Windows-среды. Фактически любая задача RTSS имеет более высокий приоритет, нежели любая задача, выполняющаяся в Windows. Также этот слой полностью реализует API реального времени (RealTime API – RTAPI), на основе которого создаются приложения подсистемы RTSS.

Приложения реального времени (RTSS Process) здесь выполняются на уровне ядра Windows, имеют те же привилегии и ограничения, что и драйверы устройств. Этот подход отличается от других реализаций (например, INTime обеспечивает приложениям реального времени пользовательский режим, собственное адресное пространство и изоляцию). Но за счет этого достигается очень быстрое переключение контекста задач.

Доступ к функциям RTAPI возможен как для процессов RTSS, так и для «обычных» приложений Win32. Это позволяет выделять в Windows-задачах отдельные критичные ко времени выполнения участки. Такой возможности лишены системы, где Windows и подсистема реального времени работают параллельно. Кроме того, расширение интерфейса Win32 API функциями RTSS позволяет приложениям Win32 и приложениям RTSS обмениваться данными.

Что RTX может дать разработчику? Во-первых, использование стандартной ОС Windows позволяет обойтись без дополнительного аппаратного обеспечения и специализированных ОСРВ. Весь проект от начала до конца может быть реализован специалистами, ранее разрабатывавшими только обычные Windows-приложения, т.к. API RTX максимально приближен к API Win32 и не требует большого времени на освоение. Благодаря огромному сходству между этими двумя API разработчикам, никогда не имевшим дело с ОСРВ, не составит большого труда научиться создавать приложения реального времени под RTX.

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


pic4.jpg

Рис. 4. Пользователям среды Microsoft Visual Studio доступны шаблоны RTX-приложений


Несмотря на тесную интеграцию с операционной системой, RTX обладает таким важным свойством, как устойчивость к сбоям среды Windows. Подсистема RTSS умеет корректно обрабатывать завершения Windows, как штатные, так и аварийные («синий экран»). Также в RTX имеется механизм, с помощью которого можно сделать доступной память, которую «не видит» Windows. Этой цели служат, в частности, функции PAE (Physical Address Extensions), расширяющие адресное пространство до 36 бит и позволяющие получать на 32-разрядных системах доступ к 64 Гбайт памяти. Еще одной крайне важной особенностью RTX является организация связи между задачами Win32 и RTSS. Механизмами взаимодействия процессов (IPC) являются привычные события, мьютексы, семафоры и общая память. При этом взаимодействие между детерминированной подсистемой RTSS и недетерминированной подсистемой Windows организовано так, чтобы исключить перекрестное влияние на их работу. Еще одним механизмом, направленным на обеспечение безопасности взаимодействия подсистем, является механизм прокси-процессов, относящийся к воздействию из среды Windows на RTSS-окружение. Но самым важным свойством, которое появилось в версии RTX 2009, является поддержка для задач RTSS работы в режиме SMP – симметричной мультипроцессности. Версии с поддержкой SMP и без поддержки SMP теперь есть как у SDK, так и Runtime-части.

Несмотря на сложность архитектуры RTX, для пользователя общение c RTX является простым и прозрачным. Конечно, знание особенностей функционирования RTX способствует созданию более совершенных систем и ускорению их отладки. Но и начать работать с RTX неподготовленный человек может очень быстро. Например, свойства подсистемы RTX задаются из одного довольно простого приложения. На рис. 2 приведен пример одной из закладок этого приложения по настройке работы с памятью.

Плюс к тому, в составе RTX SDK имеется обширная документация по работе с RTX (рис. 3). Она скомпонована в виде одного файла справки и охватывает как объяснение структуры RTX, так и приемы программирования, настроек, включая полное описание API и требований к разработке программ.

Программисты, знакомые с Microsoft Visual Studio, имеют возможность пользоваться данным инструментарием для разработки задач RTX. В среду разработки добавляются шаблоны возможных вариантов приложений RTX (рис. 4). Стандартные отладочные механизмы Microsoft Visual Studio при этом доступны для отладки приложений RTX. По сути, вся разработка ведется привычными методами с помощью известных инструментов, что позволяет запустить новый проект очень быстро. В целом можно отметить следующие свойства системы разработки RTX:
Интеграция с Microsoft Visual Studio от версии 6.0 до версии 2008, причем для версий, начиная с 2003, доступно простое создание приложений RTSS, драйверов и сетевых конфигураций с помощью шаблонов-мастеров (wizards) (рис. 4).

Поддержка отладки в режиме «хост – целевая система» (host-target) и отладки на локальной системе.

Расширение отладчика уровня ядра Microsoft WinDbg для отображения процессов и нитей RTSS наряду с объектами IPC.

Графический инструмент RTSS Object Viewer для отображения в наглядном виде состояния всех процессов и нитей, объектов IPC внутри RTSS окружения.

Инструмент трассировки TimeView, позволяющий эффективно записывать и отображать последовательность работы потоков в пределах RTX. Он спроектирован с минимальным уровнем влияния на работу подсистемы RTSS и обладает удобным графическим интерфейсом как в режиме отображения данных, так и для мастера установок сбора данных (Data Collection Setup Wizard).

Для знакомства с RTX доступна оценочная (Eval uation) версия, работающая 30 дней. В ней присутствует практически все, что есть в коммерческой версии SDK, включая документацию, поддержку интеграции с Microsoft Visual Studio, средства оценки производительности системы, тестовые примеры. Оценочная версия позволяет «пощупать» большую часть функциональности настоящего RTX и сделать вывод относительно ее применимости.

Учитывая, что RTX позволяет получать реальное время в системах под управлением ОС общего назначения, сфера влияния RTX весьма обширна. Сегодня можно говорить о более чем 750 000 применений продукта. В промышленности, медицине и телекоме пользователями RTX являются такие компании, как Siemens, ABB, Quanser, National Instruments, VMIC, General Electric. В аэрокосмической отрасли RTX используется, например, компаниями Raytheon, Boeing, Honeywell. Автомобильная промышленность также не обошла этот продукт вниманием: реализованные RTX-проекты есть у Porsche, у Renault, у Peugeot-Citroen и у других автопроизводителей. Хорошим практическим примером из промышленного сектора может служить проект Siemens по переводу своей Windows-платформы для контроллеров на базу RTX, реализация которого позволила значительно сократить затраты на портирование продукта в среду реального времени и ускорить время разработки. В военной сфере RTX использовался, в частности, компанией Raytheon в системах обеспечения станций по тестированию ракет Patriot. Здесь RTX позволил отказаться от разработки и поддержки частных аппаратных решений, которые были заменены программным решением, работающим в режиме реального времени. В России расширение RTX чаще всего используется в промышленной автоматизации, а также в системах контроля, тестирования и измерений.

Исходя из вышесказанного, можно заключить, что RTX – это очень мощный, современный и вместе с тем простой в использовании продукт, позволяющий строить Windows-ориентированные системы реального времени. Использование RTX наиболее эффективно в следующих ситуациях:
Имеется штат разработчиков, хорошо знакомых с Windows и не имеющих опыт работы с ОСРВ. В этом случае схожесть с Windows и ориентированность RTX на Windows-разработчиков позволяет максимально быстро освоить RTX и внедрить в проект систему реального времени.
Уже имеются Windows-прило­жения, требующие перевода на работу в режиме реального времени. Такую задачу RTX позволяет решить наиболее эффективно и быстро.
В проекте используются Windows-приложения, и нет необходимости применять отдельное аппаратное обеспечение для системы реального времени. RTX позволяет снизить затраты на оборудование и уменьшить полную стоимость проекта за счет запуска подсистемы реального времени совместно с Windows на одной аппаратной платформе. А при использовании многоядерных процессоров можно избежать и снижения производительности системы. Поддержка SMP-архитектур в задачах реального времени еще больше расширяет сферу применимости RTX, позволяя наращивать мощь подсистемы реального времени без особых затрат.


Преимущества RTX

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

Кроме того, к счастью или к сожалению, лучшие на сегодняшний день средства разработки, отладки, трассировки и т.п. созданы для ОС семейства Windows. Мощь, цена и удобство этих инструментов не идут ни в какое сравнение с аналогичными параметрами существующих средств разработки под VxWorks, QNX и других ОСРВ. Инструменты Windows-разработчика хороши не только в связи с наличием развитой функциональности, но и по причине невысокой цены, а также широчайшей распространенности и известности. Эта объективно сложившаяся ситуация также мотивирует людей изыскивать способы использовать одну ОС для всех приложений, включая встраиваемые приложения и приложения реального времени. Расширение RTX от компании IntervalZero является как раз таким способом. Задумайтесь: так ли уж нужны вам все эти ОСРВ, если пакет Visual Studio у вас уже есть, недостатка людей, умеющих им пользоваться, на рынке не предвидится, а расширение RTX стоит сущие копейки? Если вы создаете бездисковое решение реального времени, достаточно использовать RTX в комбинации с операционной системой серии Windows Embedded – все равно это будет дешевле, быстрее и проще, чем при использовании любой традиционной ОСРВ; если же бездисковость не требуется – все еще лучше, поскольку тогда можно ограничиться самой обычной недорогой ОС настольного класса – той самой, что работает на вашем персональном компьютере.

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

Сегодня на рынке предлагается относительно много ОСРВ, различающихся по производительности, сетевым возможностям, потреблению ресурсов, надежности, наличию сертификатов безопасности, адекватности свойств ряду вертикальных рынков типа авионики и т. п. И все же ОСРВ – это крайнее средство, к которому следует прибегать лишь тогда, когда все иные пути отрезаны. Прежде чем покупать ОСРВ, удостоверьтесь в том, что вы не можете решить вашу задачу с использованием обычной «стандартной» ОС. Если никакая из разновидностей классических ОС Windows и Linux вам не подходит, подумайте над тем, как интегрировать в компьютер, работающий под управлением Windows / Linux, подсистему реального времени, дабы вся работа по реализации вашего проекта осуществлялась в рамках одной стандартной ОС. И лишь в самую последнюю очередь, вполне убедившись, что ни первый, ни второй варианты вам не подходят, подумайте о том, как решить свою задачу при помощи операционной системы реального времени. Бывает, конечно, и так, что невозможность использования стандартных операционных систем очевидна изначально. Если, например, вам необходима сертификация по стандарту DO-178B или необходимо обеспечить высшие уровни надежности по EAL, ни Linux, ни Windows, ни RTX вам точно не помогут. 


Статья опубликована в журнале «ИСУП», № 1(25)_2010

А.В. Исаев, директор бизнес-направления системного ПО,
 Отделение базовых аппаратных и программных средств; 
Л.Г. Акиншин, обозреватель журнала «МКА: мир ВКТ», 
ЗАО «РТСофт», г. Москва,
тел.: (495) 967-1505, 
e-mail: pr@rtsoft.ru