Основное предназначение любой операционной системы - это рациональное управление ресурсами компьютера во время его работы. Все действия операционной системы по обеспечению успешного диалога с пользователем или пользователями сводятся к следующим простым действиям - управлению выполнением программ и работой служб, записи и чтению файлов с диска, обмену информацией по сети. Причем, все эти простые действия должны выполняться слаженно и не создавать конфликтных ситуаций при работе системы.
Основную сложность составляет работа с приложениями реального времени - они требуют работы операционной системы по управлению событиями и распределению ресурсов в реальном масштабе времени. Как было сказано в предыдущей статье, ОС QNX была разработана для работы с приложениями реального времени, там же мы перечислили основные особенности строения ОС QNX, сейчас мы рассмотрим подробнее те из них, которые составляют "философию" работы системы.
Архитектура микроядра
ОС QNX состоит из небольшого ядра, представляющего собой группу взаимодействующих процессов. Причем, как видно из иллюстрации, структура ядра не иерархична, а, скорее, похожа на команду из нескольких игроков одного уровня, взаимодействующих между собой и их центром.
Истинное ядро. Как известно, ядро - это сердце любой операционной системы. В некоторых ОС ядро велико и громоздко и содержит в себе очень большое количество функций, которые могли бы находиться и на "верхних уровнях" системы, Что влечет за собой нерациональное использование ресурсов системы.
Но, в отличие от систем с таким исполнением ядра, микроядро ОС QNX - это истинное ядро. Во-первых, как и любое ядро операционной системы, предназначенной для работы во встраиваемом варианте - ядро QNX очень мало в размерах. Во-вторых, микроядро содержит только две основные функции:
- Управление прохождением сообщений - микроядро управляет прохождением всех сообщений между процессами;
- Управление выполнением запущенных процессов (диспетчеризация процессов) - диспетчер - это часть самого микроядра, и он запускается всякий раз, когда какой-либо процесс изменил свое состояние в результате получения сообщения или в результате выполнения аппаратного прерывания.
При обычных условиях ядро недоступно - оно защищено несколькими слоями защиты. Оно становится доступно только по прямому вызову из какого-либо системного процесса или аппаратного прерывания.
Системные процессы. Все службы QNX, исключая внутренние службы самого ядра, управляются стандартными (системными) процессами. Типичная конфигурация QNX включает в себя следующие системные процессы:
- Менеджер процессов (Proc);
- Менеджер файловой системы (Fsys);
- Менеджер устройств (Dev);
- Менеджер сети (Net).
Системные процессы и процессы пользователя. Системные процессы практически ничем не отличаются от процессов пользователя, они не имеют ни скрытых, ни так называемых "частных" интерфейсов, но все же одно различие существует - системные процессы недоступны для прямого вызова из пользовательских процессов или прикладных программ.
Такая особенность ОС QNX предоставляет широкие возможности параллельного расширения работы системы. К примеру, для создания нового процесса в QNX пользователю необходимо всего лишь написать соответствующую программу и запустить ее.
При различных вариантах запуска исполняемой программы в ОС QNX, она может быть представлена как системный процесс или как внешний процесс пользователя.
Драйверы устройств. Драйверы устройств в QNX - это один из видов системных процессов, или, точнее было бы сказать, служб, которые избавляют операционную систему от необходимости работать со всеми теми особенностями, которые необходимы для устойчивой работы специфического оборудования.
Запуск драйвера в QNX сродни обычному запуску исполняемой программы, т.е. первый запуск драйвера ничем не отличается от запуска любой другой программы. Но после первого запуска драйвер присоединяется к системе, т.е. ассоциируется с наиболее близким системным процессом в виде его расширения или дополнения и больше не требует никакой настройки. При добавлении нового драйвера в системе не может произойти никаких побочных эффектов в виде, например, конфликта с другими устройствами.
Однажды подключившись к системе, драйвер может принимать следующий вид:
- Исчезнуть, как процесс, но сохранить все расширения, которые им были проведены на системном процессе, с которым он был ассоциирован;
- Сохранить свою индивидуальность как процесса.
Межпроцессорный обмен информацией
При одновременной работе нескольких процессов, как в типичной многозадачной системе реального времени, операционная система должна обеспечить устойчивый механизм для обмена информацией между запущенными процессами.
QNX предоставляет простой, но при этом довольно мощный механизм межпроцессорного обмена информацией, который значительно упрощает процесс разработки приложений, состоящих из нескольких взаимодействующих процессов.
QNX - как система, основанная на обмене сообщениями. QNX была первой коммерческой операционной системой, в основе которой лежал обмен сообщениями как единственный способ информационного обмена между взаимодействующими процессами. ОС QNX обязана своей мощью, простотой и элегантностью полному внедрению этого метода в работу самой ОС.
Сообщения в QNX представляют собой пакет байт, посланный от одного процесса к другому. В QNX придается большое значение содержанию сообщения, оно имеет смысл только для процесса-источника и процесса получателя, и ни для какого бы то ни было другого процесса.
Обмен сообщениями обеспечивает не только передачу информации, но является способом синхронизации параллельной работы нескольких процессов. При передаче, приеме и ответе на сообщение процессы подвергаются разнообразным изменениям состояния, которые влияют на то, когда и как долго данный процесс может работать. Имея информацию о приоритетах и состояниях процессов, микроядро может управлять работой процессов как можно эффективней с точки зрения распределения ресурсов системы. Этот единственный согласующий метод - обмен сообщениями - действует внутри всей системы.
QNX в сети
В своем первоначальном виде локальная сеть предоставляет механизм для обмена файлами и совместное использование периферийных устройств среди нескольких соединенных компьютеров. QNX же продвинулась гораздо дальше этой примитивной концепции и объединила всю сеть в единичном однородном наборе ресурсов.
Любой процесс на любом компьютере в сети может быть использован с другого компьютера. С точки зрения исполняемых в ОС QNX программ нет различий между локальными и удаленными ресурсами, т.е. нет необходимости встраивать в программу дополнительные средства для доступа к удаленным ресурсам. Фактически программа должна иметь только средства для определения того, где находится ресурс типа файла или устройства, - на локальном компьютере или каком-либо другом узле сети.
Пользователи могут получать доступ к файлам в любой точке в сети, использовать любое периферийное устройство и запускать любые программы на компьютерах, находящихся в сети, если, конечно, пользователь имеет соответствующие права доступа. QNX предоставляет широкие возможности по созданию приложений, состоящих из нескольких процессов и выполняющихся на нескольких распределенных компьютерах.
Сети QNX имеют возможность одновременной поддержки всех типов приложений, как реального времени, так внутреннего системного времени компьютера, причем одновременно. QNX предлагает вам сфокусировать мощность вашего компьютера на самом нижнем уровне, там, где она наиболее необходима, без каких-либо потерь связи с верхними уровнями.
Гибкая работа в сети. В сети QNX могут одновременно соединяться компьютеры с различной аппаратной сетевой поддержкой и различными стандартами протоколов. Так как сети QNX полностью прозрачны как для сетевого оборудования, так и для пользователей, то участники сети могут добавляться или удаляться без каких-либо нарушений всей системы.
Такая степень прозрачности - это еще одни пример исключительной мощности архитектуры QNX, основанной на сообщениях.
Во многих системах такие важные функции, как межпроцессорный информационный обмен, сетевая поддержка или даже рассылка сообщений находятся на самом "верху" вместо того, чтобы быть встроенными в ядро. Результат такой архитектуры - это неудобный, непроизводительный "двойной" интерфейс системы.
С другой стороны, QNX основана на принципе того, что эффективные коммуникации - это ключ к эффективной работе системы в целом. Обмен сообщениями - это краеугольный камень в архитектуре ОС QNX, который значительно улучшает эффективность совместной работы всех процессов внутри системы как внутри одного компьютера, так и распределенных по сети.
В.В. БОРИС,
"SystemSoft Ltd.",
тел. 227-27-82
Горячие темы