Общие положения

Операционная система QNX

QNX – многозадачная многопользовательская ОСРВ с архитектурой на основе микроядра и поддержкой ряда стандартов семейства POSIX, разработанная канадской компанией QNX Sofwtare Systems Ltd. Впервые система появилась на рынке в 1981 году и широко используется многими известными компаниями, в числе которых такие признанные лидеры как Du Pont, Eastman Kodak, General Mills, General Motors, Motorola, Texaco, IBM, Cisсo Systems, 3Com, Siemens, Daimler Chrysler, Ford, LG Electronics и многие другие.

QNX разработана для компьютеров PC (не является многоплатформной ОС), поэтому достигается эффективность и скорость обработки данных, характерная для мощных универсальных и мини-компьютеров. QNX является ОС, которая дает полную гарантию в том, что процесс с наивысшим приоритетом начнет выполняться практически немедленно и что критическое событие (сигнал тревоги) всегда будет обработано. ОС QNX функционирует в "защищенном режиме", т.е. все программы в системе защищены друг от друга и любая ошибка в одной из программ не приводит к "краху" всей системы. При отключении питания теряются данные из кэш-памяти, но файловая система не разрушится. После включения компьютера обеспечивается нормальная работа системы. В QNX полностью реализовано встроенное сетевое взаимодействие "точка-точка". По существу, сеть из машин QNX действует как один мощный компьютер. Любые ресурсы (модемы, диски, принтеры) могут быть добавлены к системе простым подключением к любой машине в сети. QNX поддерживает одновременную работу в сетях Ethernet, Arcnet, Serial и Token Ring и обеспечивает более чем один путь для коммуникации, а также балансировку нагрузки в сетях. Если кабель или сетевая плата выходят из строя и связь прекращается, то система будет автоматически перенаправлять данные через другую сеть. Это предоставляет пользователю автоматическую сетевую избыточность и увеличивает скорость и надежность коммуникаций во всей системе.

Поскольку QNX поддерживает средства работы с флэш-памятью, она обеспечивает работу контроллеров в так называемом режиме "слепого узла", т.е. система может выполняться на процессорном модуле без жесткого/гибкого диска, без монитора и клавиатуры. Это создает возможность долговременной работы оборудования в необслуживаемом режиме. Такие средства встроены в одноплатные компьютеры или модули флэш-памяти фирм OR Computers, Ziatech, M-systems и других. Так, микроядро QNX4 обладает достаточно малыми размерами для встраивания в ПЗУ, и при этом достаточной большой мощностью для управления распределенной сетью, содержащей нескольких сотен процессоров. QNX4 легко расширяется, предоставляя разработчику чрезвычайную гибкость при использовании как штатных модулей QNX4, так и посторонних. Предоставляемое QNX4 окружение защищенного режима дает возможность легко и безопасно тестировать свои новые модули расширения и пробовать новые подходы.

Реализованный в QNX уникальный подход к прозрачной распределенной обработке данных позволяет запускать процессы по сети с полным наследованием окружения, включая открытые файлы, текущий каталог, файловые дескрипторы и идентификатор пользователя. Микроядро также предоставляет сервисы стандарта POSIX.1 и его расширения для СРВ POSIX.1b (POSIX.4), плюс возможности высокоскоростной трассировки диагностических событий.

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

Процессы Прерывания
Рис. 2.21. Структура ОСРВ QNX

ОС QNX представляет собой гибрид 16/32-битовой ОС, которую пользователь может конфигурировать по своему усмотрению. Время, необходимое для полной инсталляции системы, включая сетевые средства, составляет всего 10-15 минут, после чего можно начинать работу. Система с необходимой и достаточной средой разработки в виде компилятора Watcom C/C++ (основной компилятор для QNX) умещается в 10 Мбайт. ОС QNX состоит из микроядра (размером около 10 Кбайт), окруженного группой взаимодействующих между собой процессов. Структура QNX показана на рис. 2.21. В качестве основного средства взаимодействия между процессами система использует передачу сообщений. В 32-битовой среде возможно взаимодействие с 32 и 16-битовым кодом. Причем сообщения передаются между любыми процессами, не зависимо от того, находятся ли процессы на одном компьютере или на разных узлах сети. Пользователь, работая на одном из узлов сети, имеет доступ к ресурсам остальных узлов, включая порты, файловую систему и задачи. Ядро QNX поддерживает три основных типа коммуникаций между процессами: сообщения, proxy и сигналы.

