Расширение реального времени rtx для windows

Расширение реального времени RTX для Windows: мирное сосуществование с ОСРВ. Статья из раздела ПО и ОС для систем реального времени виртуального компьютерного музея. Основан в 1997 году. более 2000 статей.

Цель данной статьи – дать пользователям представление о текущем состоянии расширения реального времени для 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 отвечает также за исполнение функций ввода/вывода подсистемы реального времени и пр.

<em>Рис. 1. Архитектура RTX</em>

Рис. 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) находит периферийные устройства, которые «плохо себя ведут». В цикле эта программа считает число откликов от периферийного устройства за определённый период времени, причём время отклика ожидается за достаточно короткое время.

<em>Рис. 2. Утилита RTX Demo</em>

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

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

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

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

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

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

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

Рис. 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 (до пакета обновления
  • 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.

Об авторе: Сергей Золотарев сотрудник отдела программных продуктов компании RTSoft

Статья была опубликована в журнале МКА 5/2005 и на сайте rtsoft.ru

Помещена в музей с разрешения редакции
6 января 2019

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

Расширение RTX поддерживает режим «симметричной мультипроцессности» (SMP — Symmetric Multiprocessing) и позволяет в многоядерных (многопроцессорных) системах выделять под задачи RTX до 31 процессорного ядра. Кроме этого, доступен и режим разделения процессорных ресурсов между Windows и RTX, когда планировщик сам определяет, на каком ядре исполнять конкретную задачу. 

В состав расширения входят средства, значительно ускоряющие поиск и устраняющие ошибки за счёт предоставления обширной информации. Расширение IntervalZero RTX разработано с учетом совместимости с Win32 API, что даёт возможность создавать прикладные коды в виде исполняемых модулей Windows (исполняемых файлов с расширением. ЕХЕ), которые могут быть запущены на уровне Ring 3 с защитой доступа к памяти. Эти модули могут быть также перекомпилированы в виде подсистемы реального времени уровня Ring 0, на котором повышение её производительности осуществляется за счёт исполнения приложений реального времени до любого из приложений Windows.

Основные характеристики:

  • Надёжное высокопроизводительное расширение операционной системы реального времени для Windows в Ring 0.
  • Симметричное параллельное выполнение задач реального времени (SMP).
  • Средство управления распределением нагрузки по ядрам.
  • Поддержка устройств всех стандартных Microsoft HAL, включая соответствующие спецификации ACPI контроллеров прерываний РІС, а также одно- и многопроцессорных контроллеров прерываний АРІС.
  • Возможность применения во всех операционных системах Microsoft Windows типа Windows 7, Vista, ХР, Embedded, Server 2003.
  • Полное соответствие спецификациям Win32 API, что исключает необходимость применения различных преобразователей кодов при использовании директив API.
  • Полная поддержка современных архитектур х86, технологий Intel AVX и SSE.
  • Работа на однопроцессорной системе в режиме разделения ресурсов процессорного ядра или на многоядерной платформе с выделением от 1 до 31 ядра исключительно для задач реального времени.
  • Поддержка таймеров с разрешением до 1 мкс.
  • Поддержка прерываний MSI для шин PCI/PCI Express.
  • Поддержка пакетов Microsoft Visual Studio 2005, 2008,2010, представляющих собой стандартную инструментальную среду для разработки, компиляции и отладки Windows-приложений.
  • Реализация технологии предотвращения инверсии приоритетов, обеспечивающей сохранение производительности приложения при запуске потоков (нитей) с более низким приоритетом.
  • Планирование исполнения по приоритетам или с вытеснением, тип которого может быть указан для каждого потока.
  • Независимый от типа Windows стек TCP/IP, совместимый с WinSock.
  • Высокая производительность межпроцессного обмена данными

From Wikipedia, the free encyclopedia

Not to be confused with Mbed.

RTX, RTX64

RTX64.png
Developer IntervalZero
OS family Real-time operating system
Initial release 1995; 28 years ago
Latest release RTX 2016 (32-bit)
RTX64 4.x (64-bit)
Platforms x86, x86-64
License Proprietary
Official website www.intervalzero.com

RTX is a line of real-time operating system (RTOS) extensions by the firm IntervalZero. They are a software extension or abstraction layer that converts Microsoft Windows operating system into a RTOS.[1] It was the first Windows real-time solution on the market.[2]

Overview[edit]

RTX real-time software extensions to Windows combines the familiar user experience of Microsoft Windows (rich GUI, extant drivers and software, …) and the direct control of embedded hardware by providing hard real-time determinism and symmetric multiprocessing (SMP) abilities.[3][4]

The RTX extensions have followed the Windows architecture since Windows NT 3.5.[5] Generally, RTX supports 32-bit Windows; RTX64 supports 64-bit Windows.[6] As of 2015, RTX2016 supports 32-bits, RTX64 4.x supports 64-bits.

The systems are used in different markets such as industrial automation, testbed and simulation, digital audio, digital video, aerospace military, medical devices, electrical grid, electricity generation, and other uses.

Technical details[edit]

  • Hardware abstraction layer extension – RTX relies on a Windows hardware abstraction layer (HAL) extension to initialize the RTX-dedicated processors and to provide the real-time subsystem (RTSS) with high resolution timers (up to 1 microsecond). It also provides an interrupt isolation mechanism.
  • Symmetric multiprocessing – Like Windows, RTX is based on a symmetric multiprocessing (SMP) architecture.[7] Depending on the real-time needs, users can choose the number of processors to dedicate to RTX to run real-time processes. RTX can use up to 31 dedicated processors; RTX64 can use up to 63. Users can then scale real-time applications between the RTX dedicated processors.
  • Interrupt management – RTX supports both line based and Message Signaled Interrupts (MSI/MSI-X). Interrupt service thread (IST) latencies are under 10 microseconds.
  • Memory management – The deterministic memory pool allocated for RTX is taken from the system non-paged pool memory. For example, under Windows 7, the amount of non-paged pool is: for 32-bit, 1 GB to 2 GB of the random-access memory (RAM) depending on the configuration; for 64-bit, 75% up to a maximum of 128 GB.
  • Scheduling – One scheduler is used across all real-time processors (SMP architecture). It uses priority-driven (128 real-time priorities) and pre-emptive algorithms to ensure critical thread context switches. Priority promotion mechanisms are provided to avoid priority inversion. Yields to threads of higher priority occur with sub-microsecond timing.
  • Windows interaction – RTX provides separation from Windows. Windows processes cannot interfere with real-time applications. If Windows issues a STOP message or shutdown, real-time applications have the ability to continue running to shutdown safely. Communicating with Windows occurs via RTX providing common inter-process communication (IPC) mechanisms between real-time processes and Windows processes (user processes or kernel drivers). Synchronizing is done via events, mutexes and semaphores; data sharing via shared memory or socket communication.
  • Real time application development – RTX application development is done from Microsoft Visual Studio in C or C++ using a windows-like application programming interface (API). RTX executable are .rtss and DLLs are .rtdll.
  • Network communication – The RTX real-time TCP/IP stack (RT-TCP/IP) supports TCP, UDP, and IP for IPv4 and IPv6. RTX drivers for standard network interface controllers (NICs) are provided with the stack.

References[edit]

  1. ^ Windows as a RTOS
  2. ^ Real-Time for Windows Support
  3. ^ Real-time with RTX on Microsoft Windows
  4. ^ Software tools: IntervalZero releases two versions of multicore RTX Real-Time
  5. ^ The RTX real-time subsystem for Windows NT
  6. ^ IntervalZero Releases RTX64 2014 real-time software; adds monitoring infrastructure, additional debug capabilities
  7. ^ RTX on multi-core-based Intel processors

External links[edit]

  • Official website

From Wikipedia, the free encyclopedia

Not to be confused with Mbed.

RTX, RTX64

RTX64.png
Developer IntervalZero
OS family Real-time operating system
Initial release 1995; 28 years ago
Latest release RTX 2016 (32-bit)
RTX64 4.x (64-bit)
Platforms x86, x86-64
License Proprietary
Official website www.intervalzero.com

RTX is a line of real-time operating system (RTOS) extensions by the firm IntervalZero. They are a software extension or abstraction layer that converts Microsoft Windows operating system into a RTOS.[1] It was the first Windows real-time solution on the market.[2]

Overview[edit]

RTX real-time software extensions to Windows combines the familiar user experience of Microsoft Windows (rich GUI, extant drivers and software, …) and the direct control of embedded hardware by providing hard real-time determinism and symmetric multiprocessing (SMP) abilities.[3][4]

The RTX extensions have followed the Windows architecture since Windows NT 3.5.[5] Generally, RTX supports 32-bit Windows; RTX64 supports 64-bit Windows.[6] As of 2015, RTX2016 supports 32-bits, RTX64 4.x supports 64-bits.

The systems are used in different markets such as industrial automation, testbed and simulation, digital audio, digital video, aerospace military, medical devices, electrical grid, electricity generation, and other uses.

Technical details[edit]

  • Hardware abstraction layer extension – RTX relies on a Windows hardware abstraction layer (HAL) extension to initialize the RTX-dedicated processors and to provide the real-time subsystem (RTSS) with high resolution timers (up to 1 microsecond). It also provides an interrupt isolation mechanism.
  • Symmetric multiprocessing – Like Windows, RTX is based on a symmetric multiprocessing (SMP) architecture.[7] Depending on the real-time needs, users can choose the number of processors to dedicate to RTX to run real-time processes. RTX can use up to 31 dedicated processors; RTX64 can use up to 63. Users can then scale real-time applications between the RTX dedicated processors.
  • Interrupt management – RTX supports both line based and Message Signaled Interrupts (MSI/MSI-X). Interrupt service thread (IST) latencies are under 10 microseconds.
  • Memory management – The deterministic memory pool allocated for RTX is taken from the system non-paged pool memory. For example, under Windows 7, the amount of non-paged pool is: for 32-bit, 1 GB to 2 GB of the random-access memory (RAM) depending on the configuration; for 64-bit, 75% up to a maximum of 128 GB.
  • Scheduling – One scheduler is used across all real-time processors (SMP architecture). It uses priority-driven (128 real-time priorities) and pre-emptive algorithms to ensure critical thread context switches. Priority promotion mechanisms are provided to avoid priority inversion. Yields to threads of higher priority occur with sub-microsecond timing.
  • Windows interaction – RTX provides separation from Windows. Windows processes cannot interfere with real-time applications. If Windows issues a STOP message or shutdown, real-time applications have the ability to continue running to shutdown safely. Communicating with Windows occurs via RTX providing common inter-process communication (IPC) mechanisms between real-time processes and Windows processes (user processes or kernel drivers). Synchronizing is done via events, mutexes and semaphores; data sharing via shared memory or socket communication.
  • Real time application development – RTX application development is done from Microsoft Visual Studio in C or C++ using a windows-like application programming interface (API). RTX executable are .rtss and DLLs are .rtdll.
  • Network communication – The RTX real-time TCP/IP stack (RT-TCP/IP) supports TCP, UDP, and IP for IPv4 and IPv6. RTX drivers for standard network interface controllers (NICs) are provided with the stack.

References[edit]

  1. ^ Windows as a RTOS
  2. ^ Real-Time for Windows Support
  3. ^ Real-time with RTX on Microsoft Windows
  4. ^ Software tools: IntervalZero releases two versions of multicore RTX Real-Time
  5. ^ The RTX real-time subsystem for Windows NT
  6. ^ IntervalZero Releases RTX64 2014 real-time software; adds monitoring infrastructure, additional debug capabilities
  7. ^ RTX on multi-core-based Intel processors

External links[edit]

  • Official website

Леонид Акиншин, Алексей Исаев

Мечта об операционной системе, удовлетворяющей требованиям абсолютно всех задач — офисных, встраиваемых, ответственных, реального времени и других, — существует, пожалуй, едва ли не с момента появления первой операционной системы. Продукт с неброским названием RTX, Real Time eXtension, позволяющий добавлять в стандартные офисные и встраиваемые операционные системы Windows (кроме версии Windows CE) поддержку реального времени, есть не что иное, как попытка приблизиться к реализации данной мечты. За 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 поддержку работы в режиме «жесткого» реального времени.

Результатом использования Component 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. Дополнительные сведения приведены во врезке «Читателю на заметку».

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

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

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

Каким образом можно создать на основе 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).

