Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2012 №1

Нужна ли ОСРВ, когда есть Windows?

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

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

Эра NT

Мечта о том, чтобы популярную недорогую ОС общего назначения можно было комфортно использовать во встраиваемых системах и системах жесткого реального времени, родилась в незапамятные времена, однако реальный шанс для ее воплощения появился лишь с приходом Windows NT. Разумеется, в 90-е годы XX века существовали не только операционные системы семейства Windows, но и другие ОС общего назначения, тем не менее продукция корпорации Microsoft била все рекорды популярности, и количество специалистов, знакомых с Win32 API, превышало все мыслимые пределы, так что выбор поставщика ОС был однозначным. У линейки Windows была лишь одна, но очень серьезная проблема: операционные системы Microsoft не отличались высокой надежностью, в связи с чем об их использовании во встраиваемых приложениях и тем более в задачах реального времени не могло быть и речи.

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

Изначально роль корпорации Microsoft в проекте Windows NT сводилась в основном к кураторству. Первые ОС серии Windows NT разрабатывали бывшие сотрудники компании DEC, имевшие гигантский опыт по части создания профессиональных операционных систем для семейств машин класса PDP и VAX. Руководство Microsoft поставило перед этими специалистами лишь одно принципиальное условие: надежность новой ОС не должна пойти в ущерб ее эргономичности. В результате рынок получил ОС нового поколения, созданную профессионалами и для профессионалов, но сохранившую традиционное для продуктов Microsoft удобство в использовании и интуитивно понятный интерфейс. Само собой, Windows NT учитывала специфику текущих и перспективных микропроцессоров Intel. Примечательно также и то, что Windows NT изначально задумывалась как универсальная операционная система, одинаково хорошо работающая и на персональных компьютерах, и на серверах крупных офисов (а это уже было крупным достижением). Выбор ОС в качестве кандидата на роль универсальной операционной системы был, таким образом, предопределен.

Возвращаясь к рынку встраиваемых компьютерных технологий (ВКТ), отметим большое влияние, оказанное Windows NT на его формирование и развитие. Если о масштабном применении Windows 95 и Windows 98 во встраиваемых приложениях не могло быть и речи, то Windows NT и ее производные — уже совсем другое дело, и в середине 1990-х годов встраиваемые проекты на базе Windows NT стали возникать в массовом порядке. Для комфортного использования Windows NT во встраиваемых системах и задачах реального времени разработчикам не хватало лишь трех вещей:

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

Решения компании VenturCom

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

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

Расширение RTX шло еще дальше, позволяя использовать стандартные «настольные» операционные системы Microsoft в том числе и в приложениях реального времени3. За неброским названием “Real-Time eXtension” скрывается весьма мощный программный продукт, открывающий перед Windows-пользователями двери в мир систем с детерминированным поведением.

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

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

В наши дни даже обыватели знают об инструменте корпорации Microsoft под названием Component Designer, который делает то же самое, что в прежние годы делал Component Integrator компании VenturCom. Расширение реального времени RTX известно за пределами профессиональных кругов в меньшей степени, тем не менее за 10 с лишним лет существования RTX удобство и эффективность этого продукта смогли оценить многие разработчики, реализовавшие на его основе сотни тысяч проектов. И все это время RTX успешно развивался, обрастая новыми функциями и возможностями. RTX образца 2011 года — это мощный профессиональный программный пакет, распространяющий сферу применимости стандартных операционных систем семейства Windows на многие конечные задачи, требующие жесткого временного детерминизма. Посмотрим, что представляет собой современный RTX с технической точки зрения.

RTX «под микроскопом»

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

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

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

При использовании INTime на одной аппаратной платформе запускаются две виртуальные машины — с ОС Windows и с подсистемой реального времени INTime. Здесь в целом неважно, какая ОС выполняется параллельно с подсистемой реального времени, поддержка Windows определяется только наличием модифицированного HAL для работы в таком режиме и наличием API для связи задач, работающих в режиме реального времени и в Windows-среде. С популяризацией многоядерных архитектур стало возможным и просто выделение отдельных ядер под Windows и под задачи реального времени. Так поступает компания RadiSys для параллельного запуска своей ОСРВ OS-9 и ОС Linux на двухъядерном процессоре. Однако довольно сложная архитектура того же INTime не позволяет добиться высокой производительности в задачах реального времени.

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

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

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

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

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

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

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

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

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

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

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