При создании графических приложений в QNX используют библиотечные функции, поставляемые вместе с компилятором Watcom C.

Для QNX разработано множество баз данных (db_Vista, Watcom SQL, Faircom C-tree, OnCmd и др.), которые по производительности часто превосходят аналоги под управлением других ОС.

Самая важная особенность QNX – архитектура микроядра. Неизменно резидентом в памяти находится лишь небольшой по объему код микроядра, основной функцией которого является диспетчеризация задач. Все остальные функции ОС представляют собой отдельные модули, которые загружаются в защищенные друг от друга участки памяти. Связь их между собой и со всеми другими задачами осуществляется с помощью передачи сообщений через микроядро. Такой способ взаимодействия функций ОС приводит к дублированию данных в памяти. Однако этот недостаток в значительной мере нивелируется дешевизной оперативной памяти. Малый размер отлаженного кода микроядра имеет преимущество высокой устойчивости: даже если какой-либо модуль или аппаратный драйвер совершает программную ошибку, его сбой не ведет к краху системы, как в случае с монолитным ядром – микроядро способно выгрузить ошибочный код, работающий в защищенном режиме.

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

Микроядро позволяет QNX работать с очень высокой скоростью. ОС QNX может ранжировать функции, отдавая приоритет наиболее критичным в данный момент. Эта особенность позволяет системе работать в режиме “жесткого РВ”, отвечая на множество входящих сигналов и выполняя задачи за малый интервал времени. Так ОС QNX 6 (QNX Neutrino) предоставляет встроенную поддержку симметричной мультипроцессорной обработки данных (SMP) и многоядерных процессоров. Тем самым SCADA-система Phocus 4 имеет возможность использовать наиболее производительные и компактные системы для встроенных приложений.

Построение системы для конкретного приложения в QNX основано на модульном принципе – отбираются только те функции, которые требуются в данном случае. Благодаря этому при создании встроенной системы можно практически исключить из состава системы код с неиспользуемыми функциями и упростить отладку.

POSIX-совместимая файловая система. POSIX-совместимая файловая система QNX, Fsys, предоставляет полную семантику POSIX.1 и UNIX, расширенные механизмы защиты данных и высокоскоростные драйверы носителей, по производительности близкие к физической скорости доступа. Будучи ориентирована на семантику POSIX, Fsys идеально подходит для серверов разработки и других классических приложений на базе НЖМД, при этом ее можно упаковать в размеры, подходящие для встраиваемых систем, требующих семантики UNIX. Приложения могут обходить Fsys и обращаться напрямую к дисковым драйверам (для "сырого" блочного чтения) или файловой системе вашей собственной разработки.

Встраиваемая файловая система. Встраиваемая файловая система QNX, Efsys, существует в нескольких модификациях. Efsys поддерживает множество устройств flash-памяти, включая flash-карты в формате PCMCIA, а также одноплатные ЭВМ и твердотельные диски от ряда производителей. При использовании запоминающих устройств, которые не поддерживаются Efsys, можно разработать свою собственную файловую систему.

Файловая система SMB (CIFS). Протокол разделения файлов SMB (Server Message Block) используется рядом серверов типа Windows 95/NT, Windows for Workgroups, LAN Manager и Samba. SMBfsys, реализация SMB в QNX, обеспечивает прозрачный доступ к этим серверам и представляет собой полезное решение для кросс-разработки.

SMBfsys реализует протокол SMB, используя NBT (NetBIOS через TCP/IP). Запустив SMBfsys и подмонтировав удаленный ресурс на сервере, вы получаете доступ к файловой системе сервера как к поддереву локальной файловой системы.

Сетевая файловая система NFS. Популярная сетевая файловая система для гетерогенных сетей масштаба предприятия, NFS позволяет предоставляет прозрачный доступ к файлам большинства UNIX-систем и многих не-UNIX-систем, включая Windows.

