QNX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:13, 11 января 2018.
Open book.svg Авторство
А. А. Самрега
Согласовано: 11 ноября 2017 года
QNX
QNX logo.png
QNX 6.4.1 screenshot.png
Рабочий стол QNX 6.4.1 (Neutrino) после установки
Разработчик BlackBerry Ltd.
OS линейка UNIX-подобная
RTOS
Рабочее состояние Ведутся разработки новых версий
Исходный код Shared source
Начальная версия 1982; 36 years ago (1982)
Последний релиз 7.0 / March 2017; 1 year ago (2017-03)
Целевой маркетинг Встраиваемая система
Платформы Intel 8088, x86, MIPS, PowerPC, SH-4, ARM, StrongARM, XScale
Ядро (тип) RTOS (Микроядро)
Лицензия Проприетарная
Официальный веб-сайт qnx.com

QNX (произносится «кьюникс», «кью-эн-экс») — POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем. Считается одной из лучших реализаций концепции микроядерных операционных систем[Источник 1].

Содержание

Обзор

Основным назначением операционной системы QNX является реализация программного интерфейса POSIX в масштабируемой, отказоустойчивой форме, подходящей для широкого круга открытых систем, начиная от небольших встроенных систем с ограниченными ресурсами и заканчивая крупными распределенными вычислительными средами[Источник 2].

Отказоустойчивая архитектура также крайне необходима для работы критически важных приложений (англ. mission-critical applications), поэтому в ОС QNX в полной мере используются возможности работы с MMU-оборудованием.

Система достаточно небольшая, чтобы в минимальной комплектации уместиться на одну дискету, вместе с этим она считается очень быстрой и должным образом «законченной» (практически не содержащей ошибок).

QNX идеально подходит для встраиваемых приложений реального времени. Она может быть масштабирована до самых компактных конфигураций и способна работать в многозадачном режиме, управлять потоками, осуществлять планирование процессов по приоритетам (англ. priority-driven preemptive scheduling) и выполнять быстрое переключение контекстов (англ. fast context-switching). Более того, операционная система предоставляет все эти возможности посредством программного интерфейса, основанного на стандартах POSIX. Таким образом, компактность системы достигается не в ущерб стандартам.

Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов, как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы — одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Это позволяет ОС QNX обладать довольно большой гибкостью. Пользователи (разработчики) могут легко изменять ее конфигурацию в соответствии с требованиями создаваемых приложений. Можно использовать только те ресурсы, которые необходимы для конкретной задачи, изменяя систему в диапазоне от минимальной конфигурации микроядра с несколькими небольшими модулями до полнофункциональной сетевой системы, предназначенной для обслуживания сотен пользователей.

QNX Neutrino, выпущенная в 2001 году, перенесена на многие платформы и сейчас способна работать практически на любом современном процессоре, используемом на рынке встраиваемых систем. Среди этих платформ присутствуют семейства X86, MIPS, PowerPC, а также специализированные семейства процессоров, такие как SH-4, ARM, StrongARM и XScale.

Архитектура ОС QNX Neutrino

Система платная, при этом для некоммерческого использования и для обучения она предлагается бесплатно в течение 30 дней.[1][2]

Операционная система как организованный набор процессов

Исторически складывалось так, что операционные системы QNX испытывали на себе "прикладное давление" одновременно с двух сторон спектра вычислительных моделей. С одной стороны, это встраиваемые системы с ограниченными ресурсами памяти, а с другой — высокотехнологичные машины симметричной многопроцессорной обработки с гигабайтами физической памяти. Именно поэтому при разработке ОС QNX Neutrino в качестве проектных целей были приняты оба эти на первый взгляд исключающие друг друга подхода. Их выбор связан со стремлением значительно расширить функциональный диапазон операционных систем QNX за пределы возможностей других ОС.

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

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

Истинное ядро

