QNX::Журнал СА 2.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9885
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8098
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8198
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5194
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5872
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 QNX

Архив номеров / 2004 / Выпуск №2 (15) / QNX

Рубрика: Администрирование /  Продукты и решения

АЛЕКСАНДР БАЙРАК

QNX

В этой статье я хотел бы вам рассказать об одной очень интересной операционной системе – QNX. Разработка QNX началась около 20 лет назад. Изначально QSSL (фирма разработчик QNX) решили назвать свою систему Qunix (Быстрый юникс), но господа из AT&T (Которые на тот момент владели торговой маркой UNIX) вежливо попросили их сменить название, что ребята из QSSL и сделали, назвав свою операционную систему QNX. QNX с самого начала развития задумывался как легко масштабируемая, сетевая и встраиваемая ОС  (т.е. система работающая в автономном режиме, и не требующая администрирования).  В настоящее время она находит применение в наиболее критичных областях нашей жизни. На ее базе работают системы для управления оборудованием на крупных предприятиях, ей доверяют управление бортовыми системами летательных аппаратов и системами жизнеобеспечения в крупных госпиталях, QNX применяется даже для управления ядерными реакторами. Используют QNX и для более «земных» задач, например, она живет в некоторых особенно продвинутых стиральных машинах и другой бытовой технике. Чем она еще знаменита, я думаю, вы догадываетесь – QNX  является самой известной операционной системой реального времени (ОСРВ).

Все операционные системы можно разделить на 2 категории: ОС общего назначения, для которых главной задачей является эффективное распределение и использование ресурсов компьютера, и на ОС реального времени, для которых задачей номер один является своевременная обработка запроса, а все остальное как бы отходит на второй план. В свою очередь ОСРВ также делятся на два типа – мягкого и жесткого реального времени. Между собой они главный образом отличаются тем, что ОС жесткого реального времени гарантирует выполнение всех положенных ей действий за строго определенный промежуток времени, в свое время мягкие ОСРВ в большинстве случаев, конечно, успевают сделать все им предписанное, однако ничего не гарантируют. QNX – это операционная система жесткого реального времени. Вы удивитесь, но и само семейство ОС QNX тоже следует разделить на два вида дистрибутивов. QNX может поставляться как встроенная система и как среда разработчика. К примеру, купили вы новомодную стиральную машину, а за процессом стирки в ней зорко наблюдает QNX (как встроенная система), теперь можете считать себя счастливым обладателем этой ОС (и даже ее пользователем) . Но кроме как радоваться ее безупречной работе, вам больше ничего не остается, потому как вся настройка, отладка, компоновка производится в другом виде дистрибутивов – комплекте разработчика. Надо заметить, что если вы установили на свой компьютер среду разработчика, никто вас не заставляет использовать ее по прямому назначению, такой вид дистрибутивов можно использовать и как desktop-систему. Смею вас заверить, это намного реальнее, чем кажется на первый взгляд. Встраиваемые версии QNX сейчас работают на следующих платформах: ARM, StrongARM, MIPS32, PowerPC, x86, SH4 и Xscale. А комплекты разработчика на x86 и на SPARC. Эту «двоякость» QNX очень важно уяснить.

Рассмотрим дистрибутивы разработчика. QNX6 разрабатывалась как POSIX-совместимая OCPB. Следует также заметить, что она достаточно хорошо заточена под программы, которые написаны для ОС Linux. Только бери исходники и компилируй, иногда все компилируется вообще без единной правки. Тут надо отметить, что официальный компилятор под QNX4 и более ранних версий был Watcom C++, но с 6 версии им является GNU C. Компания QSSL, выпуская на рынок QNX6, сделала два варианта дистрибутива:

  • QNX RTP (Real Time Platform) – бесплатная среда разработки для некоммерческого использования. С возможностью (в случае начала коммерческих разработок) приобретения у разработчиков лицензии.
  • QNX NIP (Networking Infrastructure Platform) – коммерческий дистрибутив, по сути тот же QNX RTP, но с дополнением в виде возможностей, которые оценили по достоинству производители оборудования для сетей.

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

  • Non commercial edition (NC) – дистрибутив, предназначенный для ознакомления с этой системой. Абсолютно бесплатен для некоммерческого использования.
  • Standard Edition (SE) – в состав этого дистрибутива входят средства, с помощью которых вы можете вести коммерческую разработку разного ПО и собственных вариантов систем.
  • Professional Edition (PE) – дистрибутив по сути своей является сильно «распухшей» версией SE.

На самом деле есть еще один вариант дистрибутива этой системы, на сайте QNX (www.qnx.com) вы можете списать вариант системы, умещающийся на одну дискету. Очень рекомендую вам это сделать. Ведь сейчас от однодискетной системы не ожидают ничего, кроме как очередного дистрибутива Linux с функциями роутера/фаервола. А тут такое… полностью работоспособная ОСРВ, построенная на микроядре (как и старшие братья), урезанный GUI, и даже браузер графический есть. Работать будет на любой 386 с 8 Мб RAM.

Несмотря на все новшества шестой версии, в нашей стране наибольшее распространение получила QNX четвертой версии. Сейчас как таковая разработка четвертой версии завершена, последняя версия (4.25 patch G) вышла в самом начале 2003 года. Но несмотря на все преимущества новых разработок, я не думаю, что шестая версия в обозримом будущем полностью выживет четвертую с рынка. Никто не будет менять системы, которые годами работали без сбоев и нареканий только потому, что есть более новая версия. А в некоторых местах нет такой возможности что-либо менять, т.к. простой системы либо абсолютно невозможен, либо приведет к очень большим убыткам. Тут еще стоит вспомнить о тех устройствах, на которых в принципе невозможно поменять ОС, потому как она вшита в ПЗУ. До появления четвертой версии в ходу была вторая версия QNX, не получившая сколько-нибудь значительного распространения на просторах России. Работала эта система на компьютерах с 286 процессорами. Кстати, надо заметить, что бинарной совместимости между различными версиями нет, т.е. то, что работало под QNX4 на QNX6 вам не запустить (отсюда и еще одна причина, почему QNX4 не спешат полностью менять на QNX6). Подобные неудобства можно объяснить только тем, что системы такого уровня очень глубоко «привязываются» к особенностям той или иной платформы. Недавно я узнал еще одну интересную подробность: оказывается, до 1991 г. система вообще значилась как стратегический ресурс, и строго настрого было запрещено вывозить ее за пределы Северной Америки.

Вернемся к более подробному рассмотрению этой ОС.

В двух словах об установке

Установить систему разработчика QNX можно на SPARC, и под управление ОС Solaris (к сожалению, поработать с QNX на SPARC мне пока не удалось, так что какими-либо впечатлениями делиться не буду, а просто упомяну о такой возможности). Также QNX можно поставить на компьютер с x86 архитектурой. Либо под управлением Windows, либо непосредственно под QNX, в скором времени появится версия и под Linux. Но вы можете поставить ее и на FAT32. Скажу больше, если у вас Windows 98, и вы решите поставить QNX на раздел FAT32, то QNX будет работать прямо под Windows 98, в отдельном окошке. Что-то вроде виртуальной машины получается. Если же у вас W2K/XP и вы решите поставить QNX на уже существующий раздел FAT32, то заодно готовьте дискету, потому как именно с нее вам нужно будет грузиться, в то время как все данные будут располагаться на вашем жестком диске. При установке в раздел FAT32 системе потребуется как минимум 500 Мб свободного места. Так как на своей домашней машине чуда программистской мысли от MS не держу, я устанавливал QNX на отдельный раздел. Даже если у вас есть раздел FAT32, рекомендую не поддаваться на соблазн поставить систему на него, а сделать отдельный раздел и ставить QNX туда. На сайте разработчика минимальные системные требования для QNX PE составили P3-650 МГц /256 Мб RAM/1.5 Гб. Все, конечно, может быть, с версией PE я не работал (она, насколько вы помните, коммерческая). Но за время работы с версией NC, как на Cel366 МГц /256 Мб RAM, так и на P3-550 МГц /256 Мб RAM, каких-либо тормозов замечено не было. Кстати, прежде чем ставить систему, желательно ознакомиться со списком поддерживаемого оборудования на http://www.qnx.com/support/sd_hardware, но не стоит расстраиваться, если среди списков железа вы не обнаружите чего-либо установленного у вас в компьютере, в действительности список намного шире, просто пока тестеры из QSSL самолично какую-нибудь железяку не проверят всеми доступными способами, в список ее не включат. Процесс установки системы очень прост, никаких подводных камней и трудностей я не встретил, так что останавливаться и подробно описывать его мы не будем, там действительно все предельно просто. Стандартный для QNX графический интерфейс Photon, который встречает пользователя сразу после загрузки системы, интуитивно понятен, так что тратить время на его описание смысла я не вижу. В качестве стандартного командного интерпретатора используется ksh, но, конечно, никто не запрещает поставить, например, bash или csh. Исходя из этого становится ясно, что с работой в консоле QNX любой юниксоид освоится за несколько минут. Большинство команд также уже знакомо всем приверженцам UNIX-систем, все те же mv, pwd, rm, ну и так далее. Единственное, что хотелось бы отметить, вместо архиважной команды man используется команда use, ну а суть ее та же.