Это достигается благодаря тому, что расширение RTX HAL перехватывает управление прерываниями у Windows HAL. Ни одно из прерываний Windows-среды не может прервать работу или замаскировать прерывание RTX. И наоборот, во время работы RTX-задач маскируются все прерывания, обрабатывающиеся Windows, и приостанавливается работа Windows. Фактически по отношению к задачам RTX вся ОС Windows работает в фоновом режиме.

Кроме обеспечения детерминированности RTX обладает другими ключевыми особенностями.

Как уже упоминалось, подсистема RTSS продолжает работать в случае «краха» Windows, ее «синего экрана смерти». Но не только. RTSS умеет корректно обрабатывать завершения Windows, как штатные, так и аварийные. Обработчики завершения работы в случае завершения по ошибке выполняются с небольшими ограничениями: им нельзя пользоваться сервисами Windows, в том числе запрашивать выделение динамической памяти. Подсистема RTSS работает до тех пор, пока не завершатся все обработчики. С практической точки зрения обработчики должны корректно заканчивать работу с аппаратурой, оставлять рабочее состояние остальной системы, а также могут передавать управление резервной системе, если используется резервирование.

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

Естественно, такой способ работы с памятью не является единственным. Для обеспечения детерминированности поведения задач RTSS при операциях с памятью в RTX есть «локальный пул памяти» (Local Memory Pool). Этот объем памяти выделяется сразу при старте подсистемы RTSS, и задачи RTSS могут выделять себе необходимую память из этого пула. В этом случае работа с памятью является полностью детерминированной.

Также в RTX имеется механизм, с помощью которого можно сделать доступной память, которую «не видит» Windows. Этой цели служат, в частности, функции PAE (Physical Address Extensions), расширяющие адресное пространство до 36 бит и позволяющие получать на 32-разрядных системах доступ к 64 Гбайт памяти.

Еще одна крайне важная особенность — организация связи между задачами Win32 и RTSS. Механизмами взаимодействия процессов (IPC) являются привычные события, мьютексы, семафоры и общая память. При этом взаимодействие между детерминированной подсистемой RTSS и недетерминированной подсистемой Windows организовано так, чтобы исключить перекрестное влияние на их работу. Для этого механизм IPC реализован по принципу работы системы прерываний. Драйвер RTX со стороны Windows и окружение RTSS взаимодействуют через очереди. В каждом направлении организовано по две очереди, и при необходимости инициирующая сторона помещает в одну из очередей нужную команду и прерывание запроса обслуживания (Service Request Interrupt, SRI) для обработки команды на другой стороне. Сервер на принимающей стороне обрабатывает запрос и помещает ответ в другой буфер. Такая организация взаимодействия обеспечивает отсутствие взаимных блокировок подсистем. Архитектура SRI направлена на достижение минимального времени отклика, что несколько снижает возможную пропускную способность обмена, но гарантирует, что запрос будет обработан в минимально возможное время.

Еще одним механизмом, направленным на обеспечение безопасности взаимодействия подсистем, является механизм прокси-процессов, относящийся к воздействию из среды Windows на RTSS-окружение. Когда задача Win32 хочет получить доступ к объекту RTSS, создается так называемый прокси-процесс, с которым процесс Win32 взаимодействует непосредственно. А уже внутри себя RTX организует необходимое воздействие на реальную задачу RTSS. Создание, управление и освобождение прокси-процесса происходит полностью прозрачно для задачи Win32.

Крайне важным свойством, которое появилось начиная с версии RTX 2009, является поддержка для задач RTSS работы в режиме SMP — симметричной мультипроцессности. В версии RTX 2011 было отменено деление продуктов по признаку наличия либо отсутствия поддержки SMP. Теперь при разработке программ с помощью SDK всегда есть возможность использовать SMP, а Runtime отличаются только числом ядер, которые можно выделить под RTX (от 1 до 31). И в сочетании с различным оборудованием запуск RTX возможен в различных режимах.

