12. Основные характеристики и возможности ОС реального времени (QNX)

Предмет: Операционные системы.
Вопрос: №12

***

—————————————————————

Ведение в ОСРВ и термины:

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

Этот временной критерий условно разделил ОС на два класса – ОС общего назначения и ОС реального времени.

Основная задача ОС общего назначения – эффективное разделение ресурсов ЭВМ (таких как процессорное время, оперативная память и т.п.) между несколькими одновременно выполняющимися программами. Такие ОС поставляются с богатым набором прикладных программ и имеют развитый графический интерфейс, позволяющий пользователям работать с приложениями не задумываясь о внутреннем состоянии ОС.

ОС реального времени разрабатывались в расчете на наличие внешних источников данных. Их основная задача: своевременно обработать запрос, все остальные аспекты функционирования ЭВМ отходят на второй план. Поэтому ОСРВ поставляются в комплекте с разнообразными средствами обработки приложений. Иными словами, покупателями ОСРВ обычно являются не конечные пользователи, а разработчики ПО.

ОС жесткого реального времени – ГАРАНТИРУЕТ выполнение каких-либо действий за определенный интервал времени.

ОС мягкого реального времени –  КАК ПРАВИЛО, УСПЕВАЕТ выполнить заданные действия за заданное время.

Специализированной СРВ называется система, где конкретные временные требования определены. Такая система должна быть специально спроектирована для удовлетворения этих требований.

Универсальная СРВ предназначена для выполнения произвольных (заранее не определенных) временных задач без приме-

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

Встраиваемые системы устанавливаются внутрь оборудования, которым они управляют. Для крупного оборудования совпадают с промышленными компьюте-рами. Для меньшего оборудования пред-ставляют собой процессор с сопутствующи-ми элементами, размещенными на одной плате с другими электронными компо-нентами этого оборудования.

—————————————————————

Где применяются:

В течение длительного времени основными потребителями СРВ были военная и космическая отрасли. Сейчас ситуация из-менилась, и СРВ применяются даже при производстве товаров народного потребле-ния.

Основными областями применения СРВ являются:

1.) отрасли ВПК (бортовое и встраиваемое оборудование; радары, системы измерения и управления; цифровые видеосистемы, симуляторы;  ракеты, системы определения местоположения и привязки к местности;)

2.) промышленность (автоматические систе-мы управления производством; автомати- ческое сцепление и другое в автомобиле-строении; системы сбора информации, системы управления данными и оборудо-ванием и другое в энергетике; банковское оборудование: банкоматы и т.п.)

3.) Отрасли, производящие товары народ-ного потребления (мобильные телефоны; цифровое телевидение: мультимедиа, видеосервисы, цифровые телевизионные декодеры и т. д.; компьютерное и офисное оборудование; )

—————————————————————

Архитектуры построения ОСРВ:

1) монолитные;

2) уровневые;

3) клиент-серверные;

4) объектные.

Принцип монолитных ОСРВ: представление ОС как набора модулей, взаимодействую-щих между собой различным образом внутри ядра системы и предоставляющих прикладным программам входные интерфейсы для обращений к аппаратуре.

monolit-os

Основным преимуществом архитектуры монолитной ОС является ее относительная быстрота работы по сравнению с другими архитектурами. Однако это достигается написанием значительной части кода системы на ассемблере.

Главный недостаток такой архитектуры — плохая предсказуемость ее поведения, вызванная сложным взаимодействием модулей системы между собой.

Принцип уровневой ОСРВ: в системах этого класса прикладные приложения могли получить доступ к аппаратуре не только посредством ядра системы или ее рези- дентных сервисов, но и непосредственно. По такому принципу строились ОСРВ в течение многих лет.

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

mnogourovnevaya-os

Недостатком архитектуры этих систем является отсутствие механизма много-задачности.

Принцип клиент-серверных ОСРВ: одной из наиболее эффективных архитектур для построения ОСРВ считается архитектура клиент-сервер.

Основным принципом модульной архитекту-ры является вынесение сервисов ОС в виде серверов на уровень пользователя, а микроядро выполняет функции диспетчера сообщений между клиентскими пользова-тельскими программами и серверами —системными сервисами.

Преимущества (с точки зрения требований ОС к встраиваемым системам):

1.) повышается надежность ОС, так как каждый сервис является, по сути, самостоятельным приложением, и его легче отладить и отследить ошибки;

2.) система лучше масштабируется, по-скольку ненужные сервисы могут быть исключены из системы без ущерба для ее работоспособности;