Микроядро в ОС QNX Neutrino — это истинное ядро, потому что, во-первых, как и ядро исполнительного модуля реального времени, оно очень компактно, а во-вторых, оно предназначено для выполнения только нескольких базовых функций:

  • управление потоками (англ. thread services) посредством POSIX-примитивов для создания потоков;
  • управление сигналами (англ. signal services) посредством примитивов сигналов;
  • обмен сообщениями (англ. message-passing services), с помощью которого микроядро выполняет трассировку всех сообщений, пересылаемых между всеми потоками внутри системы;
  • синхронизация (англ. synchronization services) посредством примитивов синхронизации потоков;
  • планирование (англ. scheduling services), с помощью которого микроядро осуществляет планирование потоков в реальном времени на основе различных алгоритмов;
  • управление таймерами (англ. timer services), с помощью которого микроядро обеспечивает большой набор POSIX-таймеров;
  • управление процессами (англ. process management services), выполняемое администратором процессов, вместе с которым ядро образует единый модуль procnto. Администратор процессов предназначен для управления процессами, памятью и пространством имен путей (англ. pathname space).

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

Целью создания ОС на основе микроядра является не желание сделать ее как можно меньше по размеру, а стремление обеспечить большую гибкость за счет модульности структуры. Небольшой размер является, несомненно, положительным, но все-таки побочным эффектом.

Компактное ядро Neutrino имеет очень небольшой размер — менее 32 кбайт.

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

Микроядро ОС QNX Neutrino

В микроядре ОС QNX Neutrino существуют системные вызовы (англ. kernel calls), которые служат для управления следующими объектами:

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

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

Строгое применение этого подхода к разграничению функций между ядром и внешними процессами развенчивает миф о том, что микроядерной ОС свойственны более высокие накладные расходы (англ. runtime overhead) при выполнении операций, чем операционной системе с монолитным ядром. Если оценить работу, которая выполняется между переключениями контекстов во время обмена сообщениями и учесть высокую скорость этих переключений в минимизированном ядре, то становится очевидным, что объем времени, расходуемый на выполнение этих действий, настолько минимален, что становится пренебрежимо малым в сравнении с работой, производимой для обработки запросов от механизма обмена межзадачными сообщениями.

Системные и пользовательские процессы

Механизм вытеснения в ОС QNX Neutrino

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

Системные процессы по сути никак неотличимы от пользовательских процессов — они используют те же самые унифицированные службы программного интерфейса и ядра, которые доступны для любого пользовательского процесса, имеющего соответствующие привилегии[Источник 3].

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

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

QNX Neutrino как операционная система на основе обмена сообщениями

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

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

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

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

Распределенные сетевые конфигурации

Локальная компьютерная сеть, грубо говоря, является механизмом, с помощью которого несколько взаимосвязанных компьютеров могут обмениваться файлами и совместно использовать периферийные устройства. ОС QNX Neutrino идет намного дальше этой простой модели и позволяет интегрировать всю компьютерную сеть в единый, общий набор ресурсов.

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

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

Однокомпьютерная модель

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

Например, в критически важных средах приложения, предназначенные для управления устройствами ввода/вывода в реальном масштабе времени, могут потребовать от операционной системы повышенной производительности, в отличие от таких менее важных приложений, как, например, веб-браузер. Компьютерная сеть на основе ОС QNX Neutrino достаточно гибка, чтобы поддерживать оба типа приложений одновременно благодаря тому, что операционная система позволяет оптимально распределять вычислительные мощности между системными устройствами, не жертвуя при этом совместимостью с приложениями рабочего стола. Более того, функции обеспечения работы в реальном масштабе времени (как, например, наследование приоритетов (англ. priority inheritance)) интегрированы во всю компьютерную сеть на основе QNX Neutrino и действуют на всех ее уровнях независимо от того, какая среда передачи используется (волоконно-оптическая связь, последовательное соединение и т. д.).

Гибкие сетевые возможности

Компьютерные сети на основе ОС QNX Neutrino могут быть объединены c помощью различного оборудования и стандартных протоколов. Благодаря их полной прозрачности для прикладных программ и пользователей, архитектура ОС может быть легко изменена в любой момент без нарушения ее работы.

Каждый узел в компьютерной сети имеет уникальное имя-идентификатор. Это имя является единственным средством, по которому можно отличить сетевую конфигурацию ОС от автономной.

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

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