Файловая система DOS. С использованием модулей файловой системы DOS, Fatfsys, любая QNX-программа в сети получает прозрачный доступ к DOS-разделам, включая создание, чтение, запись и удаление файлов. Даже если у вас нет DOS-машины, вполне вероятно, что платформа, с которой вам будет необходимо обмениваться данными, поддерживает файловую систему DOS. Fatfsys предоставляет вам доступ к данным на DOS-разделах любых типов и на любых дисковых носителях с использованием обычных команд QNX4.

Файловая система ISO9660/Rock Ridge. Модуль файловой системы ISO9660/Rock Rigde, Iso9660fsys, дает прозрачный доступ к CD-ROM или любым другим носителям, отформатированным в стандарте ISO 9660. Кроме поддержки файловых систем ISO и High Sierra, наиболее общепринятых для CD-ROM, Iso9660fsys также поддерживает протокол Rock Ridge, что дает вам возможность использовать имена файлов в стандарте POSIX и символьные связи и читать дистрибутивы UNIX, записанные на CD-ROM.

Блок-ориентированная файловая система. Блок-ориентированная файловая система, Blkfsys, реализует полный драйверный и пользовательский интерфейс файловой системы POSIX, но только для блок-ориентированных файлов. Она поддерживает "сырые" разделы, лентопротяжные устройства и НГМД, но не поддерживает саму файловую систему QNX. При разработке встраиваемых приложений Blkfsys предоставляет вам гибкие возможности создания своих файловых систем. Поддерживая те же устройства, что и Fsys, но с меньшими затратами памяти и по меньшей цене, Blkfsys представляет собой ценную альтернативу для приложений, которым требуется только "сырой" доступ к блок-ориентированным устройствам. Модуль Blkfsys, наряду с драйверами НЖМД, НГМД, CD-ROM и SCSI-устройств, включает в себя также набор дополнительных сервисных утилит.

Управление устройствами. Менеджер устройств QNX, Dev, является высокопроизводительным и вносящим очень малые накладные расходы серверным процессом, обеспечивающим интерфейс между процессами и терминальными устройствами.

Dev эффективно обрабатывает символьные устройства и обеспечивает скорость обмена вплоть до 115К бод даже на процессорах серии i386. Dev поддерживает все множество символьных устройств, включая терминалы ANSI, клавиатуры и устройства параллельного и последовательного ввода/вывода.

Высокопроизводительная сетевая технология FLEET [Fault-tolerance (отказоустойчивая), Load-balancing (регулирующая нагрузку), Efficient (эффективная), Extensible (расширяемая), Transparent (прозрачная)] представляет всю сеть как однородный набор ресурсов с прозрачным доступом (этот принцип в свое время был сформулирован фирмой Sun - "Cеть есть компьютер"). FLEET – компактный и быстрый сетевой протокол. Его передовая богатая функциональными возможностями архитектура превращает локальную сеть в единый логический суперкомпьютер. Будучи построен на механизме взаимодействия между процессами в виде передачи сообщений QNX4, FLEET предоставляет максимум гибкости.

Благодаря этому в 32-битовой среде возможно взаимодействие процессов с 32 и 16-битовым кодом. Причем сообщения передаются между любыми процессами, не зависимо от того, находятся ли процессы на одном компьютере или на разных узлах сети. Пользователь, работая на одном из узлов сети, может иметь доступ к любым ресурсам остальных узлов, включая порты, файловую систему и задачи. Сетевой протокол содержит пакеты, которые применяются также и для передачи сообщений. Сетевой администратор распознает эти пакеты и переправляет их микроядру, которое, в свою очередь, переправляет их в шину локальных сообщений. QNX способна распознавать не только пакеты сообщений QNX-процессов. Можно обращаться к сетевому администратору для передачи таких пакетных протоколов, как TCP/IP, SMB и других. Возможно обращение к различным сетевым администраторам через один кабель. ОС QNX объединяет всю сеть персональных компьютеров в единый набор ресурсов с абсолютной прозрачностью доступа к ним. Узлы могут добавляться и исключаться из сети, не влияя на целостность системы. Сетевая обработка данных в QNX является настолько гибкой, что можно объединить в одну сеть любой разнородный набор Intel совместимых компьютеров соединенных через Arcnet, Ethernet, Token Ring или через последовательный порт, к которому также может быть подключен модем. Причем возможно участие компьютера одновременно в нескольких сетях, и если одна из них окажется перегруженной или выйдет из строя, то QNX автоматически будет использовать другие доступные сети без потери информации. Файловая система QNX полностью соответствует стандарту POSIX. QNX работает с различными типами файловых систем: POSIX, Embedded (FLASH, ROM, SROM), CD-ROM (с поддержкой стандарта ISO 9660 и его расширения Rock Ridge), DOS (доступ ко всем носителям информации в формате DOS), NFS (доступ к различным типам удаленных файловых систем), SMB (прозрачный доступ к Windows 95 или NT-серверам).