Режим без мультипроцессности

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

Разделяемый режим

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

Режим с выделенным процессором

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

Режим с поддержкой SMP

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

Поддержка SMP в RTX реализована с оптимизацией под встраиваемые приложения. Разработчику доступны механизмы по управлению выполнением нитей/процессов на конкретном процессоре (или нескольких процессорах) и по обработке процессорами прерываний. Исходя из своих установок и свойств задач, назначенных разработчиком, RTX обеспечивает оптимальную загрузку выделенных под подсистему реального времени ядер.

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

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

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

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

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

Справка по RTX

Рис. 3. Справка по RTX

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

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

Рис. 4. Шаблоны RTX-приложений в среде Microsoft Visual Studio
  • Интеграция с Microsoft Visual Studio от версии 6.0 до версии 2010, причем для версий начиная с 2003-й доступно простое создание приложений RTSS, драйверов и сетевых конфигураций с помощью шаблонов-мастеров (wizards) (рис. 4).
  • Поддержка отладки в режиме «хост — целевая система» (host-target) и отладки на локальной системе.
  • Расширение отладчика уровня ядра Microsoft WinDbg для отображения процессов и нитей RTSS наряду с объектами IPC.
  • Графический инструмент RTSS Object Viewer для отображения в наглядном виде состояния всех процессов и нитей, объектов IPC внутри RTSS-окружения.
  • Инструмент трассировки TimeView, позволяющий эффективно записывать и отображать последовательность работы потоков в пределах RTX. Он спроектирован с минимальным уровнем влияния на работу подсистемы RTSS и обладает удобным графическим интерфейсом как в режиме отображения данных, так и для «мастера» установок сбора данных (Data Collection Setup Wizard).

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

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

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

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

RTX или традиционная ОСРВ?

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

Положение дел на рынке инструментального ПО сегодня таково, что лучшие средства разработки, отладки, трассировки и т. п. предлагаются для ОС семейства Windows. Мощь, цены и удобство этих инструментов не идут ни в какое сравнение с возможностями существующих средств разработки под VxWorks, QNX и других ОСРВ. Инструменты Windows-разработчика хороши не только в связи с наличием развитой функциональности, но и по причине невысокой цены, а также широчайшей распространенности и известности. Эта объективно сложившаяся ситуация и мотивирует людей изыскивать способы использовать одну ОС для всех приложений, включая встраиваемые приложения и приложения реального времени. Успешно решать последний класс задач и призван RTX компании IntervalZero.

Задумайтесь: так ли уж нужны вам все эти ОСРВ, если пакет Visual Studio уже есть, недостатка людей, умеющих им пользоваться, на рынке не предвидится, а расширение RTX стоит сущие копейки? Если вы создаете бездисковое решение реального времени, достаточно использовать RTX в комбинации с операционной системой серии Windows Embedded. Все равно это будет дешевле, быстрее и проще, чем при использовании любой традиционной ОСРВ. Если же бездисковость не требуется — все еще лучше, поскольку тогда можно ограничиться самой обычной недорогой ОС настольного класса — той самой, что работает на вашем персональном компьютере.

Заключение

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

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

Часто задаваемые вопросы

Насколько широко применяется расширение 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 недорого: $350 для одной уникальной системы, при этом НДС согласно действующему российскому законодательству не взимается.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Никаких! Там, где работает сама операционная система Windows — будь то решение типа Box PC, мобильный компьютер, система 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 — это быстродействие, компактность и удобство.

1 Неустранимые архитектурные недостатки препятствовали использованию операционных систем MS-DOS, Windows 3.xx и Windows 9x в профессиональных многозадачных и реально устойчивых проектах.

2 Даже специалисты из мира Unix, относившиеся прохладно ко всему, что связано с MS-DOS, Windows 3.xx и Windows 9x, признали высокие профессиональные качества этой операционной системы.

3Операционные системы серии Windows CE могут быть сконфигурированы как самые настоящие ОСРВ, однако они не базируются на ядре NT и с архитектурной точки зрения имеют мало общего с остальными ОС семейства Windows.

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

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке