ПРЕСС-ЦЕНТР

Расширение реального времени RTX для Windows: мирное сосуществование с ОСРВ

МКА 5/2005

С.В. Золотарёв, ЗАО "РТСофт"

Цель данной статьи – дать пользователям представление о текущем состоянии расширения реального времени для Windows RTX компании Venturcom. Это желание обусловлено тем, что в среде пользователей по-прежнему наблюдается серьёзный интерес к RTX, однако большинство материалов по этой весьма популярной системе относятся к периоду "младенчества" RTX (1997-1998 г.г.) и уже не отражают современного состояния дел.

Немного истории

Компания Venturcom (теперь Ardence, www.ardence.com, г. Бостон, США) хорошо известна как разработчик двух "революционных" технологий для Windows NT (2000, XP): Component Integrator а, позволяющего использовать Windows для встраиваемых приложений и ставшего основой для Microsoft Windows XP Embedded (1998 год), и расширения реального времени RTX (Real Time eXtention), позволяющего создавать приложения с детерминированным и очень малым временем реакции на внешние события.

В настоящее время на рынке присутствуют несколько расширений реального времени Windows, которые в той или иной степени решают одну и ту же задачу – добавляют к Windows возможности работы в реальном времени. Назовём некоторые из них: INtime фирмы RadisSys Corporation (теперь TenAsys, www.tenasys.com), Hyperkernel фирмы Imagination Systems (затем Nematron, http://www.nematron.com/HyperKernel/index.shtml), CeWin фирмы KUKA Controls GmbH (http://www.kuka-controls.com). Будучи наиболее широко распространённым расширением реального времени для Windows (особенно в России), RTX во многом определил базовые подходы.

ОСРВ и расширения реального времени

Дискуссия о месте расширений реального времени к офисным операционным системам (Windows и Linux) ведётся уже много лет. Основные аргументы сторонников такого подхода хорошо известны и весьма убедительны. Они основываются как на возможностях самого расширения реального времени, так и на достоинствах базовой операционной системы (то есть Windows NT/XP), среди которых [9]:

  • возможность создания приложений с характеристиками (по времени реакции, надёжности и компактности), близкими к приложениям в среде операционных систем реального времени (ОСРВ);
  • постоянно растущая функциональность Windows-решений при одновременном падении цены на средства разработки и исполнительные (run-time) системы;
  • наилучшая поддержка аппаратных средств среди всех операционных систем (поддержка Windows всеми производителями аппаратных средств для архитектуры Intel x86);
  • огромный набор приложений и средств разработки различного уровня;
  • большое число квалифицированных специалистов и пользователей Windows;
  • большое количество литературы по Windows-решениям.

С другой стороны, разработчики операционных систем реального времени правомерно указывают на неполные возможности (с точки зрения классических ОСРВ) расширений реального времени для Windows (впрочем, как и для Linux) [10]. Однако многие из ограничений расширений реального времени [11] успешно устранены в процессе их развития и развития самой Windows, в частности, невозможность создания компактных приложений для загрузки с flash-диска.

Основные возможности RTX

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

  • процессы реального времени, управляемые собственным планировщиком. Этот планировщик работает уже по всем правилам планировщиков реального времени и использует алгоритм вытеснения по приоритетам. Кроме того, процессы реального времени имеют преимущество перед стандартными процессами Win32, вытесняя их. Процессы реального времени обладают совсем иной по сравнению со стандартными процессами Windows степенью надёжности и специфической функциональностью;
  • взаимодействие процессов реального времени и стандартных процессов Win32 друг с другом;
  • программный интерфейс RTAPI для процессов реального времени, реализующий развитый набор средств, характерный для программных интерфейсов (API) ОСРВ;
  • одно и то же приложение может использовать как стандартные функции Win32, так и специфические функции API реального времени (RTAPI), что позволяет выделять критические участки кода приложений Windows и контролировать время и надёжность их выполнения;
  • контроль работоспособности и времён реакции системы (зависания стандартных приложений Windows или крах системы не приводят к зависанию приложений реального времени);
  • работа с быстрыми часами и таймерами высокого разрешения;
  • прямой доступ к памяти и физическим устройствам;
  • возможность интеграции с Windows XP Embedded, то есть возможность построения компактных конфигураций (в том числе систем без клавиатуры и монитора).

Компоненты RTX

Расширение RTX включает в себя следующие компоненты:

  • уровень аппаратных абстракций (HAL) реального времени (Real-Time HAL);
  • подсистему реального времени RTSS (Real-Time Subsystem);
  • программный интерфейс расширений реального времени RTAPI (Real-Time Appilication Programming Interface);
  • RTWinAPI - стандартизованный интерфейс между Windows CE, NT, 2k, XP и ETS (Phar Lap Embedded ToolSuite);
  • RT-TCP/IP, который поддерживает следующие протоколы: TCP, UDP, ARP, ICMP, IPv4, RIPv2. Основное назначение RT-TCP/IP – обеспечить производительность реального времени для сетевых приложений. Эта реализация основывается на стеке TCP/IP v.2.2 фирмы Treck, Inc.;
  • RTX USB: поддерживает USB 1.1 и USB 2.0 в среде реального времени.

Архитектура RTX

В первых версиях RTX (до версии 4.3), архитектура которого представлена на рис. 1, уровень HAL реального времени подменял стандартный HAL (Hаrdware Abstraction Layer) Windows. Однако сейчас HAL реального времени представляет собой драйвер Windows, запускаемый на этапе инициализации операционной системы (SERVICE_SYSTEM_START). Компания Venturcom использует следующие свойства HAL для построения на его базе подсистемы реального времени:

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

Рис. 1. Архитектура RTX

На уровне HAL поддерживаются следующие функции реального времени:

  • работа с прерываниями. Перехватывая аппаратные прерывания, Real-Time HAL различает прерывания, относящиеся к обработчикам реального времени и обработчикам Windows. Прерывания, которые должны обрабатываться драйверами Windows, отправляются по стандартной цепочке. При этом Real-Time HAL следит за тем, чтобы прерывания не маскировались драйверами Windows более чем на 5 мкс, исключая тем самым возможность пропуска критического события;
  • быстрые часы и таймерные службы. Для измерений временных интервалов или для генерации прерываний Real-Time HAL позволяет работать с тиком, разрешение которого равно 1 мкс. Системный таймер синхронизирован с тиком и может работать с периодом 100 мкс, обеспечивая функционирование как стандартных таймерных сервисов, так и дополнительных, входящих в состав подсистемы реального времени.

Поддержка подсистемы реального времени (RTSS)

Подсистема реального времени RTSS обеспечивает исполнение большинства функций и управление ресурсами расширений реального времени. С точки зрения реализации RTSS выглядит как драйвер Windows и выполняется в режиме ядра. Это позволяет достаточно простым способом устроить взаимодействие между процессами реального времени и процессами Windows. Подсистема RTSS обеспечивает исполнение функций RTAPI и содержит планировщик нитей реального времени со 128-ю фиксированными приоритетами. В ней также содержится менеджер объектов, предоставляющий унифицированные механизмы использования системных ресурсов. По сравнению с набором объектов Windows добавлены таймеры и обработчики прерываний. Интерфейс RTAPI является расширением Win32 и содержит прежде всего набор функций, необходимых для управления устройствами. Он реализован в двух видах: как подмножество подсистемы реального времени (RTSS) и как динамическая библиотека (DLL), которая может вызываться из Win32-приложений. Интерфейс RTAPI содержит следующие группы функций:

  • управление процессами и нитями: Win32-совместимый интерфейс для управления, создания, изменения приоритетов, профилирования и завершения нитей реального времени;
  • управление объектами RTSS: возможности унифицированного управления объектами RTSS (создание, закрытие, доступ). Объектами RTSS являются таймеры, обработчики прерываний и исключительных ситуаций (startup, shutdown, blue screen), нити, процессы, семафоры, мьютексы, разделяемая память, почтовые ящики, консольный и файловый ввод/вывод, регистры;
  • взаимодействие между процессами: использование семафоров, мьютексов (mutex) и разделяемой памяти как для взаимодействия нитей реального времени между собой, так и процессов реального времени с процессами WIN32;
  • управление памятью: позволяет фиксировать приложения в памяти, запрещая их выгрузку в файл подкачки;
  • доступ к физической памяти: приложение пользователя получает возможность доступа к данным по физическим адресам памяти;
  • управление прерываниями: содержит функции, позволяющие назначать и запрещать обработчики прерываний, разрешать и запрещать прерывания;
  • часы и таймеры: содержит функции управления часами и таймерами (создание, удаление, отмена, инициализация таймеров, назначение обработчиков прерываний);
  • управление вводом/выводом: имеется два способа управления устройствами ввода/вывода. Во-первых, приложения пользователя получают возможность непосредственного доступа к адресам портов ввода/вывода, что позволяет программировать работу устройств напрямую. Кроме того, внешнее устройство может управляться специальными (легко разрабатываемыми) драйверами, для работы с которыми RTAPI предоставляет специальный интерфейс.

Расширение RTX поддерживает как однопроцессорные, так и многопроцессорные конфигурации для Windows NT, 2000 и XP. Исполнительная версия RTX, которая поддерживает работу многопроцессорных систем, обеспечивает все возможности однопроцессорной версии плюс возможности многопроцессорных систем, совместимых с архитектурой Intel MPS, что позволяет значительно повысить производительность приложений. Мультипроцессорная версия RTX реализует модель "выделенного процессора", в которой RTSS выполняется только на одном процессоре, в то время как на других процессорах выполняются стандартные приложения Windows.

Разработка приложений и динамических библиотек для RTX

При создании приложений с поддержкой RTX можно использовать ряд средств разработки, отладки и тестирования.

Для разработки

Microsoft Visual Studio или RTX AppWizard для построения RTX-приложений (.exe и .rtss) и динамических библиотек (.dll и .rtdll).

Для отладки

WinDbg фирмы Microsoft, SoftICE фирмы NuMega или Developer Studio Add-in фирмы VenturCom (вместе с Visual Studio).

Утилиты измерения производительности

  • KSRTM (Kernel System Response Time Measurement) для измерения времени отклика ядра на прерывание на уровне HAL;
  • SRTM (System Response Time Measurement) для измерения времени отклика приложения на прерывание;
  • RTX Demo – графическая версия SRTM (рис. 2);
  • LTP (Latency Test program) находит периферийные устройства, которые "плохо себя ведут". В цикле эта программа считает число откликов от периферийного устройства за определённый период времени, причём время отклика ожидается за достаточно короткое время.

Рис. 2. Утилита RTX Demo

Средства трассировки и тестирования

В состав RTX SDK включены пакеты TimeView и Platform Evaluator.

Пакет TimeView – средство трассировки реального времени, которое позволяет разработчикам и системным интеграторам эффективно отслеживать события как в самой системе RTX, так и в множестве RTX-приложений пользователя одновременно (до 5 000 000 событий с помощью одного теста). Это позволяет фиксировать такие события, как переключение между потоками (Threads) и использование ресурсов для однопроцессорных и многопроцессорных конфигураций. Пользователю предоставляется графический интерфейс (рис. 3) для задания параметров для отслеживания (Data Collection Setup Wizard) и просмотра полученных данных. Пользователь может указать внутри своей программы типы событий, по которым он хочет собирать информацию.

Рис. 3. Графический интерфейс пользователя в пакете TimeView

Пакет Platform Evaluator (рис. 4). Фирма VenturCom разработала широкий набор тестов для измерения временных характеристик производительности как драйверов устройств, так и аппаратных средств, выполняющихся в среде Windows XP/2000/NT как в стандартном режиме, так и в режиме реального времени. Тесты позволяют разработчику в широком диапазоне варьировать загрузку системы, выбирать критерий измерения и определять точность измерений характеристик реального времени для любой аппаратной платформы. Полученные данные измерений производительности для различных конфигураций можно сохранять и сравнивать друг с другом. Это очень полезно как для системных интеграторов при выборе аппаратных средств, так и разработчиков ПО, которые могут легко оценить производительность конкретной системы.

Рис. 4. Пример экранной формы пакета Platform Evaluator

Средства разработки

  • RT TCP/IP SDK: средства разработки TCP/IP-приложений реального времени;
  • USB SDK: средства поддержки USB 1.1/2.0 для приложений реального времени.

Интеграция RTX с Windows XP Embedded

Расширение реального времени RTX 6.1 for XP Embedded включает три группы компонент: RTX 6.1 Runtime, RT-TCP/IP 2.1 Runtime, демонстрационные приложения RTX. С точки зрения Target Designer а (основной компоненты XP Embedded) RTX 6.1 Runtime состоит из RTX Kernel Core, обеспечивающего функциональность реального времени с поддержкой загрузки RTX-приложений, и RTX Runtime, которая обеспечивает Win32-уровень для утилит и библиотек. В RT-TCP/IP 2.1 Runtime включены компоненты поддержки TCP/IP-стека внутри подсистемы RTSS плюс драйверы различных сетевых карт в компонентной форме. Демонстрационные приложения RTX для XP Embedded содержат утилиты измерения производительности в компонентной форме (RTX Latency Demo, RTX SRTM Demo, RTX Boot-time Tone Demo) и RTX NI-DIO96 Demo - приложение, которое напрямую взаимодействует с драйвером устройств National Instruments Digital IO PCI Board (PCI-DIO-96).

Что нового в последних версиях RTX?

К моменту написания статьи последними выпущенными версиями RTX были версия 6.0 и 6.1. В версии RTX 6.0 были добавлены такие возможности, как:

  • поддержка Advanced Programmable Interrupt Controller (APIC) HAL, что обеспечило поддержку ACPI UP/MP HAL, разрешение большего числа линий прерывания, исключение дрейфа часов, уменьшение использования пропускной способности шины;
  • поддержка RTX детерминированного стека USB 1.1/2.0;
  • детерминированное распределение памяти за счёт непосредственного управления RTX пулом локальной памяти.

В версии 6.1 к существующим функциям добавился ряд новшеств, благодаря которым пользователи RTX получили поддержку технологии PAE (Physical Address Extensions) и приложений, написанных на языке Visual Basic, а также инструмент Device Driver Wizard.

Поддержка технологии Physical Address Extensions

Технология расширения физических адресов (Physical Address Extensions – PAE) корпорации Intel позволяет адресовать до 64 Гбайт физической памяти. До недавнего времени большинство операционных систем для процессоров с архитектурой IA-32 были способны поддерживать лишь 32-разрядную адресацию, что ограничивало объём доступной им памяти величиной в 4 Гбайт. Ситуация изменилась с выходом пакета обновления Windows XP Pro SP2, где по умолчанию имеется поддержка технологии PAE. Новая версия RTX поддерживает PAE для всех реализаций слоя HAL. Продукт RTX 6.1 позволяет использовать в целевой системе до 64 Гбайт оперативной памяти.

Инструмент Device Driver Wizard

До сих пор разработка драйверов устройств была для OEM-пользователей RTX довольно трудоёмкой задачей. Наличие готового каркаса способно значительно ускорить процесс создания специализированных и заказных драйверов для RTX-приложений. Благодаря новому полуавтоматическому инструменту с удобным графическим интерфейсом продукты, разработанные на основе RTX, будут быстрее появляться на рынке.

Поддержка языка Visual Basic .NET

Для создания интерфейсов, обеспечивающих взаимодействие с RTX-приложениями, многие разработчики хотели бы использовать Visual Basic вместо традиционных языков C и C++, поскольку это существенно экономит время. С появлением в RTX 6.1 поддержки языка Visual Basic .NET они получили такую возможность.

Какие операционные системы поддерживаются в RTX 6.1? Перечень доступных для RTX операционных систем был пересмотрен с учётом того, какие ОС корпорации Microsoft официально поддерживаются в настоящий момент. Версия RTX 6.1 утратила совместимость с платформой Windows NT. Теперь продукт RTX поддерживает следующие ОС:

  • Windows 2000 (до пакета обновления SP4 включительно);
  • Windows XP Professional (до пакета обновления SP2 включительно);
  • Windows XP Embedded (до пакета обновления SP2 включительно);
  • Windows 2000 Server.

Тестирование производительности RTX

Какова же реальная производительность RTX, особенно в сравнении с другими системами? В литературе приводится множество результатов тестирования RTX [1], однако остановимся более подробно на сравнительных тестах (см. Таблицу) для Windows XP, Windows CE .NET и RTX 5.5 [2]. В качестве тестового использовался компьютер с процессором 800 MHz Pentium III с поддержкой ACPI.

Примеры использования RTX

Основные области применения RTX – телекоммуникации, обработка изображений и приём/передача информации в реальном времени, промышленная автоматизация, системы оборонного назначения, медицина. В качестве примера рассмотрим один из проектов, приведенных на последней конференции по RTX во Франции (2005 год).

Компания Woodhead использует RTX (рис. 5) в системах АСУТП как на нижнем уровне работы c платами семейства Direct-Link по протоколу CANopen (http://www.can-cia.org/products/pg2004/html/index-246.htm), так и на уровне диспетчерского интерфейса.

Рис. 5. Пример использования RTX компанией Woodhead

Заключение

Как показывает опыт, ни одно из решений в области систем реального времени не позволяет охватить весь спектр приложений. Свою долю рынка имеет каждая из ОСРВ LynxOS, QNX, VxWorks, Integrity. В первую очередь, это системы специального назначения. Однако расширения реального времени для офисных операционных систем (такие, как RTX), также имеют ряд достоинства и способны найти своё применение. Поэтому наряду с ОСРВ нельзя забывать и о них, особенно с учётом показателя "цена решения/функциональные возможности".

Литература

  1. Bob Kilbridge, Windows NT and Windows 2000 for real-time applications.
  2. Interview: Venturcom s Real-time, benchmarking, and tools for XP Embedded, http://www.windowsfordevices.com/articles/AT8823921976.html, 2003.
  3. Interview: Adding deterministic, real-time control to XP Embedded using Intime, http://www.windowsfordevices.com/articles/AT5426953592.html, 2003.
  4. Chris Tacke, Lawrence Ricci, Real-time determinism in Windows CE [MSDN], http://www.windowsfordevices.com/articles/AT6761039286.html, Dec. 2002.
  5. Nat Frampton, John Tsao, Jerry Yen , Hard Real-time Extensions of Windows NT Evaluation Report, 1998.
  6. Павел Кирюхин. RTX – расширение реального времени для Windows NT, http://www.citforum.ru/operating_systems/rtx/index.shtml, 1998.
  7. Martin Timmerman, Jean-Christophe Monfret, Windows NT as Real-Time OS? // Real-Time Magazine. 1997. Q2.
  8. Philip Melanson, Siamak Tafazoli. A Selection Methodology for the RTOS Market. Canadian Space Agency. 2003.
  9. Mike Cherepov, Mike Hirst, Chris Jones, Myron Zimmerman, Hard Real-Time with Venturcom RTX on Microsoft Windows XP/ XPe, http://www.windowsfordevices.com/articles/AT3618198049.html, 2002.
  10. Greg Bergsma, Realtime Extensions to Windows NT, http://www.swd.de/documents/papers/nt_en.html, 1998.
  11. Жданов А. NT – реально ли реальное время? // Открытые системы. 1998. N1.