Его основные характеристики – надежность сетевых соединений (Fault-tolerant networking); динамическая балансировка нагрузки (Load-balancing on the fly); высокая производительность (Efficient performance); расширяемая архитектура (Extensible architecture); прозрачность распределенной обработки данных (Transparent distributed processing) обеспечивает живучесть ОС и целостность данных, хранимых на диске.

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

Динамическая балансировка нагрузки. Пропускная способность сети обычно ограничена производительностью ЭВМ и сетевого оборудования. С помощью FLEET можно передавать данные через несколько сетей сразу, удваивая, а то и утраивая пропускную способность сети, подключив к вашим ЭВМ по нескольку сетевых карт и соединив их отдельными кабелями. Вы можете даже использовать карты различного типа (например, Ethernet и FDDI) в одной и той же ЭВМ.

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

Сеть Число клиентских процессов Пропускная способность
Ethernet 10Мбит 1.1 Мбайт/с
Ethernet 100Мбит 7.5 Мбайт/с

 

Расширяемая архитектура. Благодаря FLEET, QNX4-сеть обладает необычайной гибкостью. Процессы, ответственные за сеть, архитектурно отделены от ОС, позволяя вам подключать узел к сети или отключать его в любое время. Таким образом, можно добавлять узлы в сеть или удалять их из сети динамически, без переконфигурации системы. Благодаря встроенному механизму комутации пакетов, вы можете также подключать к вашей сети другие физические сети. (Этот механизм лежит примерно посередине между организацией мостов (bridging) и маршрутизацией (routing), поэтому в оригинале он называется "brouting"; в русскоязычной терминологии ему более всего соответствует термин "коммутация".)

Прозрачность распределенной обработки данных. Процессы, ответственные за сеть FLEET, глубоко интегрированы со встроенными примитивами обмена сообщениями и управления процессами, гармонично объединяя локальные и сетевые межпроцессные коммуникации (IPC) воедино. Поскольку механизмы IPC обладают сетевой прозрачностью, объединение разрозненных компьютеров в сеть превращает их в единый, цельный логический суперкомпьютер.

Мощный инструментарий. Для обслуживания сети FLEET в QNX4 предусмотрен набор диагностических и сервисных утилит.

Встраиваемая графическая оболочка Photon microGUI – это высокопроизводительный, полнофункциональный оконный интерфейс, занимающий исключительно мало памяти и опирающийся на мощь и гибкость QNX4. Photon дает вам возможность создания сложных графических приложений даже для самых миниатюрных систем на основе процессоров x86.

Обзор производительности.Объем системного кода, выполняемого в QNX4 при получении от приложения запроса на доступ к какому-либо сервису, невелик. QNX4 – ОС, не загружающая процессор обслуживанием громоздких системных компонент, позволяя ему сосредоточиться на выполнении приложений. QNX4 обеспечивает максимум физической производительности всех периферийных устройств в системе. Нижеприведенные значения были получены на Pentium-133 с контроллером Wide SCSI Adaptec 2940, Wide SCSI-НЖМД Barracuda, 100-Мбитной сетевой картой Digital 21040 (шина PCI) и 10-Мбитной NE2000-совместимой сетевой картой (шина ISA).

· переключение контекста (context switching): 1.95 мкс;

· время реакции на прерывание (interrupt latency): 4.3 мкс;

· задержка диспетчеризации (scheduling latency): 7.8 мкс;

Процессор Время переключения контекста, мкс Время реакции на прерывание, мкс
Pentium-133 1.95 4.3
Pentium-100 2.6 4.4
486DX-40 6.75
386SX-33 22.6

· дисковый ввод-вывод с длиной записи 16384 байт: 4 Мбайт/с (чтение), 5.3 Мбайт/с (запись);

