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

Все начиналось с NT

Создатели RTX стремились к тому, чтобы популярную операционную систему общего назначения можно было использовать во встраиваемых системах и системах «жесткого» реального времени. А условия для воплощения этой идеи сложились после выхода на рынок Windows NT — первой устойчивой многозадачной операционной системы общего назначения от Microsoft. С середины 90-х годов прошлого века встраиваемые проекты на базе Windows NT стали появляться массово. Но для комфортного использования Windows NT во встраиваемых системах и задачах реального времени разработчикам не хватало трех вещей:

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

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

Результатом использования Compo­nent Integrator являлось значительное (нередко в несколько раз) снижение требований к аппаратуре, а также дополнительное повышение надежности и производительности. Впоследствии технология Component Integrator была куплена корпорацией Microsoft и под именем Component Designer стала основой нового бизнес-направления Microsoft: производство и поставка встраиваемых операционных систем, то есть линейки продуктов Windows Embedded.

Что касается RTX, то этот продукт компании VenturCom позволил и вовсе доселе немыслимое: использовать стандартные «настольные» операционные системы Microsoft в том числе для приложений реального времени.

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

RTX изнутри

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

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

Строим систему реального времени

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

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

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

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

Как показано на рисунке, в составе RTX присутствуют компоненты, организующие для приложений RTSS сеть реального времени и работу в реальном времени с устройствами USB. Это стек протоколов RT-TCP/IP и стек RTX USB. Сетевой стек обеспечивает работу всех сетевых протоколов и физического уровня в детерминированном режиме. Аналогично осуществляется поддержка USB — все компоненты работают с полностью предсказуемыми задержками.

Архитектурная схема RTX
Рисунок. Архитектурная схема RTX

Фактически наличие стека реального времени означает работу всех функций и драйверов с гарантированными временами. Таким образом, разработчик может быть уверен, что входящий пакет будет обработан и исходящие данные будут доставлены до физического уровня за ограниченный промежуток времени. При этом наличие стека RT-TCP/IP не означает, что вся сеть будет работать в реальном времени, даже если данный стек будет стоять на всех узлах сети. Сеть состоит из многих элементов, в частности в ней есть оборудование, которое реализует ее топологию. На физическом уровне сети могут происходить различные процессы, дополнительное оборудование может вносить задержки, кроме того, операционная система Windows тоже не бездействует в отношении сетевой активности. Поэтому сетевой стек реального времени позволяет получить достаточную производительность, но не гарантирует работу сети без сбоев и задержек. Стек RT-TCP/IP предназначен только для достижения максимума производительности в сетевых задачах. Наиболее приближенную к реальному времени работу сети можно получить, если выделить все сетевые адаптеры для RTX в один сетевой сегмент.

В помощь разработчику

Какие реальные выгоды может получить разработчик от RTX? Во-первых, использование стандартной операционной системы Windows позволяет обойтись без дополнительного аппаратного обеспечения и специализированных систем реального времени. Весь проект от начала до конца может быть реализован специалистами, ранее разрабатывавшими только обычные приложения Windows, поскольку API RTX максимально приближен к API Win32 и не требует много времени на освоение. Благодаря огромному сходству между этими двумя API, разработчикам, никогда не имевшим дела с программированием для систем реального времени, не составит труда научиться создавать приложения реального времени под RTX. Чему весьма поспособствует и интеграция со знакомой системой разработки Microsoft Visual Studio. Все это в совокупности позволит значительно (в несколько раз) сократить затраты на развертывание проекта, поскольку стоимость владения и применения RTX сопоставима со стоимостью традиционных систем реального времени (а в большинстве случаев ниже ее).

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

Кроме того, несмотря на тесную интеграцию с операционной системой, 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 — симметричной мультипроцессорности. В версии RTX 2011 было отменено деление продуктов по признаку наличия либо отсутствия поддержки SMP. Теперь при разработке программ с помощью SDK всегда есть возможность использовать SMP, а Runtime отличаются только числом ядер, которые можно выделить под RTX (от 1 до 31). В сочетании с различным оборудованием запуск RTX возможен в различных режимах.

1. Режим без мультипроцессорности. Данный вариант поддерживали предыдущие версии, без SMP. Кроме того, это единственный вариант работы для RTX Runtime Solo с поддержкой выделения одного ядра. RTX и Windows выполняются на одно- или многопроцессорной (многоядерной) системе. Здесь возможны два варианта.

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

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

Наличие различных версий SDK и Runtime позволяет управлять вложениями в систему посредством выбора нужного числа поддерживаемых ядер. Чем больше в системе ядер, поддерживаемых RTX, тем дороже конечное решение. Все Runtime, даже с поддержкой выделения 31 ядра, сохраняют поддержку работы на одно- или двухъядерных системах, где нельзя реализовать режим SMP для RTSS-задач. Число используемых подсистемой RTSS ядер задается в настройках и ограничено лишь тем максимумом, который поддерживает установленный в систему Runtime.