Ядро QNX

Во всех ОС, которые мне встречались, ядра системы были так нагружены, что они уже сами по себе начинали смахивать на операционные системы (сколько нынче ядро пингвиненка весит?). Скажу сразу, ядро QNX весит от 8 до 32 Кб. Удивлены? Такой малый размер достигается за счет того, что, во-первых, ядро полностью написано на ассемблере, и во-вторых (самое главное), ядро QNX исполняет всего 2 задачи: передачу сообщений и планирование. Все. Причем удивительно, но факт – само ядро не планируется, а взаимодействие с ним осуществляется с помощью процессов (надо заметить, с одинаковыми правами). Часть ядра, отвечающая за планировку, «вступает в игру», после того как некий процесс меняет свое состояние в результате появления сообщения, адресованного ему, или прерывания.

В отличие от процессов само ядро никогда не планируется к выполнению. Управление передается ядру только в результате прямого вызова ядра из процесса или по аппаратному прерыванию. Что касаемо передачи сообщений – ядро QNX реализует передачу любых сообщений между абсолютно всеми процессами в системе. Сообщение представляет собой обычный пакет данных размером до 64 Kб, который передается ядром от одного процесса в другой. Ядро никогда не изменяет содержимое сообщения, оно просто передает данные из адресного пространства одного процесса в адресное пространство другого процесса и как бы замораживает процесс-«отправитель» до тех пор, пока «получатель» не ответит на посланное ему сообщение.

Схематично изобразить взаимодействие ядра с процессами можно так:

Рисунок 1

Все функции реализуются только этими системными процессами. Эти процессы ничем не отличаются от других обычных процессов, и именно это обеспечивает QNX легкую расширяемость. Процесс dev отвечает за администрирование различных устройств, proc – за администрирование процессов, fsys – администрирование файловой системы, net отвечает за сеть.

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

Все данные в операционной системе хранятся в виде файлов. Ну а файлы – это в свою очередь набор байтов, имеющих общие атрибуты (имя, GID, UID, тип файла, метки времени). QNX обеспечивает поддержку следующих типов файлов: обычные файлы, каталоги, жесткие ссылки, мягкие ссылки, FIFO (именованные программные каналы), блок-ориентированные специальные файлы, байт-ориентированные специальные файлы, и именованные специальные устройства. Вкратце я расскажу о них.

  • Обычные файлы – последовательность байт, не имеющих предопределенной структуры. За интерпретацию данных из обычных файлов отвечают разные приложения.
  • Каталоги – это те же самые обычные файлы, но они имеют определенную структуру. Структура эта представляет собой набор записей, которые называются элементами каталога.
  • Жесткие ссылки – если нам нужно обращаться к одному и тому же файлу, по нескольким именам, и из разных мест, нам на помощь приходит как раз такой вид файлов, как жесткие ссылки. Т.е. сама по себе жесткая ссылка является указателем на другой файл.
  • Мягкие ссылки – почти то же самое, что и жесткие ссылки, разница в том, что, используя мягкие ссылки, вы можете делать ссылки на файлы, которые находятся за пределами файловой системы, на которой находится исходный файл (на который делается ссылка). Вообще мягкую ссылку можно представить как некий текстовый файл, в котором содержится имя другого файла, к которому перенаправляются все запросы.
  • FIFO по сути является механизмом взаимодействия между несколькими процессами – один процесс пишет в программный канал, а другой читает оттуда. Сразу становится ясным, что FIFO не очень быстрый способ для межзадачного взаимодействия.
  • Блок-ориентированные специальные файлы – файлы, которые существуют для изоляции приложений от физических характеристик аппаратуры. Обмен данными осуществляется в блоках. Важной особенностью таких файлов является то, что в QNX они создаются не на диске, а в оперативной памяти. Создаются они соответственно при запуске конкретных драйверов. Примером устройства для которых создаются такого рода файлы, является HDD.
  • Байт-ориентированные специальные файлы – этот тип файлов очень похож на блок-ориентированные специальные файлы, но разница в том, что байт-ориентированные обеспечивают интерфейс к аппаратуре, и обмен данными осуществляется побайтовый. Примером устройства, для которых создаются такие файлы, является сетевая карта, com-порт. Такие файлы также создаются при запуске соответствующего драйвера.
  • Именованные специальные устройства – самый интересный тип файлов, байт и блок, ориентированные файлы достаточно универсальны, и как следствие их можно использовать не только для обмена данными с драйверами устройств, но и для взаимодействия с другими программами. В этих случаях приложения, делающие специальные файлы, будут выглядеть как программные устройства. Яркий пример такого вида файлов в QNX – это /dev/photon.