· пропускная способность сети (network throughput): 1.1 Мбайт/с (Ethernet 10 Мбит), 5.3 Мбайт/с (Ethernet 100-Мбит).

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

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

В отличие от многих других ОС РВ, QNX, в дополнение ко всему обладает еще и всеми свойствами платформенной ОС. Она имеет свою графическую оболочку, дружественна к пользователю, поддерживает стандартные компиляторы и имеет переносимый API (POSIX). Это упрощает перенос в нее приложений из других ОС и делает ее привлекательной для использования в качестве платформы для резидентной разработки, то есть для использования ее в качестве базовой ОС не только для целевых, но и для инструментальных ЭВМ.

QNX Realtime Platform (QNX RTP) – полнофункциональный комплект резидентных средств разработки приложений реального времени на основе ОС РВ QNX6. В комплект входят полная поставка ОС QNX6, встраиваемая графическая оболочка Photon microGUI, необходимый инструментарий разработчика и разнообразное прикладное окружение, включая Интернет-средства, проигрыватели мультимедиа.

В QNX все определяется архитектурой на основе микроядра. Используемое в QNX6 микроядро Neutrino 2 отвечает за фундаментальные системные сервисы – планирование и синхронизацию потоков, межзадачное взаимодействие и обработку прерываний. Это делает его код очень компактным (порядка 20Кб), что практически исключает ошибки в нем, а значит, гарантирует стабильную работу сердца системы. Ядро можно дополнить всеми остальными сервисами (поддержкой файловых систем и сетевых протоколов, драйверами оборудования, и т.п.) простым подключением дополнительных программных модулей.

Архитектура подсистемы межзадачного взаимодействия в QNX основана на механизме обмена сообщениями и образует программную шину, позволяющую динамически (без перезагрузки системы) подключать/отключать любые программные модули и расширять приложения от встроенных систем, содержащих только ядро ОС, до мощных многопроцессорных архитектур.

Защита памяти. В обычных и встраиваемых ОС используется плоскостная (flat) модель памяти. Основной ее недостаток состоит в том, что в ней трудно диагностируются ошибки программирования типа недействительных указателей, в результате чего работающие программы затирают друг друга или даже ядро ОС, что приводит к отказу системы. Принятая в QNX модель работы с памятью лишена этого недостатка – благодаря использованию аппаратного диспетчера памяти, в QNX каждый программный компонент выполняется в изолированном адресном пространстве, надежно защищенном от несанкционированного доступа. Система на базе QNX всегда умеет корректно самовосстанавливаться после программных сбоев, даже в драйверах и других критических программах – без перезагрузки.

Поддержка защиты памяти в QNX также значительно упрощает отладку программ, поскольку позволяет определить, какой модуль попытался обратиться по недопустимому адресу – с точностью до инструкции. То, что в обычной ОС РВ может потребовать недели или даже месяцы, в QNX фактически не занимает времени вообще.

Универсальная модель процесса. Все процессы в QNX являются абсолютно равноправными, т.е. для QNX с точки зрения ОС не существует никакой разницы между "системными" и "пользовательскими" процессами – все они выполняются вне ядра в отдельных защищенных адресных пространствах, пользуются одними и теми же сервисами и могут быть запущены и выгружены в любой момент времени. Это обеспечивает QNX масштабируемость – в систему на базе QNX можно добавлять модули удаленно, загружая их по сети, не прибегая к перезагрузке ОС или перекомпоновке ядра.

Средства "горячего" резервирования. Защита памяти и возможность динамического добавления модулей в систему, предоставляемая применяемой в QNX универсальной моделью процесса, в совокупности дают еще один ценный выигрыш. Если в программном компоненте возникает ошибка, то во-первых, он не сможет своими действиями навредить всем остальным компонентам, а во-вторых, его можно будет корректно перезапустить, восстановив прежнее состояние системы. Это позволяет организовать в системе "горячее" резервирование программных модулей на базе программного пакета QNX High Availability Toolkit (HAT), который позволяет добиться коэффициента готовности 99,999%, что соответствует примерно 5 минутам простоя в год. В дополнение к этому, QNX поддерживает также "горячую" замену оборудования – причем не только на основе общепринятых механизмов (таких как PCI Hot Plug), но и для аппаратных конфигураций, отличных от PCI.