Файловая система

Иерархия файловых систем в ОС QNX Neutrino

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

В архитектуре ОС QNX Neutrino большинство из этих файловых систем представляют собой администраторы ресурсов. Каждая файловая система получает свою область в пространстве имен путей (называемую точкой монтирования) и предоставляет свои службы посредством стандартного программного интерфейса POSIX (open(), close(), read(), write(), lseek() и т. д.). Администраторы ресурсов файловой системы получают точку монтирования и управляют структурой каталогов ниже этой точки. Они также проверяют отдельные компоненты путевых имен на уровень разрешений и доступа.

Такая схема реализации имеет следующие преимущества:

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

Так как в ОС QNX Neutrino часто используется несколько файловых систем одновременно, их разработали в виде семейства драйверов и разделяемых библиотек для того, чтобы расширить возможности их повторного использования. В результате добавление новых файловых систем, как правило, требует меньше затрат, чем можно было бы ожидать.

Если одна файловая система уже запущена, то расходы ресурсов памяти для добавленной файловой системы будут минимальными, так как для этого понадобится только код для реализации протокола новой файловой системы.

Файловые системы, драйверы дисков и модуль блочного ввода/вывода io-blk реализуются в виде разделяемых библиотек, которые, по сути, представляют собой пассивные блоки программного кода, находящиеся резидентно в памяти, в то время как модуль io-cam является активным исполняемым модулем, который обращается к этим библиотекам. Процесс io-cam запускается первым и вызывает разделяемую библиотеку блочного уровня (англ. block-level shared library) (io-blk.so) и разделяемые библиотеки дисковых драйверов (devb-*). Позже могут быть динамически загружены разделяемые библиотеки, реализующие файловую систему, чтобы обеспечить соответствующий интерфейс и службы файловых систем.

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

История и разработка

В 1980 году студенты канадского Университета Ватерлоо Гордон Белл и Дэн Додж закончили изучение базового курса по разработке операционных систем, в ходе которого они создали основу ядра, способного работать в реальном времени. Разработчики были убеждены, что в их продукте была коммерческая потребность, и переехали в город Каната в провинции Онтарио (город высоких технологий, иногда это место называют северной Кремниевой долиной Канады) и основали компанию Quantum Software Systems. В 1982 году была выпущена первая версия QNX, работающая на платформе Intel 8088.

Одно из первых применений QNX, получивших широкое распространение, не относилось к встраиваемым системам — она была выбрана для собственного компьютерного проекта Министерства образования Онтарио, Unisys ICON. В те годы QNX использовалась в основном только для «больших» проектов, так как ядро, имеющее размер 44 килобайта, было слишком большим, чтобы работать на однокристальных чипах того времени. В середине 1980-х годов была выпущена QNX2. Благодаря своей надёжности система имела завидную репутацию и получила широкое распространение для управления промышленными машинами. QNX2 и сейчас иногда применяется в ответственных системах.

В середине 1990-х в Quantum поняли, что на рынке быстро завоёвывает популярность POSIX, и решили переписать ядро, чтобы оно было более совместимым на низком уровне. Так появилась QNX4. Она была доступна со встраиваемой графической подсистемой, названной Photon microGUI, и портированной под QNX версией X Window System. Это упростило перенос программ в QNX4 из операционных систем, основанных на UNIX. Также в начале 1990-х компания была переименована в QNX Software Systems (QSS), чтобы избежать путаницы с другими компаниями, в первую очередь с производителем жёстких дисков, имеющим такое же имя (Quantum Corporation).

