ОС QNX сегодня

14 май, 2002 - 23:00Олег Цилюрик
Название операционной системы QNX знакомо многим. Для одних оно прочно ассоциируется с демонстрационной дискетой, на которой умещались ядро системы, графический интерфейс пользователя и Web-броузер. Для других -- со сложными системами управления промышленным и медицинским оборудованием, сетевыми маршрутизаторами, сотовыми телефонами.
Кто-то, наверное, вспомнит и кое-какие подробности: QNX -- масштабируемая, встраиваемая операционная система "жесткого" реального времени. Применяется в наиболее критичных областях (так называемых Mission Critical Appliances). Девиз фирмы QNX Software Systems -- "Build a more reliable world", что значит "сделаем мир надежнее". И действительно, на протяжении всего двадцатилетнего существования компании ее продукты для многих являются образцом стабильности и качества. На базе QNX строятся высоконадежные решения для управления промышленным и медицинским оборудованием, бортовыми системами, сетевыми маршрутизаторами и даже ядерными реакторами. Однако QNX -- довольно дорогая ОС, дороже большинства коммерческих разработок Microsoft, Sun и других фирм.

ОС QNX сегодня
Новый менеджер пакетов
Все! На этом воспоминания (а вместе с ними часто и интерес) обычно заканчиваются. Собственно, и авторов статьи не слишком многое связывало с этой операционной системой, пока примерно полтора года назад не пришлось начать работу с ней, что называется, "вплотную". Тут-то и обнаружились "сюрпризы". Впрочем, давайте по порядку.

В сентябре 2000 г. QNX Software Systems расширила понятие "операционная система реального времени" выпуском нового продукта под названием QNX RealTime Platform (RTP) -- "платформа реального времени". Это -- совершенно новая ветвь развития QNX Neutrino 2.1. В дистрибутив включен полный комплект приложений для пользователя и разработчика, занимающий целый компакт-диск. Причем, что немаловажно, QNX RTP бесплатна для некоммерческого применения, т. е. вам не надо платить за систему и наборы инструментальных средств до того, как вы окончательно определитесь с их выбором.

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

Выпущена новая версия 2.03 уже ставшей привычной в QNX графической оболочки Photon. Она заметно отличается от предыдущей как внешним видом, так и набором возможностей. Появились современные средства мультимедиа, менеджер программных пакетов, усилены сетевые сервисы, и полностью переделаны средства разработки. Хотя Photon имеет собственный API, в нем есть опциональная поддержка приложений для X Window System (XFree86 версии 4.1) -- Xphoton.

ОС QNX сегодня
Файловый менеджер -- почти как в Windows
Основным компилятором в системе стал GСC, распространяемый по лицензии GNU GPL с открытым исходным кодом и являющийся стандартом де-факто при разработке приложений под различные Unix-платформы. Да и кроме клонов Unix, сложно найти хотя бы одну систему, на которую он не был бы перенесен. Старый компилятор, Watcom, отложен до лучших времен. Возможно, его место займет стремительно набирающий обороты проект OpenWatcom, но это дело пусть и недалекого, но будущего.

Программный API приобрел полную POSIX-совместимость. QNX никогда в этом не нуждалась, так как всегда и везде "шла своим путем", но в этом остро нуждались разработчики. Таким образом, почти все богатство общесистемного и прикладного программного обеспечения для Linux/xBSD/Solaris легко переносится в QNX, нередко в течение считанных часов и практически без внесения изменений в код (из собственного опыта: 8 часов на MySQL при объеме исходного кода в несколько десятков мегабайт).

К моменту, когда выясняются все эти нюансы, ситуация становится весьма интересной. Однако на деле все происходит далеко не так гладко, как на бумаге. Ниже мы попытаемся коротко перечислить положительные и отрицательные особенности системы, выявленные в результате непосредственной работы с ней. Естественно, все приведенные наблюдения субъективны и весьма относительны. Безусловный "плюс" для программиста вполне может оказаться "минусом" для пользователя либо получить нейтральную оценку с позиции менеджера производства или администратора сети. Мы же больше ориентировались на точку зрения разработчика нового ПО.


Достоинства QNX

QNX построена на базе микроядра и межпроцессного обмена сообщениями (что отличает ее от систем, основанных на макроядре, например, Windows 9х, Linux). Система базируется на хорошо проработанной теории, вследствие чего -- предсказуема.

За счет такой архитектуры все, что работает на локальном процессоре, работает и на удаленном. Несколько компьютеров, соединенных в QNX-сеть, могут быть задействованы для выполнения единого вычислительного процесса (в смысле "процесса операционной системы"). Ни в одной ОС мы не встречали такой степени "сетевой прозрачности". В частности, таким образом обеспечивается доступ к любой системной информации на соседних узлах (вплоть до контекста каждого процесса), прямой доступ к удаленным устройствам (начиная с накопителей и заканчивая COM-портами, PCI-шиной и оперативной памятью).

Только процесс микроядра (менее 32 KB) выполняется в режиме супервизора. Все остальные (включая менеджер процессов, драйверы устройств, файловых систем и т. д.) -- как ординарные процессы пользовательского уровня.

ОС QNX сегодня
По-русски -- сложно, но можно
Благодаря этому драйверы устройств (и, что особенно важно, псевдоустройств, которые могут быть всем, чем угодно, например, оконной подсистемой со своим специфическим поведением) подгружаются и выгружаются динамически, гарантированно не нарушая работоспособности ядра (любой, кому доводилось перекомпилировать ядро Linux для добавления нового драйвера, оценит это по достоинству).

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

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

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

