Архитектура системы QNX

Итак, QNX — это операционная система реального времени для персональных компьютеров, позволяющая эффективно организовать распределенные вычисле­ния. В системе реализована концепция связи между задачами на основе сообще­ний, посылаемых от одной задачи к другой, причем задачи эти могут решаться как на одном и том же компьютере, так и на разных, но связанных между собой ло­кальной вычислительной сетью. Реальное время и концепция связи между про­цессами посредством сообщений оказывают решающее влияние и на разрабатывае­мое для операционной системы QNX программное обеспечение, и на программиста, стремящегося с максимальной выгодой использовать преимущества системы.

Микроядро операционной системы QNX имеет объем всего в несколько десятков килобайтов (в одной из версий — 10 Кбайт, в другой — менее 32 Кбайт, хотя есть вариант и на 46 Кбайт), то есть это одно из самых маленьких ядер среди всех суще­ствующих операционных систем. В этом объеме помещаются [26]:

- механизм передачи сообщений между процессами IPC (Inter Process Commu­
nication — взаимодействие между процессами);

- редиректор (redirector) прерываний;

1 Это фирменная технология, о которой несколько более подробно рассказано далее.


Сетевая операционная система реального времени QNX______________________ 343

- блок планирования выполнения задач (иначе говоря, диспетчер задач); - сетевой интерфейс для перенаправления сообщений (менеджер Net).

Механизм IPC обеспечивает пересылку сообщений между процессами и является одной из важнейших частей операционной системы, так как все взаимодействие между процессами, в том числе и системными, происходит через сообщения. Со­общение в операционной системе QNX — это последовательность байтов произ­вольной длины (0-65 535 байт) произвольного формата. Протокол обмена сооб­щениями может выглядеть, например, таким образом. Задача блокируется для ожидания сообщения. Другая задача посылает первой сообщение и при этом бло­кируется сама, ожидая ответа. Первая задача деблокируется, обрабатывает сооб­щение и отвечает, деблокируя вторую задачу.

Сообщения и ответы, пересылаемые между процессами при их взаимодействии, находятся в теле отправляющего их процесса до того момента, когда они могут быть приняты. Это означает, что, с одной стороны, снижается вероятность повреж­дения сообщения в процессе передачи, а с другой — уменьшается объем оператив­ной памяти, необходимый для работы ядра. Кроме того, становится меньше пере­сылок из памяти в память, что разгружает процессор. Особенностью процесса передачи сообщений является то, что в сети, состоящей из нескольких компьюте­ров, работающих под управлением QNX, сообщения могут прозрачно передавать­ся процессам, выполняющимся на любом из узлов. Определены в QNX еще и два дополнительных метода передачи сообщений — метод представителей (proxy) и метод сигналов (signal).

Представители используются в случаях, когда процесс должен передать сообщение, но не должен при этом блокироваться на передачу. Тогда вызывается функция qnx_proxy_attach() и создается представитель. Он накапливает в себе сообщения, кото­рые должны быть доставлены другим процессам. Любой процесс, знающий иденти­фикатор представителя, может вызвать функцию Trigger(), после чего будет доставле­но первое в очереди сообщение. Функция Trigger() может вызываться несколько раз, и каждый раз представитель будет доставлять следующее сообщение. При этом пред­ставитель содержит буфер, в котором может храниться до 65 535 сообщений.

Как известно, механизм сигналов уже давно используется в операционных систе­мах, в том числе и в UNIX. Операционная система QNX также поддерживает множе­ство сигналов, совместимых с POSIX, большое количество сигналов, традиционно использовавшихся в UNIX (поддержка этих сигналов требуется для совместимости с переносимыми приложениями, ни один из системных процессов QNX их не ге­нерирует), а также несколько сигналов, специфичных для самой системы QNX. По умолчанию любой сигнал, полученный процессом, приводит к завершению процесса (кроме нескольких сигналов, которые по умолчанию игнорируются). Но процесс с приоритетом уровня суперпользователя может защититься от неже­лательных сигналов. В любом случае процесс может содержать обработчик для каждого возможного сигнала. Сигналы удобно рассматривать как разновидность программных прерываний.