Как я уже упоминал ранее, файловой системой QNX управляет процесс fsys. Он отвечает за обработку всякого рода запросов к файлам (чтение, запись, открытие, закрытие). Доступ к файлам принципиально не отличается от того метода, который используется в других Unix-подобных системах. Выше я упомянул, что QNX разрабатывалась как POSIX-совместимая система. Файловая система QNX очень интересно построена, при записи каких-либо данных, критически важных для системы, файлы записываются немедленно, а некритические сначала помещаются в специальный буфер и только потом уже записываются. Хотя при таком раскладе и возникает некоторая задержка, но уловить ее практически невозможно.

В каждом разделе QNX есть:

  • Блок загрузчика – им является первый физический либо блок, либо раздел HDD, в котором и располагается IPL – начальный загрузчик, который и считывает BIOS.
  • Корневой блок – в нем лежит информация об очень важных четырех системных файлах: / (корневой каталог); /.inodes; /.boot; /.altboot.
  • Битовая карта – на диске представлена файлом /.bitmap, который содержит все блоки диска, каждый из которых представлен битом. Если бит равен 1, значит блок уже занят, если 0, значит блок свободен.
  • Корневой каталог – по сути своей обычный каталог, только за тем исключением, что жесткие ссылки «.» и «..» являются ссылками на этот же самый корневой каталог.

QNX может работать с достаточно большим количеством разный файловых систем, среди которых: FAT12, FAT16, FAT32, NFS, ISO9660, EXT2, NFS.

QNX и сеть

Я уже упомянул, что QNX разрабатывалась как сетевая операционная система. В QNX есть своя «родная» сеть – qnet. У каждого компьютера в сети под управлением QNX есть свой id. Собственно говоря, именно этот id и позволяет узнать, работает QNX как сеть или же просто как обычная система. Этим занимается один из упомянутых выше системных процессов – net. Сетевое взаимодействие в подобных сетях абсолютно прозрачное благодаря способности QNX осуществлять обмен сообщениями между микроядрами систем через сеть. «А как отличить сетевое сообщение от локального?» – спросите вы. Есть пространство имен путей администратора всех процессов. Так что при загрузке администратор (роль которого выполняет разделяемая библиотека npm-qnet.so (каждый интерфейс протокола поставляется в виде разделяемой библиотеки, например, npm-qnet.so, протокол QNET, также известный как Native Neurino Networking)) регистрирует символьное имя /dev/io-net/qnet0, а также каталог /net, в который впоследствии помещаются файлы с именами хостов в нашей сети, к которым можно получить доступ.

Помимо прозрачности в вопросе доступа к файлам на разных хостах, qnet позволяет запускать всякого рода задачи на любом из доступны хостов сети. Т.е. у нас получается как бы виртуальный суперкомпьютер. И все бы хорошо, но есть и один очень большой недостаток этой сети – безопасность. В принципе каждый хост может делать все, что ему заблагорассудится, с другим хостом в сети. Поддержка TCP/IP-стека в QNX во многом позаимствована из NetBSD v1.5. Поддержка стека протоколов TCP/IP в QNX обеспечивается средствами трех модулей (npm-ttcpip.so, npm-tcpip-v4.so npm-tcpip-v6.so), которые загружаются процессом net, который, как я уже упоминал, отвечает за поддержание работы сети. Тут не обойден вниманием аспект безопасности – пакетную фильтрацию и трансляцию адресов осуществляет портированный в QNX IP Filter (версии 3.2.37).

Вот и подошла к концу статья, посвященная QNX. Информации для размышления, я думаю, было получено достаточно. Для особо заинтересовавшихся – в рунете очень немного информации по QNX, единственный более-менее интересный сайт, посвященный этой системе – www.qnx.org.ru. А вот в бумажном виде мне вообще ни одной книги, к сожалению, не попадалось. Если читателям эта тема покажется интересной, я могу еще много занятного рассказать об этой операционной системе, так что жду ваших отзывов.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru