Операционная система QNX

Автор работы: Пользователь скрыл имя, 07 Июня 2013 в 11:25, реферат

Описание работы

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

Файлы: 1 файл

Основная часть.docx

— 122.05 Кб (Скачать файл)

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

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

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

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

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

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

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

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

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

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

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

- администратор процессов (Process Manager), отвечающий за распределение памяти, запуск и окончание задач в системе;

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

- администратор файловой системы(File system Manager);

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

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

Рисунок 2. Структура  ядра ОС QNX

 

Ядро ОС QNX (рис.2)обеспечивает поддержку 14 основных системных вызовов для предоставления сервиса по четырем основным направлениям:

- передача сообщений от одного процесса к другому во всей операционной системе;

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

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

- перенаправление сообщений  по сети [4].

 

 

 

 

 

 

 

 

Функциональные  возможности и интерфейс QNX

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

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

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

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

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

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

Но наряду с преимуществами, QNX имеет некоторые ограничения, связанные с ориентацией системы на рынок встроенных систем реального времени:

- нет поддержки SMP;

- отсутствует запись виртуальной  памяти на диск;

- неэффективная и нестандартная  поддержка нитей;

- неполноценная реализация  отображения файлов в память;

- нет поддержки UNIX-domain sockets;

- слабые средства безопасности  в рамках собственного сетевого протокола.

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

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

Рассмотрим интерфейс  системы. В своем составе QNX имеет различные графические интерфейсы:

- QNX Windows – полнофункциональная оконная система, выполненная в соответствии со стандартом Open Look.

- Photon – графический интерфейс для ограниченной в ресурсах встраиваемой системы, поддерживающий стандарт Motif и требующий всего 256 Кбайт оперативной памяти.

- X Window – графический стандарт для всех открытых систем. X Window System обеспечивает базовые функции графической среды: отрисовку и перемещение окон на экране, взаимодействие с устройствами ввода, такими как, например, мышь и клавиатура. X Window System не определяет деталей интерфейса пользователя — этим занимаются менеджеры окон, которых разработано множество. По этой причине внешний вид программ в среде X Window System может очень сильно различаться в зависимости от возможностей и настроек конкретного оконного менеджера. В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя (в случае, если это разрешено в настройках). В контексте X Window System термины «клиент» и «сервер» имеют непривычное для многих пользователей значение: «сервер» означает локальный дисплей пользователя (дисплейный сервер), а «клиент» — программу, которая этот дисплей использует (она может выполняться на удалённом компьютере).

Модульная архитектура QNX также способствует гибкости ОС и может использоваться как в качестве среды разработки, так и в качестве среды использования в миниатюрных встраиваемых системах.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Области применения QNX

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

 Обычно ОСРВ QNX применяется  там, где требуется высокая  надёжность системы: медицинская  техника, военная техника и  вооружение, нефтегазовая и металлургическая  промышленность и т.д. В конце  прошлого десятилетия QNX стал  развиваться в сторону поддержки  мультимедиа технологий, что способствовало  появлению проекта QNX Car, а также  планшетного ПК BlackBerry PlayBook.

Примеры применения QNX за рубежом.

  1. Наиболее ярким примером применения QNX является работа с кредитными карточками VISA во всех региональных офисах Северной Америки.
  2. Управление дорожным движением. В канадском городе Оттава-Карлтон на базе QNX разработана система управления движением городского муниципального транспорта. Эта система объединяет около 700 светофоров и 3000 придорожных датчиков на протяжении 1100 километров шоссе. Пропускная способность этих шоссе — 5,4 млрд автомобилей в год. Кроме времени и продолжительности переключения сигналов светофоров на каждом перекрёстке города данная система управления должна фиксировать происходящие события, анализировать работоспособность оборудования через придорожные датчики.
  3. Управление ядерным реактором. Одно из отделений канадской компании Atomic Energy of Canada, которая известна как разработчик, производитель и продавец ядерных реакторов, специализируется на разработке программных продуктов по управлению и мониторингу. На основе QNX этим отделением разработана система управления ядерным реактором, которая называется «Распределённая система управления с открытой архитектурой» (Open Architecture Distributed Control System).
  4. На март 2009 года решения на базе QNX лицензированы для использования на более, чем 10,1 миллионах единиц техники от практически всех ведущих производителей автомобилей, включая BMW, Chrysler, Daimler, Fiat, Ford, General Motors, Honda, Hyundai, Mazda, Mitsubishi, Nissan, Saab, SsangYong, Toyota и Volkswagen.[18] В частности, такие автомобили выпускаются под марками Acura, Alfa Romeo, Audi, Buick, Cadillac, Chevrolet, Dodge, Honda, Hummer, Infiniti, Jeep, Lancia, Mini, Mercedes, Opel, Pontiac, Saturn и другими.

Информация о работе Операционная система QNX