Общение c RTX

Архитектура RTX достаточно сложна, однако для пользователя это решение является простым и прозрачным. Свойства подсистемы RTX задаются из одного довольно простого приложения (экран 1); к тому же в составе RTX SDK имеется обширная документация по работе с RTX (экран 2).

Экран 1. Окно настроек RTX
Удобная справочная система RTX
Экран 2. Удобная справочная система RTX

Программисты, знакомые с Micro­soft Visual Studio, имеют возможность пользоваться данным инструментом для разработки задач RTX. В среду разработки добавляются шаблоны возможных вариантов приложений RTX (экран 3). Стандартные отладочные механизмы Microsoft Visual Studio при этом доступны для отладки и приложений RTX. По сути, вся разработка ведется привычными методами и с помощью известных инструментов.

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

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

Правильный выбор

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

Читателю на заметку

Число применений продукта RTX составляет сегодня около миллиона. В промышленности, медицине и области телекоммуникаций пользователями 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.

Насколько быстро работает комбинация Windows + RTX по сравнению с «чистой» Windows? Прежде всего, по сравнению с «чистой» операционной системой Windows комбинация из Windows и RTX в любом состоянии имеет предсказуемое время отклика для задач реального времени. При этом RTX работает с интервалом до 1 мкс, в то время как Windows оперирует в лучшем случае 1 мс. Говорить о времени реакции самой операционной системы Windows нельзя, поскольку она не является операционной системой реального времени и потому не обладает детерминированным поведением. Можно сравнить время реакции на одно и то же событие в Windows и в RTX на одной аппаратной платформе. Например, даже на такой платформе, как Intel Atom, расширение RTX обеспечивает время реакции на срабатывание таймера от 1 до 11 мкс, а Windows — от 600 до 1500 мкс.

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

Много ли места занимает RTX? Нет. В том, что касается потребления памяти, дискового пространства и т. п., расширение RTX отличается предельной скромностью: RTX в целевом образе может занимать не более 4 Мбайт. Идет ли речь о персональном компьютере или же о каком-нибудь компактном устройстве, докупать оперативную память, флэш-память и/или дисковые накопители для RTX вам точно не придется. Общий принцип таков: расширение RTX будет прекрасно себя чувствовать на любой аппаратной конфигурации, где работает стандартная Windows. Львиная доля потребляемых ресурсов всегда приходится именно на Windows, вклад же RTX пренебрежимо мал.

Есть ли какие-либо особенности у аппаратных платформ для расширения RTX? Никаких. Там, где работает сама операционная система Windows — будь то решение типа PC Box, мобильный компьютер, система VME или CompactPCI, настольная персональная система, сервер или что-то еще, — сможет работать и расширение RTX. Единственное «жесткое» аппаратное ограничение со стороны RTX — это наличие x86-совместимого центрального процессора, но данное требование выполняется автоматически, поскольку стандартные версии операционной системы Windows рассчитаны только на архитектуру x86, а все версии Windows Embedded для этой архитектуры доступны. Продукт RTX совместим с любыми процессорами x86, от самых современных до весьма древних.

Можно ли использовать расширение RTX как дополнительное средство, повышающее надежность системы? Да, RTX можно использовать в таком качестве, поскольку во многих случаях после того, как Windows зависает или даже появляется «синий экран», подсистема RTX продолжает работать и как минимум способна обеспечить мягкую перезагрузку системы.

Можно ли использовать расширение RTX в бездисковых конфигурациях? Не только можно, но и очень полезно. Расширение RTX может работать как со стандартной Windows, так и со встраиваемыми операционными системами Windows Embedded. При использовании с Windows Embedded расширение RTX способно улучшить качество конечного изделия и дать ему дополнительные преимущества за счет повышения надежности и обеспечения поддержки реального времени.

Чем отличается расширение RTX от других аналогичных продуктов, таких как INTime компании TenAsys? При использовании INTime на одной аппаратной платформе фактически работают две разные операционные системы: Windows и дополнительная подсистема реального времени, которая представляет собой, по сути, самостоятельную операционную систему с уровнями безопасности, разделением памяти, распределением процессорного времени и т. п. Современные многоядерные процессоры позволяют реализовать данный подход с использованием как INTime, так и какой-нибудь классической системы реального времени вроде QNX или VxWorks. Расширение же RTX встраивается в Windows очень плотно, становится в полном смысле этого слова частью операционной системы и, работая целиком на уровне драйверов, обеспечивает очень быстрое переключение задач. К тому же приложения для RTX можно писать в стандартном пакете Microsoft Visual Studio. Если совсем коротко, то основные преимущества RTX по сравнению с INTime — это быстродействие, компактность и удобство.