3.) повышается отказоустойчивость систе-мы, поскольку «зависший» сервис перезапускается без перезагрузки системы.

ДАННУЮ АРХИТЕКТУРУ РЕАЛИЗУЕТ QNX

klient-servernaya-os

Недостатки данной архитектуры те же, что и у архитектуры монолитной системы. Проблемы перешли с уровня API на уровень микроядра. Системный интерфейс по-прежнему не допускает переключения задач во время работы микроядра, только сократилось время пребывания в этом состоянии.

Принцип объектной архитектуры ОСРВ: в данной архитектуре API отсутствует вообще. Взаимодействие между компонентами системы (микроядрами) и пользователь-скими процессами осуществляется по-средством обычного вызова функций, поскольку система и приложения написаны на одном языке (С++). Это обеспечивает максимальную скорость системных вызовов. Фактическое равноправие всех компонентов системы обеспечивает возможность переключения задач в любое время, т. е. система полностью preemptable(наличие возможности прерывания выполнения задачи в режиме ядра).

Роль API выполняет компилятор и динамический редактор объектных связей (linker). При старте приложения динами-ческий редактор linker загружает нужные ему микроядра. Таким образом, в отличие от всех предыдущих типов систем, не все компоненты ОС должны быть загружены в оперативную память.

Все это позволяет сократить объем исполь-зуемой оперативной памяти. Поскольку разные приложения используют одни микроядра, то данные приложения должны работать в одном адресном пространстве. Следовательно, система не может исполь-зовать виртуальную память и, таким образом, работает быстрее.

У нее исключаются задержки на трансляцию виртуального адреса в физический. Основным представителем такой архитекту-

ры является архитектура ОСРВ Soft Kernel.

—————————————————————

Типичное строение ОСРВ можно разделить на три слоя:

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

2) система управления, содержащая ядро и ряд дополнительных сервисов, расширяю-щих возможности ядра (расширенное управление памятью; расширенное управление устройствами ввода-вывода;  расширенное управление задачами;  управление файлами; обеспечение взаимо-действия системы и внешнего оборудования и т. д.;)

3) система реального времени, содержащая систему управления и набор утилит: средства разработки и визуализации и т. д.

osrt

—————————————————————

Основные требования к ОСРВ:

1.) требование к архитектуре ОСРВ является многозадачность в истинном смысле этого слова. Очевидно, что вариан-ты с псевдомногозадачностью (а точнее невытесняющей многозадачностью) типа MS Windows 3.x или Novell NetWare неприемлемы.

2.) организация надежных вычислений мо-жет быть эффективно выполнено при полном использовании возможностей процессоров Intel 80386 и старше, что предполагает работу ОС в 32-разрядном режиме процессора.

3.) Для эффективного обслуживания прерываний ОС должна использовать алгоритм диспетчеризации, обеспечиваю-щий вытесняющее планирование, основанное на приоритетах.

4.) эффективная поддержка сетевых ком-муникаций

5.) наличие развитых механизмов взаимодействия между процессами, по-скольку реальные технологические системы обычно управляются целым комплексом компьютеров и/или контроллеров.

6.)  важно чтобы ОС поддерживала мно-жественные потоки управления (не только мультипрограммный, но и мультизадачный режимы), а также симметричную мульти-процессорность.

7.) при выполнении всех перечисленных требований ОС должна быть способна работать на ограниченных аппаратных ресурсах, поскольку одна из ее основных областей применения — это встроенные системы.

—————————————————————

Основные характеристики ОС QNX:

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

ОС QNX является сетевой, мультизадач-ной, многопользовательской (многотерми-нальной) и масштабируемой системой.

С точки зрения пользовательского интер-фейса и API она очень похожа на UNIX. Однако QNX — это не версия UNIX. QNX была разработана, что называется, «с нуля» канадской фирмой «QNX Software Systems Limited» в 1989 г.

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

—————————————————————

Важные преимущества QNX:

1.) предсказуемость, означающая ее при-менимость к задачам жесткого реального времени. QNX является операционной сис- темой, которая дает полную гарантию в том, что процесс с наивысшим приоритетом начнет выполняться практически немедлен-но и что критическое событие (например, сигнал тревоги) никогда не будет потеряно.

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

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

4.) быстрый сетевой протокол FLEET, прозрачный для обмена сообщениями, автоматически обеспечивающий отказо-устойчивость, балансирование нагрузки и маршрутизацию между альтернативными путями доступа;

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

—————————————————————

Архитектура ядра ОС QNX:

