Интерактив
Вход
Регистрация
Опрос
Опрос: Хотите ли Вы эмигрировать из России?
Да
Нет
В раздумьях

Реклама
Главная » Wiki » QNX
QNX

QNX

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

История

Компания QSSL, разработавшая операционную систему QNX, была создана в 1980 году Дэном Доджом и Гордоном Беллом (оба — выпускники университета Ватерлоо, расположенного в Онтарио, Канада). Сначала компания называлась Quantum Software Systems Limited, а ее продукт назывался «QUNIX» («Quantum UNIX»). После вежливого письма адвокатов компании AT&T (которой в то время принадлежала торговая марка «UNIX»), имя продукта изменили на «QNX». Спустя некоторое время изменили и название самой компании — на «QNX Software Systems Limited» — поскольку в те дни казалось, что у всех и у каждого и у их собак были компании по имени «Quantum что-то» или как-нибудь в этом духе.

Первый программный продукт, получивший коммерческий успех, назывался просто «QNX» и работал на процессорах 8088 серии. Затем, в начале 80-х, была выпущена операционная система «QNX2» (QNX, версия 2). Она до сих пор успешно применяется во многих ответственных приложениях. Примерно в 1991 году появилась новая операционная система, «QNX4», с улучшенной поддержкой 32-разрядных операций и стандарта POSIX. И, наконец, в 1995 году была заявлена новая модификация ОС семейства QNX, называемая QNX/Neutrino.

Несмотря на то, что термином «Neutrino» часто называют саму ОС (сам Роб, кстати, тоже грешит этим), это не так. Neutrino — имя микроядра, а не всей ОС в целом; QNX/Neutrino была названа так, потому что является версией QNX, основанной на микроядре Neutrino. Впоследствии, после выхода пакета QNX Realtime Platform, чтобы не вносить путаницы, ОС QNX/Neutrino стали называть просто QNX6.

Операционная система QNX канадской компании QSSL имеет более чем 20-летнюю историю. Эта система строится на базе микроядра с организованными по технологии клиент-сервер сервисами, вынесенными на уровень пользовательских приложений. Микроядро системы выступает в качестве диспетчера сообщений, переадресовывая системные вызовы прикладных программ клиентов соответствующим сервисам серверам и обратно. Такое построение является одним из наиболее оптимальных решений в ОСРВ и обеспечивает высокую надежность и масштабируемость системы. В системе QNX только микроядро исполняется на уровне привилегий 0 процессора Intel, системные сервисы (менеджеры) запускаются на уровне привилегий 1, драйвера устройств — на 2-м уровне, а пользовательские приложения на 3-м уровне привилегий. Подобное разделение приводит к более высокой надежности и отказоустойчивости системы, т.к. при "зависании" отдельных драйверов или сервисов, они могут быть перезапущены без перезагрузки системы. В ОС QNX реализована также модель виртуальной памяти для каждого процесса, что обеспечивает высокую степень защищенности данных и кода прикладных приложений и системы. Однако, за высокую надежность, обеспечиваемую разделением уровней приоритетов и индивидуальным адресным пространством процессов, приходится платить более длительным временем переключения контекстов прикладных программ, ядра и системных сервисов. В системе QNX реализовано управление памятью на основе виртуального адресного пространства, что обеспечивает зашиту данных и кода приложений, ядра и системных сервисов. Важной особенностью ОСРВ QNX является очень высокая степень POSIX совместимости, что обеспечивает легкую переносимость приложений написанных в среде POSIX совместимых систем. Это приводит к тому, что разработчик в QNX может воспользоваться всем богатством инструментальных средств, предоставляемых POSIX сообществом.

Версии QNX

Что же мы имеем в виду, произнося слово "QNX"? QNX — это семейство операционных систем жесткого реального времени, ориентированных главным образом на рынок встраиваемых систем. Такое назначение требует от ОС максимального использования особенностей аппаратуры. Поэтому ОС QNX разных версий (правильнее было бы сказать — поколений) не имеют между собой двоичной совместимости. Конечно, разработчики при создании новых "версий" QNX используют лучшие решения из предыдущих версий и остаются верными фундаментальным концепциям QNX. Для коммерческого использования доступно три семейства ОС QNX: QNX2, QNX4 и QNX6.