В конце 1990-х было решено создать операционную систему, соответствующую свежей редакции POSIX и в максимальной степени совместимую с NetBSD и Linux, в то же время сохранив предсказуемое поведение и микроядерную архитектуру. Результатом этих разработок стала QNX Neutrino (QNX 6), выпущенная в 2001 году. Эта версия поставляется вместе с QNX Momentics Tool Suite, интегрированной средой разработки (IDE), основанной на Eclipse, различными утилитами GNU и программным обеспечением, ориентированным на Интернет: веб-браузерами Voyager и Mozilla, а также веб-сервером. В отличие от предшествующих версий, работавших только в PC-совместимых архитектурах, QNX6 легко адаптируется практически к любой аппаратной конфигурации. Кроме того, особое внимание было уделено проработке архитектуры с тем, чтобы её можно было эффективно масштабировать: как «вверх» (добавляя новые сервисы и расширяя функциональность), так и «вниз» (урезая функциональность, чтобы «втиснуться» в ограниченные ресурсы). Иными словами, QNX6 можно установить там, где QNX4 не уместилась бы. Также в QNX6 все драйверы были приведены к единой модели и все интерфейсы стали открытыми.

27 октября 2004 года компания QSS была куплена международной корпорацией Harman, активно работающей на рынке мультимедийных устройств и систем автомобильной электроники, но далекой от разработки ОС реального времени. При этом Harman сохранила полную автономию компании QSS.[3]

После 2004 года интерес в мире как к QNX[4], так и к конкурирующим продуктам[5][6][7], начал угасать. QNX сохранила популярность в основном в Японии, Германии, России и, в последнее время, в Китае благодаря активному развитию рынка автомобильной электроники и интегрированных систем управления производством.[8]

Осенью 2007 года компания QNX Software Systems приступила к поэтапному открытию исходного кода QNX Neutrino на условиях лицензии гибридного типа в рамках сообщества Foundry27[9]. Эта лицензия позволяет энтузиастам бесплатно получать доступ не только к исходным текстам операционной системы, но и к инструментальным средствам. При этом для коммерческого использования QNX Neutrino по-прежнему необходимо приобретать соответствующие лицензии[10]. Кроме того, лицензия QNX Neutrino прямо запрещает проведение сертификаций продуктов, производных от исходного кода QNX Neutrino, без письменного разрешения компании QSS.

В сентябре 2009 года на портале Foundry27 был создан проект, предназначенный для сопровождения QNX4 в публичной форме.[11]

9 апреля 2010 года канадская компания Research In Motion, владеющая брендом BlackBerry, заключила соглашение о выкупе у компании Harman International подразделения, занимающегося разработкой QNX.[12] В этот же день на сайте Foundry27 появилось объявление, что доступ к исходным кодам QNX для широкой общественности с этого момента ограничен.[13]

27 сентября 2010 года на конференции BlackBerry DEVCON-2010 был представлен планшетный компьютер BlackBerry PlayBook c BlackBerry Tablet OS на основе QNX Neutrino.[14]

Платформа QNX

Обычно под QNX понимают семейство операционных систем жесткого реального времени. Однако правильнее рассматривать QNX как собирательное название программных платформ для построения компьютерных систем реального времени. В настоящее время для коммерческого использования доступны программные платформы QNX двух поколений: QNX4 и QNX6[Источник 4].

QNX4

QNX 4 — классическая программная платформа для систем автоматизированного управления технологическими процессами (АСУ ТП) промышленных предприятий. Основу платформы QNX4 составляет RTOS QNX 4.25, графическая оболочка Photon microGUI 1.14, Socket 4.25/5.0 (средства поддержки стека протоколов TCP/IPv4) и система программирования Watcom C/C++ 10.6.

QNX4 работает исключительно на архитектурной платформе X86, начиная с i386.

Сопровождение RTOS QNX 4.25 продолжается в основном в направлении поддержки новых аппаратных устройств, хотя и не ограничивается этим. Одна из последних редакций дистрибутива добавила поддержку USB и приводов SATA.

На базе RTOS QNX 4.25, стека TCP/IP и интерфейса Photon компанией «СВД Встраиваемые Системы» разработана российская защищённая операционная система реального времени (ЗОСРВ) «QNX» (децимальный номер КПДА.00002-01)[15]

QNX6

В основе QNX 6 лежат RTOS QNX Neutrino и комплект инструментов QNX Momentics, поставляемых в виде комплектов QNX Software Development Platform (QNX SDP).

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

