
1.
Знакомство с QNX Neutrino
Отличия QNX Neutrino от других операционных
систем
В данном разделе описаны
отличия ОСРВ QNX Neutrino от ОС UNIX и Microsoft Windows с
точки зрения пользователя, а не разработчика. Более подробные
сведения об архитектуре ОСРВ QNX Neutrino и философии, лежащей
в ее основе, представлены в документе "Описание применения.
Часть 1. Системная архитектура" КПДА.10964-01 31 01.
UNIX
Если вы знакомы
с UNIX-подобными операционными системами, вам будет очень
легко разобраться в QNX Neutrino. Многие люди даже
произносят аббревиатуру QNX на манер UNIX ("кьюникс"). В основе
рассматриваемой операционной системы лежит микроядро Neutrino,
которое работает в окружении группы процессов (включая,
например, командный интерпретатор Korn Shell ksh,см. раздел 4).
Каждый процесс имеет свой идентификатор (process ID,
PID) и содержит в себе один или несколько потоков.
Примечание. Определить версию релиза
ядра вашей системы вы можете с помощью команды uname -a. Подробнее
см. в «Описание программы. Часть 1. Справочник по
утилитам» КПДА.10964-01 13 01.
ОСРВQNX Neutrino — это
многопользовательская ОС, т. е. она одновременно
поддерживает любое количество пользователей. Пользователи
организуются в группы, каждая из которых имеет свой набор
разрешений на доступ к файлам и каталогам (более подробные
сведения см. в разделе 3).
ОСРВ QNX Neutrino
соответствует различным промышленным стандартам, в том числе
POSIX (командный интерпретатор и утилиты) и TCP/IP, что
облегчает задачу переноса существующего кода и скриптов в
QNX Neutrino.
Командная строка в ОСРВ QNX
Neutrino выглядит так же, как и в UNIX. Поддерживаются
многие привычные утилиты (grep, find, ls, awk),
которые можно объединять при помощи неименованных
программных каналов
(pipe). Также возможно перенаправлять потоки ввода и
вывода, проверять коды возврата
и т. д. Многие утилиты повторяются в UNIX и ОСРВ
QNX Neutrino, однако некоторые утилиты в QNX Neutrino
имеют другое имя или синтаксис (табл. 1.1).
Таблица 1.1
|
UNIX
|
Neutrino
|
См. также
|
adduser
|
passwd
|
3. Управление
учетными записями пользователей
|
at
|
cron
|
Описание
программы (КПДА.10964-01 13)
|
dmesg
|
slogger,
sloginfo
|
Описание
программы (КПДА.10964-01 13)
|
fsck
|
chkfsys, chkdosfs
|
18. Резервное
копирование и восстановление данных
|
ifconfig eth0
|
ifconfig en0
|
13. Сеть TCP/IP
|
lp
|
lpr
|
14. Печать
|
lpc
|
lprc
|
14. Печать
|
lpq, lpstat
|
lprq
|
14. Печать
|
lprm, cancel
|
lprrm
|
14. Печать
|
man
|
use
|
4. Командная строка
|
pg
|
less, more
|
4. Командная строка
|
Подробное описание каждой
команды можно найти в «Описании программы. Часть
1. Справочник по утилитам» КПДА.10964-01 13 01.
Microsoft Windows
ОСРВ QNX
Neutrino и ОС Windows имеют разные архитектуры, однако, с
точки зрения пользователя, основное различие между ними
заключается в способе запуска программ. Многое из того, что
пользователь Windows делает посредством графического
пользовательского интерфейса (Graphical User Interface,
GUI), пользователь QNX Neutrino выполняет с помощью утилит
командной строки, конфигурационных файлов и скриптов. Тем не
менее, в ОСРВ QNX Neutrino реализована мощная
интегрированная среда разработки (Integrated Development
Environment, IDE), которая позволяет создавать, тестировать
и отлаживать программы и встраиваемые системы.
Приведем еще несколько
основных отличий.
-
В QNX Neutrino и DOS применяются разные символы
конца строки: в QNX Neutrino используется символ
перехода на новую строку, а в DOS — символ возврата
каретки и символ перевода строки. Если необходимо
перенести текстовый файл из одной ОС в другую, вы можете
воспользоваться утилитой textto
для конвертирования файла. Например, для того чтобы
конвертировать символы конца строки в формат QNX
Neutrino, введите следующую команду:
textto -l my_file
Для того чтобы
конвертировать символы конца строки в формат DOS, введите
команду:
textto -l my_file
-
В QNX Neutrino используется
прямой слэш (/) вместо обратного
слэша (\) в качестве разделителя в именах путей.
-
В QNX Neutrino нельзя использовать DOS-команды,
однако вместо них существует множество эквивалентов.
Более подробные сведения см. в подразд. "QNX
Neutrino для пользователей MS-DOS" раздела 4.
Ограничения
Хотя ОСРВ QNX
Neutrino вполне может служить в качестве настольной ОС,
компания QNX Software Systems не поставляет с ней настольные
приложения, вроде текстовых редакторов, электронных таблиц
или почтовых клиентов. Некоторые приложения такого рода
предлагаются третьими сторонами (в том числе их можно найти
на веб-сайте сообщества Foundry 27, http://community.qnx.com).
В чем
уникальность QNX Neutrino?
ОСРВ QNX Neutrino состоит из микроядра и различных процессов.
Каждый процесс, в том числе драйверы устройств, выполняется в
своем собственном виртуальном пространстве памяти
(рис. 1.1).
Рис. 1.1. Архитектура ОСРВ QNX Neutrino
Преимущество
использования виртуальной памяти в том, что один процесс не
может повредить адресное пространство другого процесса.
(Более подробные сведения можно найти в главе 1
документа "Описание применения. Часть 1. Системная
архитектура" КПДА.10964-01 31 01).
Главной особенностью ОСРВ
QNX Neutrino является ее микроядерная архитектура, вокруг
которой строится инфраструктура администраторов ресурсов (см.
далее). Драйверы имеют точно такой же статус, как и
другие пользовательские приложения, поэтому их отладку можно
выполнять с помощью тех же высокоуровневых инструментов IDE,
которые используют исходный текст (source-aware) и точки
останова (breakpointing) и которые обычно применяются для
отладки пользовательских приложений.
Это также означает, что:
-
процесс отладки драйвера не затрагивает ядро;
-
сбой драйвера не приведет к сбою всей ОС;
-
останавливать и перезапускать драйвер, как
правило, можно без перезапуска системы.
Чтобы убрать
обработчики прерываний (которые, как правило, представляют
собой наиболее сложные участки кода), разработчики обычно
могут переместить код, предназначенный для взаимодействия с
оборудованием, на уровень потока приложения. Это большие
преимущества по отладке, которые снимают все возможные
ограничения. Из этого видно, что ОСРВ QNX Neutrino имеет
огромные преимущества относительно монолитных систем.
Более того, благодаря
модульности ОСРВ QNX Neutrino, в реализованную систему можно
включать избыточные компоненты в виде простого, но весьма
эффективного администратора высокой готовности (High
Availability (HA) manager), который, в отличие от более
монолитных архитектур, значительно упрощает создание систем
высокой степени отказоустойчивости. Конечно, простота, с
которой рабочие устройства могут быть отображены в
пространство путевых имен POSIX, также является
привлекательным преимуществом ОСРВ QNX Neutrino.
С точки зрения
разработчиков, системных администраторов, пользователей,
ценные качества ОСРВ QNX Neutrino состоят и в том, что она
основана на стандарте POSIX, обеспечивает высокую скорость
отклика в реальном времени (благодаря возможности
ограничения максимального объема нереентерабельного кода) и
имеет отказоустойчивое микроядро.
Предупреждение.
Некоторые системы x86 могут
функционировать в режиме SMM (System
Management Mode, режим управления системой), при котором BIOS устанавливает особый код,
выполняющийся при возникновении SMI (System
Management Interrupt, прерывание управления системой).
Прерывания SMI могут быть сгенерированы материнской платой
или периферийным оборудованием и не может маскироваться
операционной системой. При входе в режим SMM
обычные действия — включая ОС — приостанавливаются, и
обработчик SMI выполняется с
высоким приоритетом. Избегайте использования систем, в
которых SMM не может быть отключен, поскольку этот режим
может негативно отразится на характеристиках реального
времени QNX Neutrino. Операционная система не может ни
повлиять на задержки, вносимые SMM, ни даже определить факт
перехода системы в SMM.
Микроядерная архитектура
ОСРВ QNX Neutrino позволяет масштабировать программный код в
соответствии с требованиями очень компактных встраиваемых
систем с минимальными ресурсами, и в то же время ОСРВ QNX
Neutrino является достаточно мощной, чтобы работать в
качестве настольной ОС. ОСРВ QNX Neutrino поддерживает
различные аппаратные платформы, в том числе x86,
ARM, MIPS, PPC и SH-4, а также позволяет реализовывать
симметричную многопроцессорность (symmetric multiprocessing,
SMP) и многопроцессорность с привязкой (bound
multiprocessing, BMP) на многоядерных системах с количеством
процессоров до 32.
Кроме того, в ОСРВ QNX
Neutrino применяется сетевой протокол Qnet, который
обеспечивает прозрачную распределенную обработку по сети,
т. е. возможность доступа со своей машины к файлам и
процессам на любой другой машине, находящейся в сети.
Администраторы ресурсов
Администратор ресурсов (resource
manager) — это серверная программа, которая принимает
сообщения от других программ и может взаимодействовать с
оборудованием. Все драйверы устройств и файловые системы в
ОСРВ QNX Neutrino реализуются как администраторы ресурсов.
Администраторы ресурсов
служат для обеспечения интерфейса с различными типами
устройств. В их число могут входить как физические
устройства (например, последовательные порты, параллельные
порты, сетевые карты, диски), так и виртуальные (например, /dev/null, сетевая
файловая система, псевдотерминалы).
Взаимодействие между
администратором ресурса и клиентской программой,
использующей данный ресурс, осуществляется посредством
гибкого механизма пространства путевых имен
(pathname-space mapping). Этот механизм служит для
ассоциирования путевых имен с администратором ресурсов. Для
этого администратор ресурсов уведомляет администратор
процессов (process manager) о том, что он будет отвечать за
обработку запросов к заданной точке монтирования (или ниже
нее в случае файловых систем). Таким образом, администратор
процессов устанавливает связь между службами (т. е.
функциями, предоставляемыми администраторами ресурсов) и
именами путей.
Как только администратор
ресурсов установил свой префикс путевого имени, он начинает
получать сообщения при каждой попытке клиентской программы
сделать по этому путевому имени вызов open(), read(),
write() и т. д.
Более подробные сведения см.
в главе 8 руководства "Описание применения. Часть 1.
Системная архитектура" КПДА.10964-01 31 01.