Облегчает ли расширение RTX создание детерминированных сетевых приложений? Да, конечно. Это одна из традиционно сильных сторон RTX. Комплект поставки RTX включает детерминированные стеки и полный набор других компонентов, необходимых для обеспечения работы сетей Ethernet в реальном времени.

Получается, что расширение RTX позволяет отказаться от традиционных операционных систем реального времени? Да, во многих случаях это именно так! Если задача в принципе может быть успешно решена без применения операционной системы реального времени, ее использовать не нужно. Во всем мире люди, умеющие считать свои деньги, поступают именно так. Расширение RTX уже позволило реализовать сотни тысяч проектов реального времени на базе самых обычных, не встраиваемых версий операционной системы Windows, которые стоят значительно меньше традиционных систем реального времени. Справедливости ради надо признать, что заменить классические профессиональные системы реального времени для любых приложений комбинация Windows + RTX не в состоянии. Однако в силу развития Windows, продукта RTX и современных х86-платформ количество приложений, где возможностей связки Windows + RTX абсолютно достаточно для эффективного решения актуальных задач, постоянно растет.

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

Какие дополнительные аппаратные ресурсы необходимы для полноценной работы расширения RTX? Расширение RTX очень нетребовательно к ресурсам, и в любой реальной системе — настольной рабочей станции, пульте управления, мобильном устройстве либо промышленном контроллере — большая часть ресурсов будет затрачена на саму Windows, настольную либо встраиваемую. Расширение RTX будет прекрасно себя чувствовать на любой аппаратной конфигурации, где работает стандартная Windows.

Верно ли, что при использовании расширения RTX пользователь имеет прямой доступ к оборудованию, как в реальном режиме MS-DOS? Да, это так. Простота работы с оборудованием является одной из основных причин популярности расширения RTX у Windows-разработчиков.

Нужно ли покупать встраиваемую версию Windows (Windows XP Embedded или Windows Embedded Standard) для работы с RTX? Нет, продукт RTX прекрасно работает с обычными «настольными» версиями Windows из коробки. Но использование встраиваемых версий Windows позволяет иметь больше возможностей для создания целевых систем с различной конфигурацией.

Нужно ли приобретать для расширения RTX какие-то специальные средства разработки? Нет, ничего специального для разработки RTX-приложений покупать не нужно, достаточно стандартного пакета Microsoft Visual Studio, который имеется у большинства разработчиков.

Сколько стоит RTX? По сравнению с классическими системами реального времени расширение RTX дешевле: 350 долл. для одной уникальной системы, при этом НДС, согласно действующему российскому законодательству, не взимается.

Насколько сильно снижается стоимость расширения RTX с ростом числа установок? С версии RTX 2011 цены на единичные установки были снижены и приравнены к тем, которые раньше действовали лишь при покупке десяти и более лицензий. Дальнейшее снижение цен возможно уже для крупных производителей оборудования с сотнями установок. Расширение RTX — это недорогой продукт, и теперь он стал еще более доступным для небольших проектов.

Сложно ли написать драйвер устройства под систему с расширением RTX? Во многих случаях необходимость в отдельном драйвере устройства для задач RTX отсутствует, так как приложение вполне может работать с устройством напрямую. Но если драйвер нужен, написать его под RTX-систему в каком-то смысле даже проще, чем под стандартную операционную систему Windows. Если вы не располагаете собственными инженерными ресурсами для написания драйверов, можно, например, обратиться в компанию РТСофт (www.rtsoft.ru), специалисты которой имеют большой опыт создания RTX-драйверов для самого разного, в том числе уникального, оборудования.

Насколько прост сам процесс интеграции расширения RTX в различные версии Windows? Продукт RTX создавался для того, чтобы было легко и удобно работать, поэтому процесс интеграции этого расширения с базовыми операционными системами хорошо продуман и максимально облегчен. Применительно к настольным версиям Windows дело обстоит проще некуда: на все про все требуется не более двух щелчков мышью. И в случае Windows Embedded интеграция происходит не намного сложнее.

Где можно научиться эффективной работе с расширением RTX? Весь необходимый объем специальных знаний можно получить, например, в учебном центре компании РТСофт (www.rtsoft.ru). Но, как показывает практика, большой необходимости в этом нет. Любой специалист, способный писать приложения для Win32 API, разберется с RTX буквально за пару дней, ведь к его услугам будет полноценная документация, описывающая все аспекты работы RTX и содержащая руководство по программированию. Другими словами, при использовании расширения RTX инвестировать дополнительные средства в обучение разработчиков можно, но не обязательно. Это одно из фундаментальных отличий RTX от традиционных систем реального времени, для эффективного использования которых совершенно необходимы весьма квалифицированные специалисты с соответствующим уровнем зарплаты.

Леонид Акиншин — обозреватель журнала «МКА: ВКС»

Алексей Исаев — директор направления системного программного обеспечения ЗАО «РТСофт»