Система удовлетворяет требованиям "жесткого" реального времени. Это -- основная отличительная особенность QNX от своих собратьев "псевдореального" времени или так называемого "мягкого" реального времени, например realtime-надстроек для Windows NT. QNX позиционируется как RT Linux (а это самые высокие требования к системам реального времени, заявленные на сегодняшний день), хотя не является Linux-системой и по многим параметрам превосходит RT-надстройки для Linux за счет архитектурных особенностей и многолетних исследований в этой области. На базе QNX создавались настолько автономные системы, что конечный пользователь узнавал о типе ОС лишь спустя десяток лет после ввода в эксплуатацию при выходе из строя аппаратных средств.

Если Linux -- система с полностью открытым исходным кодом, а Windows -- полная противоположность, то QNX занимает в этом контексте некоторое промежуточное положение. Все, что портировано из мира Open Source, естественно, открыто. Многие составные части системы уже либо открыты, либо подробно описаны QSS в примерах и справочной системе. В дальнейшем компания обещает последовательно обнародовать код почти всех компонентов ОС, за исключением микроядра.

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

Хотя система довольно переборчива в отношении оборудования, однако крайне нетребовательна к ресурсам. В конфигурации i486 66 MHz с 48 MB QNX одинаково бодро работает и с графикой, и без нее, а тесты на выживаемость (одновременное обслуживание нескольких десятков Web-клиентов) выдержала с успехом. При установке чуть ли не всего существующего для нее в природе ПО система занимает на диске чуть более 1 GB. Возможность использования достаточно старого оборудования может оказаться существенным фактором для промышленного применения, не предполагающего регулярных "апгрейдов".

QNX работает практически со всеми распространенными процессорными архитектурами: MIPS, PowerPC, Hitachi CH4, Intel StrongARM, x86 (для релиза RTP 6.1.0, с каждой новой версией перечень расширяется). В поставку системы входят средства кросс-разработки, позволяющие проектировать и создавать ПО для всех поддерживаемых платформ. Начиная с версии 6.2, QNX будет поставляться с набором установочных файлов для карманных компьютеров iPAQ на базе процессора StrongARM.

Система прекрасно работает в многопроцессорных SMP-архитектурах, при этом, что не всегда характерно для SMP, с увеличением количества процессоров в системе наблюдается рост производительности, близкий к линейному (следствие высокой "гранулярности" потоков).

Вместе с системой поставляется достаточно гибкая интегрированная среда разработки (генератор) приложений C/C++ Photon Application Builder (PhAB). PhAB позволяет визуально проектировать GUI-приложения и предлагает множество механизмов связывания событий GUI с программным кодом. Программист с достаточным опытом сможет создавать полноценные приложения фактически после 3--4-х часов знакомства со средой.


И недостатки

Поклонникам всегда нелегко критиковать своих кумиров, поэтому мы и в этом разделе -- да простят нас читатели -- будем не столько акцентировать внимание на недочетах, сколько искать им оправдание или "обходные маневры".

Бытует мнение, что для QNX предлагается мало программного обеспечения. Прежде это действительно имело место, поскольку ОС развивалась достаточно "автономно". Однако в QNX 6, как уже говорилось, многократно упрощен перенос ПО из Unix. Сегодня доступны:
  • средства разработки практически для все языков от ассемблера до Java и Tcl/Tk, в том числе встроенный генератор приложений Photon Application Builder и CodeForge. С версии 6.2 начнет поставляться Eclipse IDE с расширениями C/C++;
  • текстовые редакторы и процессоры: весь набор традиционных Unix-программ и даже популярный AbiWord;
  • СУБД: IBM DB2, Berkeley DB, MySQL, PostgreSQL, Linter, Empress;
  • сетевые средства: NFS, SMB, Squid, а также большинство сервисов, агентов и клиентов из мира Unix;
  • Web-броузеры: Voyager (встроенный), Opera, Mozilla, вся линейка консольных броузеров Unix.
Еще одно часто высказываемое опасение: "по QNX слишком мало литературы". Однако состояние дел не столь безнадежное и, более того, постепенно улучшается. Прежде всего, в составе QNX есть неплохая справочная система по настройке ОС и API разработчика. Большое количество справочных и информационных материалов находится на сайтах QSS (www.qnx.com и support. qnx.com), по адресу qdn.qnx.com/support/bok/ располагается довольно обширная база знаний, а на Usenet-сервере inn.qnx.com функционирует несколько десятков телеконференций, в которых общаются тысячи пользователей и разработчиков. Также по QNX существует несколько книг, написанных ее создателями, одна из них недавно переведена на русский язык.

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

Спектр поддерживаемого оборудования пока существенно уже, чем, скажем, у Windows или Linux. При использовании относительно стандартного (не супернового) аппаратного обеспечения проблем, скорее всего, не возникнет. В "экзотических" случаях (аппаратный RAID или изощренная сетевая плата) -- увы. Тем более что если уж QNX не хочет на "этом" работать, то переубедить ее вряд ли удастся. Но, несмотря на такую капризность, QNX, например, может использоваться даже в "наладонниках" iPAQ.

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


В завершение

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

Подробнее ознакомиться с операционной системой QNX можно на некоммерческом сайте русскоязычных пользователей "QNX Realtime Platform: Русский Портал" (qnx.org.ru), основанном в 2000 г. одновременно с выходом первой версии QNX 6. Здесь собрано большое количество русскоязычной документации, работают FTP-архив, новостная рассылка, форумы.

E-mail Олега Цилюрика: [email protected];
e-mail Дмитрия Алексеева: [email protected]