Редиректор прерываний является частью ядра и занимается перенаправлением аппаратных прерываний в связанные с ними процессы. Благодаря такому подходу


344________________ Глава 10. Краткий обзор современных операционных систем

возникает один побочный эффект — с аппаратной частью компьютера работает ядро, оно перенаправляет прерывания процессам — обработчикам прерываний. Обработчики прерываний обычно встроены в процессы, хотя каждый из них ис­полняется асинхронно с процессом, в который он встроен. Обработчик исполня­ется в контексте процесса и имеет доступ ко всем глобальным переменным про­цесса. При работе обработчика прерываний прерывания разрешены, но обработчик приостанавливается только в том случае, если произошло более высокоприори­тетное прерывание. Если это позволяется аппаратной частью, к одному прерыва­нию может быть подключено несколько обработчиков, каждый из которых полу­чит управление при возникновении прерывания.

Этот механизм позволяет пользователю избегать работы с аппаратным обеспече­нием напрямую и тем самым избегать конфликтов между различными процесса­ми, работающими с одним и тем же устройством. Для обработки сигналов от вне­шних устройств чрезвычайно важно минимизировать время между возникновением события и началом непосредственной его обработки. Этот фактор существен в любой области применения: от работы терминальных устройств до обработки вы­сокочастотных сигналов.

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

К выполнению своих функций как диспетчера ядро приступает в следующих слу­чаях:

- какой-либо процесс вышел из блокированного состояния;

- истек квант времени для процесса, владеющего центральным процессором;

- работающий процесс прерван каким-либо событием.

Диспетчер выбирает процесс для запуска среди неблокированных процессов в по­рядке значений их приоритетов в диапазоне от 0 (наименьший) до 31 (наиболь­ший). Обслуживание каждого из процессов зависит от метода его диспетчериза­ции (приоритет и метод диспетчеризации могут динамически меняться во время работы). В QNX существуют три метода диспетчеризации:

- очередь (First In First Out, FIFO) — раньше пришедший процесс раньше об­
служивается;

- карусель (Round Robin, RR) — процессу выделяется определенный квант вре­
мени для работы, после чего процессор предоставляется следующему процессу;

- адаптивный метод (используется чаще других).

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


Сетевая операционная система реального времени QNX______________________ 345

цессов с таким же уровнем приоритета, а управление передается процессу с наи­большим приоритетом.

В методе RR все происходит так же, как и в предыдущем, с той разницей, что пери­од, в течение которого процесс может работать без перерыва, ограничивается не­ким квантом времени.

Процесс, работающий в соответствии с адаптивным методом, ведет себя следую­щим образом:

- если процесс полностью использует выделенный ему квант времени, а в систе­
ме есть готовые к исполнению процессы с тем же уровнем приоритета, его при­
оритет снижается на 1;

- если процесс с пониженным приоритетом остается необслуженным в течение
секунды, его приоритет увеличивается на 1;

- если процесс блокируется, ему возвращается исходное значение приоритета.

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

Сетевой интерфейс в операционной системе QNX является неотъемлемой частью ядра. Он, конечно, взаимодействует с сетевым адаптером через сетевой драйвер, но базовые сетевые службы реализованы на уровне ядра. При этом передача сооб­щения процессу, находящемуся на другом компьютере, ничем не отличается с точ­ки зрения приложения от передачи сообщения процессу, выполняющемуся на том же компьютере. Благодаря такой организации сеть превращается в однородную вычислительную среду. При этом для большинства приложений не имеет значе­ния, с какого компьютера они были запущены, на каком исполняются и куда по­ступают результаты их работы.

Все службы операционной системы QNX, не реализованные непосредственно в яд­ре, работают как обычные стандартные процессы в полном соответствии с основ­ными концепциями микроядерной архитектуры. С точки зрения операционной системы эти системные процессы ничем не отличаются от всех остальных. Как, впрочем, и драйверы устройств. Единственное, что нужно сделать, чтобы новый драйвер устройства стал частью операционной системы, — изменить конфигура­ционный файл системы так, чтобы драйвер запускался при загрузке.








Дата добавления: 2016-09-20; просмотров: 606;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.