Представлена небольшим микроядром и набором взаимодействующих процессов. Система не имеет иерархической структуры, ее организация скорее напоминает спортив-ную команду, в которой игроки (процессы), имеющие равную значимость, взаимодей-ствуют друг с другом и со своим ведущим игроком (ядром).

Ядро является «сердцем» любой ОС. В некоторых системах на ядро возложено такое количество функций, что, по сути дела, оно само является полной ОС. В системе QNX ядро является действительно ядром. Прежде всего, как и подобает ядру ОС реального времени, оно имеет неболь-шой размер — менее 8 кб.

Функции ядра ОС QNX:

1.) связь между процессами;

2.) сетевое взаимодействие нижнего уровня. Ядро передает все сообщения, предназ-наченные процессам на другом узле;

3.) планирование процессов. Планировщик ядра определяет, какой процесс будет выполняться следующим;

4.) первичную обработку прерываний. Все прерывания и сбои аппаратного обеспе-чения сначала обрабатываются в ядре, а за-

тем передаются соответствующему драй-веру или системному администратору.

В отличие от процессов, непосредственно ядро никогда не планируется к выполнению. Управление передается ядру только в результате прямого вызова ядра либо из процесса, либо по аппаратному прерыва-нию.

Состав ядра ОС QNX:

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

2.) redirect (перенаправлять) прерываний;

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

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

Механизм передачи сообщений между процессами: предназначен для пересылки сообщений между процессами и является одной из важнейших частей ОС, так как все общение между процессами, в том числе и системными, происходит через сообщения. Сообщение в QNX – это последователь-ность байтов произвольной длины (0–65535 байтов) произвольного формата.

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

Определены в QNX еще и два дополни-тельных метода передачи сообщений – метод представителей (Proxy) и метод сигналов (Signal).

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

Блок планирования выполнения задач (дис-петчер задач) занимается обеспечением многозадачности. Диспетчер выбирает процесс для запуска среди неблокирован-ных процессов в порядке значений их приоритетов, которые располагаются в диапазоне от 0 (наименьшего) до 31 (наибольшего). Обслуживание каждого из процессов зависит от метода диспетче-ризации, с которым он работает. Уровень приоритета и метод диспетчеризации могут динамически меняться во время работы.

В QNX существуют три метода диспетчеризации:

1.) FIFO (первым пришел – первым обслу-жен);

2) round-robin, при котором процессу выде-ляется определенный квант времени для работы;

3) адаптивный, который является наиболее используемым.

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

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

—————————————————————

У системных процессов нет специального или скрытого интерфейса, недоступного процессу пользователя. Именно такая архитектура обеспечивает системе QNX не-

ограниченную расширяемость. Единствен-ным принципиальным отличием систем-ных процессов от прикладных является то, что системные процессы управляют ресурсами системы, предоставляя их прикладным процессам.

—————————————————————

Сетевые механизмы QNX:

QNX является сетевой операционной системой и позволяет организовать эффективные распределенные вычисления. Для организации сети на каждой машине, называемой узлом, помимо ядра и менеджера процессов должен быть запущен менеджер Net. Менеджер Net не зависит от аппаратной реализации сети. Данная аппаратная независимость обеспечивается за счет использования сетевых драйверов. В QNX имеются драйверы для различных сетей, например Ethernet, Arcnet, Token Ring. Кроме этого, имеется возможность организации сети через последовательный канал или модем.

В QNX четвертой, версии полностью реа-лизовано встроенное сетевое взаимодей-ствие «точка-точка». Например, находясь на машине А, вы можете скопировать файл с гибкого диска, подключенного к машине В, на жесткий диск, подключенный к машине С.

По существу, сеть из машин QNX действует как один мощный компьютер. Любые ресурсы (модемы, диски, принтеры) могут быть добавлены к системе простым их подключением к любой машине в сети. QNX поддерживает одновременную работу в сетях Ethernet, Arcnet, Serial и Token Ring и обеспечивает более чем один-единственный путь для коммуникации, а также балансировку нагрузки в сетях.

—————————————————————

Уникальный сетевой протокол:

Сетевое взаимодействие является узким местом в большинстве операционных систем и обычно создает значительные про-

блемы для систем реального времени. Для того чтобы обойти это препятствие, разработчики QNX создали собственную специальную сетевую технологию FLEET и соответствующий протокол транспортного уровня FTL (FLEET Transport Layer). Этот протокол не базируется ни на одном из распространенных сетевых протоколов типа IPX или NetBios и обладает рядом качеств, которые делают его уникальным. Основные его качества представлены в таблице:

kakaya-to-tablica

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