Механизмы RTOS QNX Neutrino для обеспечения надежности:

  • микроядерная архитектура с полной изоляцией модулей в ОЗУ;
  • механизм обеспечения горячего резервирования и прозрачной модификации программных компонентов;
  • механизм адаптивного квотирования ресурсов ЦПУ и ОЗУ (QNX Adaptive Partitioning);
  • технология поддержки многопроцессорности (QNX MultiCore Technology);
  • технология быстрой активации устройств (QNX Instant Device Activation);
  • механизм формирования распределенной вычислительной среды (QNX Transparant Distributed Networking);
  • технология автоматического восстановления процессов и логических соединений (QNX High Avalability Toolkit);
  • механизмы мониторинга (QNX System Analysis Toolkit).

Для создания, тестирования, конфигурирования средств исполнения QNX Neutrino, а так же для разработки, отладки, тестирования и верификации приложений используются инструментальные средства QNX Momentics, устанавливаемые на выбор в QNX Neutrino, Microsoft Windows или Linux. Инструментальные средства QNX Momentics не требуются во время эксплуатации целевых систем QNX Neutrino.

Комплект инструментальных средств QNX Momentics включает:

  • инструменты разработки и отладки приложений на С/C++ с генерацией кода для всех аппаратных платформ, на которых работает RTOS QNX Neutrino;
  • визуальное средство разработки приложений (Photon Application Builder);
  • инструменты для анализа и оптимизации программ — системный профилировщик, прикладной профилировщик, анализатор покрытия кода тестами;
  • инструменты для построения целевых систем — формирования загружаемых образов, образов встраиваемой файловой системы, создания файловых систем Power Safe и QNX4, конвертирования образов в форматы программаторов ППЗУ и т. д.;
  • инструменты для мониторинга целевых систем QNX Neutrino (выполняющихся процессов, каналов и соединений, состояния потоков, сигнальных масок, файловых дескрипторов и т. д.), анализа использования ОЗУ процессами;
  • программы удаленного доступа к рабочему столу Photon целевой системы QNX Neutrino из среды Microsoft Windows и UNIX — Phindows и Phinx.

На базе RTOS QNX Neutrino 6.5.0 компанией «СВД Встраиваемые Системы» разработана российская защищённая операционная система реального времени (ЗОСРВ) «Нейтрино» (децимальный номер КПДА.10964-01).[16]

Области применения QNX

В настоящее время существуют сотни прикладных программ на базе QNX, предназначенных для управления производственными процессами, разработанных такими промышленными лидерами, как Bailey Control, Foxboro, Siemens и General Electric и т. д. Ведущие производители лабораторных измерительных систем, такие как Beckman Instruments, 3M, Du Pout, Mettlev-Toledo и другие, используют для своих систем QNX, как надежную, высокопроизводительную операционную систему[Источник 5].

Единственным ограничением на широкое использование QNX является высокая стоимость лицензии и сильная зависимость от QNX Software Systems в плане лицензирования разработанного программного обеспечения. Но, тем не менее, она занимает лидирующую позицию среди ОС реального времени на платформе ПК.

Cisco Systems использует оптимизированную версию микроядра QNX Neutrino в программном обеспечении IOS XR.[17] Программный пакет IOS XR предназначен для управления коммутаторами Cisco CRS-1, обеспечивает непрерывный режим работы и поддерживает развитые функции управления терабитными коммутаторами с распределённой архитектурой.

На март 2009 года решения на базе QNX лицензированы для использования на более чем 10,1 миллионах единиц техники от практически всех ведущих производителей автомобилей, включая BMW, Chrysler, Daimler, Fiat, Ford, General Motors, Honda, Hyundai, Mazda, Mitsubishi, Nissan, Saab AB, SsangYong, Toyota и Volkswagen.[18] В частности, такие автомобили выпускаются под марками Acura, Alfa Romeo, Audi, Buick, Cadillac, Chevrolet, Dodge, Honda, Hummer, Infiniti, Jeep, Lancia, Mini, Mercedes-Benz, Opel, Pontiac, Saturn и другими.[19]

Используется для управления роботом BigDog.[20]

BlackBerry использует QNX в качестве основы для своей BlackberryOS 10.

Система управления движением городского транспорта