Окно настроек RTX
Экран 1. Окно настроек RTX

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

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

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

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

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

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

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

Часть I.

Возможность использования Windows NT в качестве ОС реального времени

В последнее время приобретают
популярность расширения реального времени для Windows NT. Это обусловлено,
с одной стороны, расширением областей применения компьютерного управления,
с другой стороны — сравнительно малой известностью и высокой стоимостью
специализированных операционных систем реального времени. Интерфейс Win32
является стандартным и хорошо знакомым большому числу программистов. Под
NT существует огромное число готовых приложений (в том числе коммуникационных),
а также популярные средства разработки. К сожалению, Windows NT
«в чистом виде» нельзя отнести к операционным системам реального времени.
Обсуждению причин этого посвящены статьи Martin Timmerman и Jean-Christophe
Monfret в Real-Time Magazine Q21997 [1,2].
Вот некоторые из них: недостаточное количество real-time приоритетов, отсутствие
наследования приоритетов, как средства борьбы с инверсией приоритетов,
неподходящая для RTOS система обработки прерываний. В Windows NT доступ
к прерываниям осуществляется из драйвера ядра, а сами прерывания обрабатываются
в два этапа: сначала вызывается очень
короткая Interrupt Service Routine (ISR), осуществляющая критическую обработку,
основная обработка прерывания происходит в Deferred Procedure Call (DPC).
Все DPC выполняются с одинаковым уровнем приоритета в порядке поступления
(FIFO).

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

RTX — real-time extension для Windows NT от компании VenturCom

Одним из возможных решений является
использование совместно с Windows NT подсистемы реального времени, исполняющейся
на том же процессоре (если процессор один) или на выделенном процессоре(-ах)
(если их несколько). Этот подход использован фирмой VenturCom в продукте
RTX (Real Time Extension). Сущность подхода заключается в использовании
модифицированного HAL (Hardware Abstraction
Level). Изменять kernel Microsoft не разрешает, а исходный код HAL предоставляет
своим партнерам, одним из которых является VenturCom.

После установки RTX стандартная
NT Workstation или Server превращается в операционную систему реального
времени с жестким детерминизмом (hard real-time). Сама NT об этом, правда,
не подозревает. Ни ядро, ни исполняющая подсистема NT не были изменены.
Подсистема реального времени видна из Windows NT, как еще один драйвер
устройства. Схема функционирования RTX в составе Windows NT представлена
на рисунке.

В системе появляется планировщик
задач реального времени. Новый HAL по прерыванию от часов реального времени
передает управление этому планировщику, который следит за очередью задач
реального времени, находящихся в системе и выделяет им время в соответствии
с приоритетом. В RTX существует 128 фиксированных приоритетов для задач
реального времени. Если в очереди таких задач нет, то управление передается
стандартному планировщику NT. При этом времена исполнения кодов модифицированного
и оригинального HAL совпадают, т.е. присутствие RTX не сказывается на производительности
Windows в отсутствие real-time процессов. Однако, если real-time процессы
будут занимать все процессорное время, то Windows NT не получит управления
и окажется подвешенной. В принципе, если данная ситуация не входит в планы
разработчика, ее можно предупредить, установив в опциях настройки RTX «сторожевой»
таймер, срабатывающий, если один поток занимает CPU
больше определенного времени.

Все программы, исполнявшиеся
на машине до установки RTX, будут по-прежнему на ней исполняться, но, к
сожалению, не в real-time режиме. Такие программы нужно писать и компилировать
самому с помощью поставляемых VenturCom библиотек, содержащих функции Real-Time
API (RTAPI).

Создание приложений реального времени с помощью RTAPI

Одним из преимуществ RTX, является
возможность использования стандартных компиляторов для создания real-time
программ и стандартного софта (commercial off the shelf, COTS), взаимодействующего
с ними и работающего на той же машине. Действительно, для создания real-time
программ Вы можете использовать Visual C++ 4.2 или 5.0. Кроме того, при
создании Win32-части приложения можно использовать любой компилятор, понимающий
вызовы функций Win32 API (например C++ Builder). Один и тот же код можно
откомпилировать как Win32 и как RTSS приложение с расширениями .exe и .rtss
соответственно. Exe-вариант программы является приложением «мягкого» реального
времени.

Функции, входящие в RTAPI
на данный момент, можно разделить на 4 группы. К первой относятся функции,
чья семантика и/или поведение отличается от функций Win32 API. В названии
всех функций этой группы присутствует префикс Rt (например RtAttachInterruptVector)
Во вторую входят функции, чья семантика и функциональность совпадают с
функциями из Win32 API, но они работают в RTSS подсистеме. В третью группу
входят функции runtime C библиотеки. К последней (но не по важности) группе
относятся функции т.н. Windows NT Driver
IPC API, позволяющие rtss и Win32 потокам взаимодействовать с обычными
драйверами, работающими в режиме ядра.

Программы, скомпилированные
как rtss, могут содержать только функции, входящие в RTAPI, На программы,скомпилированные
как exe, такое ограничение не распространяется.

Разработку любого RTSS приложения
удобно начинать с exe-варианта. Это позволяет использовать отладочные средства
Visual Studio (или другого используемого компилятора). Например, если Вы
пишете rtss-драйвер, обслуживающий прерывания, то скомпилировав его как
Win32 программу, можно установить точку останова в процедуре обработки
прерывания (в RTX обработка прерываний не разделяется на ISR и DPC, а выполняется
одним потоком (см. ниже)) и сделать пошаговый прогон всей процедуры. Программы,
скомпилированные как rtss, при необходимости отлаживаются с помощью WinDBG
(на двух компьютерах) или SoftIce (на одном компьютере).

Обычно (хотя и не обязательно)
приложение состоит минимум из двух частей — real-time процесса, исполняющегося
в RTSS подсистеме и исполняющего критическую по времени работу и exe-процесса,
исполняющегося в Win32, взаимодействующего с rtss-частью с помощью средств
межпроцессного взаимодействия. Exe-часть может взаимодействовать с сервисами
NT, другими программами, пользователем.


Назад | Содержание | Вперед

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

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

Продукт с неброским названием 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 — это быстродействие, компактность и удобство.

В Windows NT доступ к прерываниям
осуществляется из драйвера ядра, а сами
прерывания обрабатываются в два этапа:
сначала вызывается очень короткая
Interrupt Service Routine (ISR), осуществляющая
критическую обработку, основная обработка
прерывания происходит в Deferred Procedure Call
(DPC). Все DPC выполняются с одинаковым
уровнем приоритета в порядке поступления
(FIFO).

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

Rtx — real-time расширение для Windows nt.

Одним из возможных решений является
использование совместно с Windows NT
подсистемы реального времени, исполняющейся
на том же процессоре (если процессор
один) или на выделенном процессоре(-ах)
(если их несколько). Этот подход использован
фирмой VenturCom в продукте RTX (Real Time Extension).
Сущность подхода заключается в
использовании модифицированного HAL
(Hardware Abstraction Level). Изменять kernel Microsoft не
разрешает, а исходный код HAL предоставляет
своим партнерам, одним из которых
является VenturCom.

После установки RTX стандартная NT
Workstation или Server превращается в операционную
систему реального времени с жестким
детерминизмом (hard real-time). Сама NT об этом,
правда, не подозревает. Ни ядро, ни
исполняющая подсистема NT не были
изменены. Подсистема реального времени
видна из Windows NT, как еще один драйвер
устройства. Схема функционирования RTX
в составе Windows NT представлена на рисунке.

В системе появляется планировщик задач
реального времени. Новый HAL по прерыванию
от часов реального времени передает
управление этому планировщику, который
следит за очередью задач реального
времени, находящихся в системе и выделяет
им время в соответствии с приоритетом.
В RTX существует 128 фиксированных
приоритетов для задач реального времени.
Если в очереди таких задач нет, то
управление передается стандартному
планировщику NT. При этом времена
исполнения кодов модифицированного и
оригинального HAL совпадают, т.е. присутствие
RTX не сказывается на производительности
Windows в отсутствие real-time процессов. Однако,
если real-time процессы будут занимать все
процессорное время, то Windows NT не получит
управления и окажется подвешенной. В
принципе, если данная ситуация не входит
в планы разработчика, ее можно предупредить,
установив в опциях настройки RTX
«сторожевой» таймер, срабатывающий,
если один поток занимает CPU больше
определенного времени.

Управление памятью. Выделение системной памяти.

Часто процессу требуется выделить
дополнительную память. Функции выделения
памяти, существующие в RTX, всегда выделяют
блокированную (locked) память, исключая,
таким образом, задержки, связанные с
ошибками страниц (page faults).

API выделения памяти

Следующие функции служат для доступа
к системе выделения памяти RTX:

RtAllocateLockedMemory –

выделяет блокированную память, которой
соответствует физическая память, затем
проецирует память в виртуальное адресное
пространство процесса.

RtFreeLockedMemory –

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

Замечания по выделению памяти

Блокированная память всегда выделяется
из non-paged пула памяти Windows NT. Этот пул
памяти сравнительно мал и вскоре после
загрузки системы становится
фрагментированным в результате выделения
памяти драйверам и другим подсистемам
Windows NT. Чтобы избежать неудач при попытках
выделить большой участок памяти, надо
делать это сразу после загрузки и/или
вообще минимизировать такие выделения.

Использование функции выделения
блокированной памяти:

#include
<windows.h>

#include
<stdio.h>

#include
<rtapi.h>

static
PVOID vAddress; // virtual memory address returned by

RtAllocateLockedMemory

void
main(void) {

//
Allocate memory

vAddress
= RtAllocateLockedMemory(size);

if
(!vAddress) {

printf(«nFailure on RtAllocateLockedMemoryt»);

printf(«Error=%dn», GetLastError());

break; // if this fails — no use to continue

}

else
{

printf(«nSuccess on RtAllocateLockedMemoryn»);

printf(«Virtual memory address = 0x%08Xn», vAddress);

// Write to the memory

*vAddress= 0;

}

//
Free memory

if
(!RtFreeLockedMemory(vAddress)) {

printf(«nFailure on RtFreeLockedMemory(0x%08X).t»,

vAddress);

printf(«Error Code = %dn», GetLastError());

}

else
{

printf(«Success on RtFreeLockedMemory(0x%X).n»,

vAddress);

}

ExitProcess(0);

}

Понравилась статья? Поделить с друзьями:
  • Реалистичные шейдеры для minecraft windows 10 edition
  • Реалистичные живые обои для windows 10
  • Расширение раздела жесткого диска в windows 7
  • Расширенный редактор тегов в windows media player
  • Реализация политики безопасности в ms windows