QNX обеспечивает приложениям настоящую производительность реального времени. Многозадачность, многопоточность (pthreads), приоритетное вытесняющее планирование, богатый выбор механизмов синхронизации, рекордно малые времена реакции на прерывание и переключения контекста (550 наносекунд на Pentium III) - реализация в QNX этих незаменимых для ОС РВ свойств удовлетворит самые изысканные запросы любых разработчиков.

Одна из сильных сторон QNX – ее сетевые возможности. Полная реализация в QNX стека протоколов TCP/IP – включая PPP, DHCP, NFS, RPC и SNMP – позволяет предоставлять широчайший спектр сетевых сервисов в самых разнообразных конфигурациях. Используя Ethernet или последовательные каналы, пользователи могут подключаться к Интернет или Интранет, обмениваться электронной почтой, запускать удаленные пользовательские интерфейсы и многое другое. Стек TCP/IP для QNX может масштабироваться от крошечных встраиваемых конфигураций до полнофункциональной реализации BSD 4.4.

QNX не останавливается на общепринятых стандартных сетевых механизмах. Реализованная в QNX сетевая архитектура Qnet предоставляет приложениям возможность прозрачного доступа к любому ресурсу, где бы он ни находился. Qnet является сетевым расширением механизма обмена сообщениями в QNX и дает возможность передавать сообщения по сети, как будто обмен происходит на локальном узле, позволяя, таким образом, объединить ресурсы сети QNX в единый логический суперкомпьютер. С использованием Qnet приложению становится неважно, где физически расположен ресурс – любой процесс может получить доступ к любому ресурсу в сети, будь то файловая система, администратор процессов или аппаратура, без необходимости в какой-либо модификации кода.

Применение Qnet дает приложениям непревзойденную гибкость. Одно и то же приложение может выполняться как на однопроцессорной ЭВМ, так и в распределенной сети, в том числе и состоящей из узлов, реализованных на разных процессорах – код приложения не зависит ни от конфигурации сети, ни от применяемого процессора, а значит, в случае внесения в систему каких-либо изменений никакого дополнительного программирования не потребуется. В качестве транспорта для Qnet вы можете использовать как свой собственный, оптимизированный для нужд вашего приложения, так и стандартный - например, применение TCP/IP в этом качестве сможет объединить ресурсы ваших приложений по всему миру.

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

В комплект разработчика QNX включены лучшие средства создания самых современных встраиваемых СРВ. Некоммерческая поставка QNX Realtime Platform содержит в себе популярный инструментарий GNU, графические отладчики и ряд дополнительных свободно-распространяемых средств разработки от "третьих" фирм. Кроме того, поскольку QNX имеет полностью POSIX-совместимый API, практически любое средство разработки, существующее в UNIX или Linux, может быть легко перенесено в QNX.

Разработку для QNX можно вести не только в самой QNX, но и в Windows, Linux или Solaris. Базовым средством разработки при этом является инструментарий GNU, дополненный на каждой платформе характерными для нее расширениями. При разработке из-под Windows разработчики используют преимущества мощной интегрированной среды разработки Metrowerks CodeWarrior с подключаемым модулем GNU-компилятор. QNX поддерживается открытой интегрированной средой разработчика Eclipse, которая написана на Java и служит как резидентным, так и кросс-инструментом.

Помимо средств разработки приложений на "чистом" С/С++, в QNX доступны как резидентные, так и кросс-платформенные CASE-средства для визуального проектирования, в том числе на UML (такие как Rational Rose Realtime компании Rational), Java (например, Visual Age Micro Edition от компании IBM) и языках технологического программирования в стандарте МЭК 61131-3 (например, среда технологического программирования ISaGRAF от компании AlterSys).

Разработчики графических приложений Photon могут значительно упростить программирование с помощью визуального средства разработки графических приложений – Photon Application Builder (PhAB). В PhAB графический интерфейс создается визуально, после чего автоматически генерируется реализующий его Си-код. PhAB помогает упростить не только стадию разработки интерфейса, но и стадии отладки и тестирования. PhAB доступен не только в самой QNX, но и в других ОС, для обеспечения возможности кросс-разработки.

Альтернативой PhAB для создания графических интерфейсов в среде Photon может служить поддерживающий QNX пакет разработчика Tilcon Realtime Developer, разработанный канадской компанией Tilcon Software Ltd. Он позволяет реализовывать в Photon сложнейшие объекты графического и человеко-машинного интерфейса, причем помимо стандартных объектов предлагает также ряд сложных компонентов типа электронных таблиц, объектов с множеством состояний и областей анимации – одним словом, все, что дает возможность в минимальный срок создавать потрясающие по своей функциональности интерфейсы и виртуальные инструменты.

Расширенные средства диагностики. Используя специализированный пакет QNX System Analysis Toolkit (SAT), разработчик средств диагностирования получает возможность проследить за поведением своей системы вплоть до микроядра. Системы высокой надежности, созданные с применением QNX High Availability Toolkit (HAT), в дополнение к этому позволяют также вести журналы отказов программных модулей с возможностью локализации и последующей отладки сбойных участков кода.

QNX поддерживается мощным программно-аппаратным пакетом системного анализа CodeTest от компании Applied Microsystems, обеспечивающим возможности анализа и оптимизации кода и контроля за использованием ресурсов ЭВМ.

QNX поддерживает множество процессоров и встраивается в широкий спектр готовых процессорных плат на их основе:

· x86 (AMD – Elan SC400; Arcom Controls - SBC-Geode-GXm; Fastwel - CPU686E);

· PowerPC (Motorola – MBX 860/821, Sandpoint 7400/7410/750/755/8240/8245, FADS 823/860T; Embedded Planet – RPX Lite, CLLF860T Redbox; IBM – Walnut 405GP, Artesyn);

· MIPS (MIPS – Malta);

· SH-4 (Hitachi – Solution Engine, BigSur);

· ARM/StrongARM (Intel – Assabet, ARMIntegrator 720);

· Xscale.

QNX также поддерживает разнообразные твердотельные диски (DiskOnChip, CompactFlash, и т.п.) и поэтому легко встраивается в любые оборудованные ими процессорные платы. Для встраивания на процессорные платы, для которых не существует готового пакета поддержки (Board Support PackageBSP), в QNX существуют пакеты встраивания (embedding SDKs), с помощью которых производители могут разрабатывать BSP самостоятельно. Эти комплекты ориентированы на различные целевые процессоры и содержат примеры стартового кода, начальных загрузчиков и драйверов встраиваемых файловых систем и документацию.

Для уменьшения затрат времени и труда, необходимых для создания своих собственных драйверов устройств, в QNX предусмотрена специализированная библиотека администратора ресурсов. Кроме того, для ряда категорий устройств (аудио- и видеоадаптеры, сетевые карты, устройства ввода, принтеры и USB-устройства) в QNX доступны пакеты разработки драйверов (Driver Development KitsDDK), содержащие примеры кода, заголовки, специализированные библиотеки и документацию.

Являясь полностью POSIX-совместимой ОС, QNX открывает возможности по переносу прикладного окружения из других ОС.

Если приложению необходимо просматривать веб-страницы или служить веб-сервером, можно использовать штатный для QNX встраиваемый веб-браузер Voyager, поддерживающий современные технологии SSL-128, а также содержащий дополнительные модули поддержки Macromedia Flash 4, либо мощный полнофункциональный браузер и клиент электронной почты Mozilla, основанный на технологии Netscape 6. QNX также поддерживается популярным веб-браузером Opera.

В поставку QNX входят все необходимые модули для создания мультимедиа-приложений, укомплектованных по последнему слову техники. Поддержка включает в себя MPEG-1, MPEG-2, CD-аудио, аппаратное ускорение двух- и трехмерной графики, игровые API (Mesa, RenderWare, Glide) и многое другое.

QNX также поддерживается встраиваемой виртуальной машиной Java J9 от компании IBM. J9 представляет собой компактную встраиваемую Java-машину для встраиваемых применений и позволяет выполнять Java-приложения в среде QNX, что дает разработчикам все преимущества объектно-ориентированной разработки и кросс-платформенной совместимости, предоставляемые технологией Java.

QNX поддерживает XIP (eXecute-In-Place - "выполнение с места"), что позволяет приложениям выполняться из ПЗУ или ППЗУ. Поскольку загружаемый образ представляет собой файловую систему с доступом по чтению, приложения стартуют без необходимости в отдельном администраторе файловых систем или командном интерпретаторе.