ОС QNX2 мало распространена в России. Во-первых, до 1991 года система была запрещена к вывозу из Северной Америки как стратегический ресурс. Во-вторых, ЭВМ на базе процессоров Intel 286 почти повсеместно вышли из употребления.

ОС QNX4 использует защищенный режим, поэтому может применяться на процессорах не ниже Intel 386. QNX4, пожалуй, самая распространенная на сегодняшний день ОС QNX в промышленности. Последняя ее версия — 4.25 патч G (вышла в начале 2003 года). Компания QSS не развивает эту ОС, но продолжает выпускать к ней драйверы для новых устройств.

ОС QNX6 (или QNX Neutrino) благодаря интересным и необычным архитектурным решениям может использоваться не только на х86-совместимых ЭВМ и еще более удобна для встраивания, чем QNX4. QNX Neutrino разрабатывается с полной поддержкой спецификаций POSIX; кроме того, разработчики системы стремятся обеспечить максимальную переносимость в QNX исходных кодов, написанных для ОС Linux. Это значительно облегчает портирование свободно распространяемого ПО в QNX и, с другой стороны, обеспечивает "переносимость" для разработчиков — прикладной программист, знающий любую UNIX-подобную ОС, может приступать к разработке прикладного ПО для QNX без переучивания. Последняя версия QNX Neutrino — 6.3.
Инструментальные и целевые системы

С точки зрения QNX все инсталлированные копии ОС относятся к двум категориям: инструментальные системы и целевые системы.

Инструментальная система (или среда разработки) — это ЭВМ со средствами, позволяющими формировать образ целевой системы. Такие средства включены только в коммерческие дистрибутивы пакета разработчика QNX Momentics.
Целевая система (или среда исполнения) предназначена для эксплуатации. Среда исполнения фактически представляет собой инструментальную систему, из которой удалено все ненужное для данной прикладной задачи.

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

Дистрибутив — это способ поставки инструментальных систем. Другими словами, QSS продает именно инструментарий разработки. Среды исполнения формируются разработчиком самостоятельно, но для поставки их кому-либо еще требуется покупка лицензий на соответствующее число копий среды исполнения (их называют "модули Run-Time"). Такая политика позволяет существенно снизить стоимость целевых систем.
Следует обратить внимание, что средства разработки поставляются в четырех вариантах — для Microsoft Windows ХР, Sun Solaris (только для SPARC-версии), Linux и, разумеется, для QNX. Целевые системы могут генерироваться для нескольких аппаратных платформ (ARM, MIPS32, StrongARM, SH4, PowerPC, Xscale, x86). Этот список, вероятно, будет пополняться. Выдвигая на рынок ОС QNX6, компания QSS выпустила два дистрибутива:

  • QNX Real Time Platform (QNX RTP) — полнофункциональная среда разработки; распространялась бесплатно для некоммерческого использования. В случае коммерческого использования системы разработчик должен был приобрести соответствующую лицензию у QSS;
  • QNX Networking Infrastructure Platform (QNX NIP) — чисто коммерческий дистрибутив, представляющий собой расширение QNX RTP дополнительными программными пакетами, ориентированными на производителей сетевого оборудования.

С выходом версии QNX 6.2 компания QSS несколько изменила подход к формированию дистрибутивов. Пакет разработчика,включающий в себя ОСРВ QNX, графическую среду Photon, инструменты разработки и различное дополнительное ПО, получил название QNX Momentics. В настоящее время выпущено несколько дистрибутивов QNX Momentics:

  • Non-Commercial Edition (NC) — ознакомительный комплект разработчика, бесплатный для некоммерческого использования;
  • Standard Edition (SE) — пакет разработчика, позволяющий вести коммерческую разработку ПО, в том числе формировать целевые системы для разных платформ;
  • Professional Edition (РЕ) — расширенный пакет разработчика, дополненный интегрированной средой разработки QNX IDE, основанной на технологии Eclipse, а также расширенной базой примеров в исходных текстах и рядом дополнительных компонентов.

