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

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

Эпоха Windows NT

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

Для формирования и развития рынка встраиваемых компьютерных технологий роль Windows NT была весьма велика. В середине 90 годов прошлого века встраиваемые проекты на базе Windows NT стали появляться массово. Для комфортного использования Windows NT во встраиваемых системах и задачах реального времени разработчикам не хватало трех вещей:

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

Продукты компании 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 в том числе для приложений реального времени.

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

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

Внутреннее устройство RTX

Продукт RTX состоит из двух частей. Первая часть, пакет разработчика RTX SDK, предназначен для создания собственных приложений для работы в среде 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. На рисунке приведена схема интеграции. 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

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

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

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

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

Экран 1. Приложение настроек системы RTX

Экран 2. Справка по RTX

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

Экран 3. Шаблоны RTX-приложений в среде Microsoft Visual Studio

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

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

Алексей Исаев — директор бизнес-направления системного ПО в ЗАО «РТСофт», отделение базовых аппаратных и программных средств
Леонид Акиншин — обозреватель журнала «МКА: мир ВКТ»


Рисунок. Схема интеграции Windows и RTX


Расширяем Windows

егодня можно говорить о более чем 750 тыс. применений продукта 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 (Windows XP Embedded или Windows Embedded Standard) для работы с RTX?

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

Нужно ли покупать для расширения RTX какие-то специальные средства разработки?

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

Можно ли использовать расширение RTX как дополнительное средство, повышающее надежность системы?

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

Влияет ли RTX на характеристики и поведение Windows?

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

Насколько быстро работает комбинация из Windows + RTX по сравнению с «чистой» операционной системой Windows?

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

В каких прикладных областях используется расширение RTX на территории Российской Федерации?

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

Сколько стоит RTX?

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

Можно ли использовать расширение RTX в бездисковых конфигурациях?

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

Говорят, что при использовании расширения RTX пользователь имеет прямой доступ к оборудованию, как в реальном режиме MS-DOS?

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

Сложно ли написать драйвер устройства под систему с расширением RTX?

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

Много ли места занимает расширение RTX?

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

Насколько сильно снижается стоимость расширения RTX с ростом числа установок?

Уже при покупке лицензии на несколько десятков систем цена снижается весьма значительно. Расширение RTX — это недорогой продукт, и потому его система ценообразования очень удобна для пользователей.

Где взять специальные знания для эффективной работы с расширением RTX?

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

Какие дополнительные аппаратные ресурсы нужны для полноценной работы расширения RTX?

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

Облегчает ли расширение RTX создание детерминированных сетевых приложений?

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

Насколько прост сам процесс интеграции расширения RTX в различные версии Windows?

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

Получается, что расширение RTX позволяет отказаться от традиционных операционных систем реального времени?

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

Есть ли какие-либо особенности у аппаратных платформ для расширения RTX?

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

Чем отличается расширение RTX от других продуктов, таких как INTime компании TenAsys?

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