Название операционной системы QNX слышали многие. У одних оно прочно ассоциируется с демонстрационной дискетой, на которой, кроме ядра системы, умещались графический пользовательский интерфейс и веб-браузер. У других — со сложными системами управления промышленным и медицинским оборудованием, мобильными системами, сетевыми маршрутизаторами и сотовыми телефонами.
Если еще немного порыться в памяти, то можно вспомнить еще и такие факты:

  • QNX — ОС «жесткого» реального времени;
  • QNX — «встраиваемая», но при этом гибко масштабируемая система;
  • QNX применяется в наиболее критичных областях (т.н. «Mission Critical Appliances»). На ее базе строятся высоконадежные системы для управления промышленным и медицинским оборудованием, бортовыми системами, сетевыми маршрутизаторами и даже ядерными реакторами;
  • QNX существует и развивается уже более 20 лет;
  • QNX — довольно дорогая операционная система, дороже большинства коммерческих разработок Microsoft, Sun и других фирм.

Все! На этом воспоминания (а, дойдя до последней позиции, и интерес) обычно заканчиваются.

 

QNX сегодня


Знакомимся с текущим состоянием дел…И здесь начинаются сюрпризы:


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


С выпуском Realtime Platform в QNX Software Systems Ltd изменяется и характер разработок. Если раньше все усилия были направлены на развитие ядра системы, а проработке графического интерфейса уделялось не слишком много внимания, то теперь (за счет увеличения штата разработчиков практически вдвое!) ничто не забыто. Начиная с прошлого года система развивается более равномерно.


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


Основным компилятором QNX стал GСC. Это компилятор C/C++ с открытым исходным кодом, являющийся абсолютным стандартом для всех UNIX-подобных систем. Да и вообще, сейчас сложно найти систему, в которую не был бы перенесен GCC. Старый компилятор, Watcom, отложен в сторону до лучших времен. Посмотрим, что вытекает из этого существенного технического нюанса:

  • POSIX-совместимость программного API. QNX никогда в этом не нуждалась, т.к. всегда и везде «шла своим путем», но в этом остро нуждались разработчики. Совместимость! Ведь это означает, что в QNX может быть перенесен любой программный продукт с открытым исходным кодом.
  • Открытость. Исходный код самого компилятора и, согласно GNU лицензии, код библиотеки libc, являются открытыми.
  • QSSL стремится максимально использовать импульс, получаемый благодаря развитию продуктов Open Source и, в частности, благодаря бурному, не имеющему прецедентов в истории UNIX-систем развитию Linux;
  • Как следствие унификации API, почти все богатство общесистемного и прикладного программного обеспечения для Linux/xBSD/Solaris легко переносится в QNX, часто вообще без изменения кода, причем зачастую в течение считанных часов.

К моменту, когда выясняются все эти нюансы, ситуация становится начинает задевать за живое.

 

Опыт «общения» с QNX


По прошествии довольно длительного периода «плотной» работы с системой хотелось бы кратко подытожить те положительные и отрицательные особенности QNX, которые проявились за это время.


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

 


Плюсы


В основе операционной системы QNX лежат принципы микроядра и межпроцессного обмена сообщениями — одна из хорошо проработанных линий в теоретической науке о построении операционных систем. Это приятно отличает QNX от систем, построенных на базе макроядра (Windows 95/98, Linux, да и слухи о «микроядерности» Windows NT/2000/XP, мягко говоря, сильно преувеличены).


Почему приятно? Потому, что система, базирующаяся на хорошо проработанной теории, предсказуема! У нее могут быть свои сильные и слабые стороны, но всегда заранее известно, когда они проявятся. (Информация к размышлению: за более чем год разработки ПО на C++ в операционной системе QNX по 10-12 часов в сутки система не «зависла» ни единого раза! А ведь работа в таком режиме — это динамическое управление памятью, отображение памяти в файловую систему, работа с сетевыми сокетами и сетевое взаимодействие. С графической подсистемой Photon, действительно, случались «проколы», такие как потеря реакции и др., но с ядром — никогда.)


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


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


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


Что отсюда следует?


Драйверы устройств (и, что особенно важно, псевдоустройств, которые могут быть всем, что угодно, например, оконной подсистемой со своим, специфическим поведением) могут подгружаться и выгружаться динамически сколь угодно много раз, при этом они гарантированно (гарантией служит теория обмена сообщениями) не разрушат работоспособность ядра. Какие ошеломляющие перспективы для разработчика (кто компилировал ядро Linux для того чтобы добавить туда новый драйвер или писал модули ядра — знает…)!


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


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


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


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


Система максимально UNIX-совместима. Это проявляется как внешне — на уровне совместимости командного интерпретатора — так и, в еще большей степени, на уровне программного API. Прежде всего, API совместим с целым рядом стандартов POSIX (общий стандарт POSIX, стандарт POSIX на программные потоки, расширения POSIX реального времени и т.д.). Но и это еще не все. Программный API включает несколько тысяч описанных и, наверное, столько же еще не описанных — система находится в развитии — вызовов. Система API определенно избыточна: здесь и POSIX, и собственные альтернативы QNX, ? стандарты SysV, ? BSD… ? любом случае — это целое дополнительное богатство.


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


Если представить себе некоторую шкалу открытости исходного кода, то на одном ее конце разместится Linux — система с полностью открытым исходным кодом, — а на другом — Windows, которая по степени открытости — настоящий «кот в мешке». QNX же займет некоторое промежуточное положение. Все, что портировано в QNX из Open Source, естественно, открыто. Многие составные части системы либо открыты, либо описаны QSSL в примерах кода (HELP) до уровня полной прозрачности. Более того, на глазах происходит отчетливая миграция системы в сторону открытости: QSSL обещает последовательно открыть почти все составляющие системы, за одним немаловажным исключением: код микроядра управления сообщениями никогда открыт не будет.


Существует мнение, что для QNX предлагается недостаточно программного обеспечения. Действительно, это обстоятельство сильно сказывалось в предыдущей версии, пока QNX развивалась автономно. В QNX 6 очень упрощено портирование из Linux и UNIX. Поэтому количество программ для QNX сильно возросло. Вот только некоторые из них.

  • Языки программирования и среды разработки: C/C++, ассемблер («родные» встроенные средства), Java, Perl, PHP, Python, Tcl/Tk, Rebol, встроенный генератор приложений Photon Application Builder (PhAB), CodeForge и еще три-четыре IDE от сторонних производителей. Ожидается Eclipse IDE с расширениями C/C++.
  • Системы отладки: традиционный для Linux GDB и графический DDD. Кроме этого существует инструментальное ядро и трассировщик системных событий.
  • Текстовые редакторы и процессоры: весь набор традиционных UNIX-редакторов, плюс целый ряд специфических для этой ОС, полностью MSWord-подобный оригинальный текстовый процессор AbiWord.
  • Системы поддержки баз данных: IBM DB2, Berkeley DB, MySQL, Postgres, Linter.
  • WWW-браузеры: Voyager (встроенный), Opera, Mozilla, вся линейка консольных браузеров UNIX.
  • Сетевые средства: NFS, SMB, HTTP (Apache, slinger), FTP (кроме «родного» ott и pureftpd, proftpd), Squid, BIND, IPFilter, все традиционные IP-сервисы UNIX — inetd, telnet, ssh, ppp, snmp-агенты и др.
  • Мультимедийные проигрыватели аудио и видео: RealPlayer, Media Player, PhMAD, XMMS и др.

Еще одно опасение, которое часто высказывается: «о QNX написано слишком мало литературы». Состояние дел не столь критично и, главное, резко улучшается.


Прежде всего, в составе QNX есть превосходный встроенный HELP по вопросам организации системы и API разработчика. Нам редко приходилось видеть (и приходилось ли?) такую полную, подробную и одновременно непротиворечивую HELP-подсистему.


Фирма QSSL предоставляет большое количество справочных и информационных материалов на сайте производителя QNX (
www.qnx.com) и сайте для разработчиков http://support.qnx.com. По адресу http://qdn.qnx.com/book расположена довольно обширная база знаний. На usenet-сервере компании (inn.qnx.com) ведется несколько десятков телеконференций, в которых общаются тысячи пользователей и разработчиков.


Англоязычной литературы по QNX существует достаточно много. Кроме того, в январе 2002 г. в Петербурге фирмой SWD Software выпущен перевод книги Роберта Кертена «Введение ? QNX Neutrino 2» (изд. «Петрополис»).


QNX — исключительно быстрая система (на уровне микроядра), что особенно ощущается в консольном (текстовом) режиме. Оригинальный менеджер графических окон Photon медленнее консоли, но ? он за счет своей крайне интересной идеологии, работает ощутимо быстрее X Window или Win32 GUI.


Система «мирно сосуществует» на диске компьютера практически со всеми ОС (Windows 95/98, Windows NT, Linux с LILO). Один из предлагаемых способов установки — прямо «поверх» FAT32. Ставится QNX (и в файловую систему, и в отдельный раздел диска) полностью автономно, вся установка занимает не более 10 минут (кто ставил Linux в ранних редакциях — сравнит и поймет…).


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


Хотя система иногда и капризничает при установке нового оборудования (о чем подробнее будет рассказано ниже), она вместе с тем крайне нетребовательна к нему. Если инсталлировать на нее чуть ли не все существующее для нее ПО, система занимает на диске 1 Гб или немногим более, а если оставить только достаточно полную рабочую комплектацию, то укладывается в 500-600 Мб. QNX работает практически на всех распространенных процессорных архитектурах (таблица).


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


В QNX существуют специальные средства кросс-разработки и удаленной отладки для Sun Solaris и MS Windows. Для QNX разработана специальная версия Metrowerks CodeWarrior, работающая в системе MS Windows. Систему QNX выбирают для своих разработок и объявили в планах развития такие гиганты как 3Com, CISCO, Motorola, IBM, Sybase.

 

Минусы


А теперь — обещанная ложка дегтя в описанную выше бочку меда.
Существующая на данный момент система локализации (русский язык) сделана отвратительно. Приходится изощряться для каждого случая применения в отдельности. Например, в консоли поддержки русского языка нет совершенно, в приложениях XFree она зачастую нестабильна. Но ведь совсем недавно в подобной ситуации были и пользователи Linux. QSSL обещают исправить дело.


Из-за дефектов локализации использовать для подготовки исходных текстов практически весь спектр UNIX редакторов оказывается проблематично. Но уже на момент написания этой статьи проводилось тестирование нового редактора workspace, написанного Мишелем Беланжером. На самом деле это куда больше, чем просто текстовый редактор. Это полный арсенал разработчика со встроенной поддержкой GDB, Make, Ctags.


Спектр поддерживаемого оборудования пока существенно уже, чем, скажем, у Windows или Linux. Если использовать более или менее стандартизованные модели, то, скорее всего, проблем не возникнет. Но если это какая-то «экзотика» (аппаратный RAID или новая изощренная сетевая плата), то — увы. А если уж QNX не захочет «на этом» работать, то, скорее всего, убедить его не удастся! Но, несмотря на свою аппаратную «капризность», QNX великолепно работает на «наладонниках» iPaq.


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


Заключение


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


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


Приглашаем вас подробнее ознакомиться с операционной системой QNX на сайте ее русскоязычных пользователей «QNX Realtime Platform:: Русский Портал» (http://qnx.org.ru). Этот сайт основан Дмитрием Васильевым и Дмитрием Алексеевым (одним из авторов этой статьи) в 2000 году, одновременно с выходом первой версии QNX 6. На сайте собрано большое количество русскоязычной документации, работает FTP-архив программного обеспечения, новостная рассылка (на которую подписано около двух тысяч человек), форумы для обмена мнениями пользователями и разработчиками, серверы IRC и CVS.

2004.04.15
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".