Подробная информация по комплектации дистрибутивов Momentics доступна как у QSS, так и у ее партнеров. Профессиональный комплект QNX Momentics считается базовым (т.е. SE — фактически является урезанным РЕ). РЕ может дополняться пакетами расширения (Bundles) для разных целевых рынков. Теперь вы знаете, чем пакет разработчика QNX Momentics отличается от ОСРВ QNX.

POSIX-совместимость

POSIX (Portable Operation Systems Interface) — это развивающийся стандарт, призванный обеспечить переносимость исходных текстов программ между ОС разных производителей. За основу стандартов POSIX были взяты ОС семейства UNIX, в дальнейшем стандарты были дополнены расширениями, включая расширения, касающиеся реального времени. Разработкой стандартов POSIX занимаются рабочие группы Института инженеров по электротехнике и радиоэлектронике (ИИЭР, Institute of Electrical and Electronics Engineers — IEEE) США. Поэтому стандарты POSIX после утверждения имеют маркировку IEEE. Кроме того, существуют Международная организация по стандартизации (International Organization for Standardization — ISO) и Международная электротехническая комиссия — МЭК (International Electrotechnical Commission — IEC). Эти организации могут утверждать стандарты IEEE в качестве международных. Стандарт ISO/IEC 9945-1 определяет интерфейс прикладного программирования (API) для операционных систем. Этот стандарт включает следующие стандарты:
POSIX.l (IEEE 1003.1) — базовый API операционных систем;
POSIX.la (IEEE 1003.1а) — некоторые расширения API;
POSIX.4 (IEEE 1003.1b) — расширения для поддержки реального времени;
POSIX.4a (IEEE 1003.1с) — интерфейсы потоков, выполняющихся внутри POSIX-процессов;
POSIX. lb (IEEE 1003. Id) — дополнительные расширения реального времени;
POSIX.12 (IEEE 1003.lg) — независимый от протокола интерфейс сокетов;
IEEE 1003.lj — еще одно дополнительное расширение реального времени.
Стандарт ISO/IEC 9945-2 (POSIX.2 или IEEE 1003.2) определяет набор утилит и командных интерпретаторов. Стандарт ISO/IEC 13210 (POSIX.3 или IEEE 1003.0) определяет набор тестов, позволяющих определить POSIX-совместимость операционной системы.
Заметим, что в документации часто используется комбинированное обозначение номеров стандартов, например вместо POSIX.4a или IEEE 1003.1с пишут POSIX 1003.1с.
Однако многие ОСРВ работают внутри некоторого промышленного оборудования с весьма ограниченными ресурсами, т.е. являются встраиваемыми системами. Встраиваемые системы не могут и не должны обеспечивать всю POSIX-функциональность. Поэтому было решено определить, если можно так выразиться, правила "урезания" стандартов POSIX в необходимых случаях. Такие "урезания" названы профилями прикладных контекстов реального времени и регламентируются стандартом ISO/IEC ISP 15287-2 (POSIX. 13 или IEEE 1003.13). Этот стандарт определяет такие профили:

  • минимальная система — встроенная система без поддержки механизма управления памятью (MMU), без файловой системы и терминала. В такой системе разрешается только один многопоточный процесс;контроллер реального времени — минимальная система, дополненная файловой системой и терминалом ввода/вывода;
  • специализированная система — большая встроенная система, в которой может выполняться несколько многопоточных процессов. Файловая система отсутствует;
  • многоцелевая система — операционная система реального времени, обеспечивающая поддержку всей предусмотренной стандартом POSIX функциональности.

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

Смотрите также

Ссылки

Вложения для QNX

Последнее изменение от Серафим Русский: 13 Июнь 2011, 10:26 |История
При цитировании информации с сайта гиперрсылка на сайт ОБЯЗАТЕЛЬНА!