русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-11-28; просмотров: 1245; Нарушение авторских прав


Итак, 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, не реализованные непосредственно в яд­ре, работают как обычные стандартные процессы в полном соответствии с основ­ными концепциями микроядерной архитектуры. С точки зрения операционной системы эти системные процессы ничем не отличаются от всех остальных. Как, впрочем, и драйверы устройств. Единственное, что нужно сделать, чтобы новый драйвер устройства стал частью операционной системы, — изменить конфигура­ционный файл системы так, чтобы драйвер запускался при загрузке.



<== предыдущая лекция | следующая лекция ==>
Сетевая операционная система реального времени QNX | Основные механизмы организации распределенных вычислений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.495 сек.