Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Сетевая ОС реального времени QNX



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

ОС QNX является сетевой, мультизадачной, многопользовательской (многотер­минальной) и масштабируемой. С точки зрения пользовательского интерфейса и API она очень похожа на UNIX. Однако QNX – это не версия UNIX, хотя по­чему–то многие так считают. Она была разработана, что называется «с нуля», канадской фирмой QNX Software Systems Limited в 1989 году по заказу Министерства обороны США. Причём эта система построена на совершенно других архитектурных принципах, отличных от принципов, использованных при созда­нии ОС UNIX.

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

¨ Предсказуемость, означающая её применимость к задачам жёсткого реально­го времени. QNX является операционной системой, которая дает полную гарантию в том, что процесс с наивысшим приоритетом начнет выполняться практически немедленно и что критическое событие (например, сигнал тре­воги) никогда не будет потеряно. Ни одна версия UNIX не может достичь подобного качества, поскольку нереентерабельный код ядра слишком велик. Любой системный вызов из обработчика прерывания в UNIX может привес­ти к непредсказуемой задержке (то же самое касается Windows NT, где реаль­ное время заканчивается между ISR и DPC).

¨ Масштабируемость и эффективность, достигаемые оптимальным использо­ванием ресурсов и означающие её применимость для встроенных (embedded) систем; вы не увидите в каталоге /dev огромной кучи файлов, соответствую­щих ненужным драйверам. Драйверы и менеджеры можно запускать и уда­лять (кроме файловой системы, что очевидно) динамически, просто из команд­ной строки. Вы можете иметь только тот сервис, который вам реально нужен, причем это не требует серьезных усилий и не порождает проблем.

¨ Расширяемость и надёжность одновременно, поскольку написанный вами драй­вер не нужно компилировать в ядро, рискуя вызвать нестабильность системы.

Менеджеры ресурсов (сервис логического уровня) работают в кольце защи­ты 3, и вы можете добавлять свои, не опасаясь за систему. Драйверы работают в кольце с уровнем привилегий 1 и могут вызвать проблемы, но не фатально­го характера. Кроме того, их достаточно просто писать и отлаживать.

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

¨ Компактная графическая подсистема Photon, построенная на тех же принци­пах модульности, что и сама ОС, позволяет получить полнофункциональный GUI2 (расширенный Motif), работающий вместе с POSIX-совместимой ОС всего в 4Мбайт памяти, начиная с i80386 процессора.

Вспомним основные принципы, обязательная реализация которых позволят соз­давать ОСРВ (см. раздел «Требования, предъявляемые к ОС реального времени», глава 5). Первым обязательным требованием к архитектуре ОСРВ являет­ся многозадачность в истинном смысле этого слова. Очевидно, что варианты с псевдомногозадачностью (а точнее – не вытесняющая многозадачность) типа MS Windows 3.х или Novell NetWare неприемлемы, поскольку они допуска­ют возможность блокировки или даже полного развала системы одним непра­вильно работающим процессом. Для предотвращения блокировок ОСРВ должна использовать квантование времени (то есть вытесняющую многозадачность), что является достаточно легкой задачей. Вторая проблема (организация надёжных вычислений) может быть эффективно решена при полном использовании воз­можностей процессоров Intel 80386 и старше, что предполагает работу ОС в 32-разрядном режиме процессора. Для эффективного обслуживания прерываний ОС должна использовать алгоритм диспетчеризации, обеспечивающий вытес­няющее планирование, основанное на приоритетах. Наконец, крайне желательны эффективная поддержка сетевых коммуникаций и наличие развитых механизмов взаимодействия между процессами, поскольку реальные технологические систе­мы обычно управляются целым комплексом компьютеров и/или контроллеров. Весьма важно также, чтобы ОС поддерживала множественные потоки управле­ния (не только мультипрограммный, но и мультизадачный режимы), а также симметричную мультипроцессорность.

И, наконец, при соблюдении всех перечисленных условий ОС должна быть способна работать на ограниченных аппаратных ресурсах, поскольку одна из её ос­новных областей применения – это встроенные системы. К сожалению, данное условие обычно реализуется путём урезания стандартных сервисных средств.

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

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

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

¨ механизм передачи сообщений между процессами (IPC);

¨ редиректор3 прерываний;

¨ блок планирования выполнения задач;

¨ сетевой интерфейс для перенаправления сообщений (менеджер Net).

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

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

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

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

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

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

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

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

¨ истёк квант времени для процесса, владеющего CPU;

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

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

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

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

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

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

Если процесс блокируется, ему возвращается оригинальное значение приоритета.

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

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

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

 


Поделиться:



Популярное:

  1. III. Нравственный облик, церковно-общественная деятельность, нестроения и злополучия Константинопольской патриархии (от конца XVI в. до настоящего времени).
  2. III. Поставьте предложения в Simple Past и Future Simple, используя соответствующие наречия времени. Переведите на русский язык.
  3. N – интервал времени между датой учёта и датой погашения векселя
  4. Архитектура производственной базы данных реального времени
  5. Базовые понятия программного обеспечения реального времени
  6. В чем различие линейной и цикличной моделей времени?
  7. Взаимосвязь и действие во времени уголовных материальных и процессуальных правоотношений
  8. Вклад социальной и биологической компонент в общую смертность в историческом времени и в разных популяциях
  9. Во времени, пространстве и по кругу лиц.
  10. Вопрос 1. Россия в ХVII в.: новое в социально-экономическом и политическом развитии. Особенности перехода к новому времени.
  11. Вопрос 36. ДЕЙСТВИЕ ЗАКОНА ВО ВРЕМЕНИ, ПРОСТРАНСТВЕ И ПО КРУГУ ЛИЦ
  12. Вопрос 36. ДЕЙСТВИЕ ЗАКОНА ВО ВРЕМЕНИ, ПРОСТРАНСТВЕ И ПО КРУГУ ЛИЦ


Последнее изменение этой страницы: 2016-05-29; Просмотров: 746; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.026 с.)
Главная | Случайная страница | Обратная связь