В городе Оттава-Карлетон (Канада) на базе операционной системы QNX разработана система управления движением городского транспорта муниципалитета города (RMOC — Regional Municipality of Ottawa-Calerton).

Эта система (одна из самых больших в Северной Америке) объединяет 698 светофоров и 2660 придорожных датчиков на протяжении 1100 километров шоссе. Пропускная способность этих шоссе — 5.4 биллиона автомобилей ежегодно. Кроме времени и продолжительности переключения сигналов светофоров на каждом перекрестке города данная система управления должна фиксировать происходящие события, анализировать работоспособность оборудования через придорожные датчики. За то время, пока вы читали эту статью, данная система управления должна была выдать примерно 250 тысяч команд светофорам и получить около трех миллионов ответов (данная информация займет около 8 Мбайт памяти). Система управления RMOC в настоящее время вышла за рамки мини-системы с такой простотой, которая отличает все системы, разработанные на базе QNX.

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

  • потребовала 90 человеко-лет на разработку и 8 месяцев на инсталляцию;
  • стоила 2 миллиона канадских долларов;
  • управляла 640 перекрестками;
  • занимала 85% оперативной памяти.

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

  • потребовалось 2 человеко-года на разработку и 2 недели на инсталляцию;
  • стоимость составила 10 тысяч канадских долларов за каждый узел;
  • один узел управляет 512 перекрестками;
  • для работы требуется всего 10% оперативной памяти.

Система управления ядерным реактором

Приморское отделение канадской компании Atomic Energy of Canada Ltd., которая известна как разработчик, производитель и продавец ядерных реакторов, специализируется на разработке программных продуктов по управлению и мониторингу. На основе операционной системы QNX этим отделением разработана система управления ядерным реактором, которая называется — Распределенная Система Управления с Открытой Архитектурой (Open Architecture Distributed Control System). Данная система используется в Словении на ядерной электростанции, разработанной в США.

Система включает следующие функции:

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

Отказоустойчивый внутрисистемный интерфейс достигается с помощью взаимодействия промышленных компьютеров c шиной VME-bus и с шиной ISA-bus.


Система слежения за автомобилями Teletrac

Эта система полностью разработана на базе ОС QNX и в настоящее время успешно применяется в таких крупных городах США, как Лос-Анджелес, Чикаго, Майами. Система Teletrac применяется для трех основных типов задач:

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

Система Teletrac может отслеживать до 70 автомобилей в секунду по каждому информационному каналу с точностью до 30 метров.

Исследовательские системы

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

QNX использовалась в проекте атмосферных исследований (англ. Atmospheric Research Project), проводимого в Гарвардском университете. Решающую роль в этом выборе сыграла возможность работы в реальном масштабе времени — необходимое требование для систем сбора информации.

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

Конкуренты

Наиболее крупными конкурентами QNX являются VxWorks, OS-9, Integrity, LynxOS, MINIX 3 (Под лицензией BSD), а также некоторые ОС на ядре Linux (RTLinux и др.).

Установка QNX Software Development Platform 6.5.0 на VirtualBox

QNX Software Development Platform (SDP) является полной и всеобъемлющей средой разработки для устройств и систем на базе QNX Neutrino. QNX SDP 6.5.0 включает в себя операционную систему реального времени QNX Neutrino 6.5.0 и комплект разработчика QNX Momentics Tool Suite 6.5.0.

Дистрибутив QNX SDP

Получить дистрибутив QNX SDP можно на официальном сайте проекта QNX в разделе "QNX Download Center".[21]

Аккаунт myQNX

Для установки QNX SDP 6.5.0 потребуется ключ активации, который можно получить по электронной почте после регистрации аккаунта myQNX на официальном сайте.[22] Ключ является временным и служит для ознакомления с продуктами QNX.

Установка

Настройки виртуальной машины

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

InstScr 1.png InstScr 2.png

Начало установки

Для того, чтобы начать установку ОС QNX на новый раздел жесткого диска следует нажать F3.

InstScr 3.png

Запрос ключа активации

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

InstScr 4.png InstScr 5.png

Выбор жесткого диска и файловой системы

Далее необходимо выбрать жесткий диск, на который будет произведена установка, и тип файловой системы. По умолчанию предлагается выбрать Power-Safe filesystem (type 179) — клавиша F1.

InstScr 6.png InstScr 7.png

Затем нужно задать размер раздела, создаваемого на жестком диске.

InstScr 8.png

Установка дополнительного ПО

Перед началом установки будет выведено два вопроса:

  • "Нужно ли установить стандартное расположение каталога /usr/qnx650?"
  • "Нужно ли установить пакет GNU Public Licience Utility?"

Можно как согласиться с установкой (клавиша y), так и отказаться от нее (клавиша n). Кроме того, можно выбрать решение по умолчанию — клавиша ↵ Enter.

InstScr 9.png

После этого начнется процесс установки.

Окончание установки

После завершения установки следует изъять диск из привода (вкладка "Устройства" меню окна VirtualBox) и перезагрузить систему нажатием клавиши ↵ Enter.

InstScr 10.png

Окно приветствия

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

Настройка параметров дисплея в ОС QNX Neutrino 6.5.0

Затем появится окно приветствия. Здесь имеется два варианта входа в систему:

  1. Нажатие на изображение "Superuser".
  2. Ввод в поле "Login" — root, а в поле "Password" — Password.
Окно приветствия в ОС QNX Neutrino 6.5.0

Рабочий стол

В конечном итоге появится рабочий стол ОС QNX Neutrino 6.5.0 с графической оболочкой Photon.

Рабочий стол ОС QNX Neutrino 6.5.0

Видео установки

Примечания

Источники

  1. QNX // Википедия. [2017–2017]. Дата обновления: 06.05.2017. URL: https://en.wikipedia.org/wiki/QNX (дата обращения: 24.04.2017)
  2. Операционная система реального времени QNX Neutrino 6.5.х. Системная архитектура // СВД Встраиваемые системы. URL: http://www.kpda.ru/upload/docs/Neutrino_Sys_Arch_6.5.pdf (дата обращения: 27.04.2017)
  3. Операционная система QNX4. Системная архитектура // СВД Встраиваемые системы. URL: http://www.kpda.ru/upload/docs/Sys_arch_QNX4.pdf (дата обращения: 27.04.2017)
  4. Что такое QNX? // СВД Встраиваемые системы. URL: http://www.kpda.ru/products/qnx/ (дата обращения: 27.04.2017)
  5. Операционная система QNX // SWD Software Ltd – официальный дистрибьютор QNX на территории России и СНГ. [1996–2015]. URL: http://www.swd.ru/index.php3?pid=572 (дата обращения: 27.04.2017)

Ссылки

  • Хабрахабр [Электронный ресурс]: Операционная система реального времени QNX: Знакомство / Дата обращения: 25.04.17. Режим доступа: https://habrahabr.ru/post/124656/
  • Хабрахабр [Электронный ресурс]: ОСРВ QNX: Немного о микроядре, потоках и процессах / Дата обращения: 28.04.17. Режим доступа: https://habrahabr.ru/post/125243/
  • SWD Software Ltd – официальный дистрибьютор QNX на территории России и СНГ [Электронный ресурс]: Статьи и публикации / Дата обращения: 26.04.17. Режим доступа: http://www.swd.ru/index.php3?pid=20
  • СВД Встраиваемые системы – официальный дистрибьютор QNX на территории России и СНГ [Электронный ресурс]: QNX Neutrino – Операционная система реального времени / Дата обращения: 27.04.17. Режим доступа: http://www.swd.ru/files/pdf/brochures/Neutrino.pdf
  • СВД Встраиваемые системы – официальный дистрибьютор QNX на территории России и СНГ [Электронный ресурс]: QNX Momentix – Комплект разработчика / Дата обращения: 27.04.17. Режим доступа: http://www.swd.ru/files/pdf/brochures/Momentics.pdf
  • SWD Software Ltd – официальный дистрибьютор QNX на территории России и СНГ [Электронный ресурс]: ОСРВ QNX – выбор, проверенный временем / Дата обращения: 27.04.17. Режим доступа: http://www.swd.ru/files/pdf/articles/BC2009_1_54-56.pdf