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

Обновлено: 04.07.2024

Автор: Пользователь скрыл имя, 10 Апреля 2012 в 00:32, реферат

Краткое описание
Оглавление

Введение
1. Общие характеристики QNX
2. Ядро ОС QNX
3. Управление процессами
4. Особенности файловой системы
5.Область применения
Заключение
Литература

Файлы: 1 файл

QNX готовый.docx

Министерство образования и науки Украины

Таврический национальный университет им. В.И. Вернадского

Кафедра компьютерной инженерии

студент 3 курса, группа КСС 322,

Суздал Дмитрий Эдуардович

1. Общие характеристики QNX

3. Управление процессами

4. Особенности файловой системы

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

-Системы пакетной обработки;

-Системы с разделением времени;

-Системы реального времени;

В данном реферате пойдёт речь об операционной системе, которая относится к системам реального времени. То есть система, в которой результат зависит не только от пpавильноcти вычислений, но и от времени, за которое будет получен результат вычислений. Предметом нашего разговора пойдет ОС QNX.

QNX изначально расшифровывалось как QuickUnix, но фирме QNX Software Systems Ltd пришлось отказаться от этого названия из-за прав на торговую марку UNIX фирмы AT&T. Создателем QNX является известная канадская фирма QSSL - QNX Software Systems, Ltd. (ранее Quantum Software Systems Ltd.), вот уже более 20 лет лидирующая на рынке встраиваемых ОС реального времени.

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

1. Общие характеристики QNX

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

Система реального времени - та система, в которой pезyльтат зависит не только от правильноcти вычислений, но и от времени, за которое будет получен pезyльтат вычислений. Если временные ограничения не выполняются, считается, что случился сбой в системе.

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

QNX 2.x - это ОС, выпущенная фирмой QSSL в середине 80-х. В настоящее время практически не применяется.

QNX 4.2x - наиболее популярная до последнего времени ОС, она же наиболее распространена в России. С ее помощью построено очень много встраиваемых систем, систем SCADA, она очень успешно применяется в решениях задач автоматизации и управления, там, где необходима высокая надежность. Эта система была разработана специально для "mission critical appliances" - т.е. для применения в критических ситуациях, там, где на другие ОС нельзя рассчитывать.

В QNX 6 используется GUI Photon 2.0, разделяемые библиотеки, расширена cовмеcтимоcть c Linux. Многие программы можно свободно переносить из одной системы в другую и обратно.

Реализована поддеpжка мyльтипpоцеccоpных аpхитектyp, пpичем без какого-либо изменения пpогpамм, еcли только они пpоектиpовалиcь c опpеделенными огpаничениями, cвязанными c одновpеменным выполнением неcкольких нитей одного пpоцеccа на pазных пpоцеccоpах.

В дистрибутив QNX версии 4.24 входит сам QNX, Watcom C/C++ 10.6, поддержка TCP/IP, графический интерфейс(GUI) Photon 1.12, средство для разработки встроенных приложений Embedded Kit, программа для связи из Windows с QNX+Photon по модему или по IP. Дополнительно существуют еще 2 GUI для QNX: QNX Window и X Window; QNX Window в настоящее время не пользуется ни популярностью, ни любовью фирмы-разработчика; Photon - родной GUI для QNX.

Итак, уникальная эффективность, модульность и простота системы QNX определяется:

2.Ядро ОС QNX

На рис 1 показана архитектура QNX [1].

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

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

  • менеджер процессов (Proc);
  • менеджер файловой системы (Fsys);
  • менеджер устройств (Dev);
  • сетевой менеджер (Net).

3. Управление процессами

Порождение и планирование процессов обеспечивается менеджером процессов совместно с планировщиком в микроядре. Менеджер процессов выполняет порождение новых процессов, загрузку и завершение процессов. Для создания процессов имеются системные вызовы fork() и exec(), традиционные для Unix, а также spawn() - создание процесса-потомка с выполнением в нем новой программы.

QNX различает процессы, находящиеся в следующих состояниях:

  • готовые ( среди них - и активный процесс);
  • ожидающие (6 подвидов - в зависимости от причин ожидания)
  • мертвые (уже завершившиеся, но не передавшие информации о своем завершении).

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

динамическое изменение приоритета.

В последнем случае изменение приоритета производится по таким правилам:

если активный процесс полностью исчерпал квант времени и есть еще процессы с таким же приоритетом, приоритет активного процесса уменьшается на 1;

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

Всего в системе имеется 32 градации приоритетов.

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

Внешнее событие вызывает прерывание. Для обеспечения высокой реактивности прерывание должно обрабатываться немедленно. Но обработка прерывания может быть отложена по следующим причинам:

  • выполняется обработка прерывания с более высоким приоритетом;
  • выполняется нереентерабельный код микроядра (при этом обработка прерывания запрещается).

Если первый вид задержек является объективным и оправданным, то второй является нежелательным. В QNX модули микроядра тщательно оптимизированы с целью минимизации размера участков нереентерабельного кода. В результате модули микроядра также являются прерываемыми почти в любом месте. Участки кода с запрещенными прерываниями составляют в среднем всего 9 команд на входе в модуль микроядра и 14 команд - на выходе из модуля.

4.Особенности файловой системы.

Администратор файловой системы (Fsys) позволяет стандартным образом организовать хранение и получение доступа к данным дисковых подсистем. Администратор Fsys отвечает за обработку всех запросов на открытие, закрытие, чтение и запись файлов.

В системе QNX под файлом понимается объект, над которым может быть выполнена либо операция записи, либо операция чтения, либо обе эти операции. В QNX имеется шесть типов файлов, пять из которых поддерживает администратор Fsys:

  • регулярные файлы - содержат последовательность байтов, доступ к которым произволен, и которые не имеют заранее определенной внутренней структуры;
  • каталоги - содержат информацию, необходимую для определения местонахождения регулярных файлов; кроме того, содержат информацию о статусе и атрибутах каждого регулярного файла;
  • символические связи - содержат составное имя файла или каталога, к которым требуется обеспечить доступ, вместо файла символической связи. Эти файлы часто используются для обеспечения доступа разными путями к одному и тому же файлу;
  • программные каналы (pipe) и простые очереди (FIFO) - служат каналами ввода/вывода между взаимодействующими процессами;
  • блок-ориентированные - описывают устройства, такие как накопители на дисках,
  • специальные файлы - накопители на магнитной ленте, и разделы диска. Доступ к этим файлам организован таким образом, что технические характеристики устройств "скрыты" от использующих их приложений.

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

  • блок загрузчика;
  • корневой блок;
  • битовая карта;
  • корневой каталог.

На рис 2 представлено структурирование диска QNX на физическом уровне [2]

Блок загрузчика – это первый физический блок раздела диска. Этот блок содержит программный код, который загружается и затем выполняется базовой системой ввода/вывода (BIOS) компьютера, при загрузке операционной системы из раздела.

Если диск не разбит на разделы (например, в случае гибкого диска), то этот блок является первым физическим блоком диска.

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

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

Файлы: 1 файл

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

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

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

- система пакетной обработки;

- система с разделением времени;

- система реального времени.

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

QNX изначально расшифровывалась как QuickUnix, но фирме QNX Software Systems Ltd пришлось отказаться от этого названия из-за прав на торговую марку Unix фирмы AT&T. Создателем QNX является известная канадская фирма QSSL-QNX Software Systems, Ltd. (ранее Quantum Software Systems Ltd.), вот уже более 20 лет лидирующая на рынке встраиваемых ОС реального времени.

История создания QNX

В 1980 году студенты канадского Университета Ватерлоо Гордон Белл и Дэн Додж закончили изучение базового курса по разработке операционных систем, в ходе которого они создали основу ядра, способного работать в реальном времени. Разработчики были убеждены, что в их продукте была коммерческая потребность, и переехали в город Каната в провинции Онтарио (город высоких технологий, иногда это место называют северной Кремниевой долиной Канады) и основали компанию Quantum Software Systems. В 1982 году была выпущена первая версия QNX, работающая на платформе Intel 8088.

18 мая 2004 года в Государственный реестр сертифицированных средств защиты информации внесён сертификат № 906, удостоверяющий, что защищённая система реального времени QNX 4.25 (КПДА.00002-01) соответствует требованиям руководящих документов Гостехкомиссии России по 3 классу защищённости от несанкционированного доступа (НСД) и 2 уровню контроля отсутствия НДВ.

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

После 2004 года интерес в мире как к QNX, так и к конкурирующим продуктам, начал угасать. QNX сохранила популярность в основном в Японии, Германии, России и, в последнее время, в Китае благодаря активному развитию рынка автомобильной электроники и интегрированных систем управления производством.

Осенью 2007 года компания QNX Software Systems приступила к поэтапному открытию исходного кода QNX Neutrino на условиях лицензии гибридного типа в рамках сообщества Foundry27. Эта лицензия позволяет энтузиастам бесплатно получать доступ не только к исходным текстам операционной системы, но и к инструментальным средствам. При этом для коммерческого использования QNX Neutrino по-прежнему необходимо приобретать соответствующие лицензии. Кроме того, лицензия QNX Neutrino прямо запрещает проведение сертификаций продуктов, производных от исходного кода QNX Neutrino, без письменного разрешения компании QSS.

Последняя версия достаточно современна – она вышла в начале 2000-х годов. По сравнению с предшественницами она предоставляет множество новых возможностей: поддержку разделяемых библиотек, поддержку многопроцессорности, поддержку отличных от x86 аппаратных архитектур, например, SH4, ARM, PowerPC, MIPS и др. Серьезной переработке подверглись сетевая подсистема, графическая система Photon и другие подсистемы ОСРВ. В данной версии появилась возможность простого портирования сетевых драйверов NetBSD в QNX6.

В сентябре 2009 года на портале Foundry27 был создан проект, предназначенный для сопровождения QNX4 в публичной форме.

9 апреля 2010 года канадская компания Research In Motion, владеющая брендом BlackBerry, заключила соглашение о выкупе у компании Harman International подразделения, занимающегося разработкой QNX. В этот же день на сайте Foundry27, появилось объявление, что доступ к исходным кодам QNX для широкой общественности с этого момента ограничен.

27 сентября 2010 года на конференции BlackBerry DEVCON-2010 был представлен планшетный компьютер BlackBerry PlayBook c BlackBerry Tablet OS на основе QNX Neutrino [5].

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.01.2012
Размер файла 1,3 M

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

Введение

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

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

Основные принципы, которые позволяют создавать операционные системы реального времени:

§ Многозадачность - очевидно, что варианты с псевдомногозадачностью (как в системах Windows 3x и Novell Net Ware) неприемлемы, поскольку допускают возможность блокировки или даже полного развала системы одним неправильно работающим процессом. Для предотвращения блокировок вычислений операционная система реального времени должна использовать квантирование времени (то есть использовать вытесняющую, а не кооперативную многозадачность). Как известно, основная проблема, возникающая при создании многозадачных систем - это проблема планирования (диспетчеризации) выполнения задач в системе. Т.е. в любую многозадачную систему должен быть встроен механизм, обеспечивающий устойчивое взаимодействие между задачами, переключение системы между задачами, создание новых задач в системе и уничтожение отработавших задач, без последствий для работы остальной системы. Каждая система использует свой метод диспетчеризации, но наиболее популярные методы - это методы, основанные на приоритетах задач. Суть метода состоит в следующем: каждая задача при запуске получает некоторый приоритет, и в зависимости от используемого в системе алгоритма и приоритета, задача выбирается на исполнение.

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

§ Поддержка сетевых коммуникаций.

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

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

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

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

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

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

На практике зачастую применяют системы "жесткого" реального времени, и как следствие этого, их называют просто системами реального времени.

В данной курсовой работе рассматривается операционная система реального времени QNX.

1. Общие сведения об операционной системе QNX

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

Основным языком программирования в системе является C. Основная операционная система соответствует стандарту POSIX. Это позволяет с небольшими доработками переносить ранее разработанное программное обеспечение в QNX для организации работы в среде распределенной обработки.

1.1 Версии QNX

§ QNX 2.x - это ОС, выпущенная фирмой QSSL в середине 80-х. В настоящее время практически не применяется.

§ QNX 4.2x - наиболее популярная до последнего времени ОС, она же наиболее распространена в России. С ее помощью построено очень много встраиваемых систем, систем SCADA, она очень успешно применяется в решениях задач автоматизации и управления, там где необходима высокая надежность. Эта система была разработана специально для "mission critical appliances" - то есть для применения в критических ситуациях, там где на другие операционные системы нельзя рассчитывать.

§ Neutrino - это новое поколение систем реального времени, поcтpоенных на идеях и аpхитектypе QNX. Realtime Platform (RtP) - cвободно pаcпоcтpаняемый ваpиант QNX Neutrino, котоpый можно cвободно иcпользовать в некоммеpчеcких целях. То есть ее можно беcплатно иcпользовать для теcтиpования, опpобиpования идей, pазpаботки freeware и для пеpcонального пpименения.

Neutrino изначально задyмывалаcь как операционная система для глyбоко вcтpаиваимых cиcтем, вcе делалоcь c тем pаcчетом, чтобы она могла гpyзитьcя откyда yгодно (хоть из постоянного запоминающего устройства), должна pаботать на большом pазнообpазии компьютеpных аpхитектyp. Поэтомy изменена cиcтема загpyзки. Тепеpь вмеcто отдельного ядpа c оcновными пpоцеccами и cкpипта sysinit вcе заделано в один загpyжаемый модyль. Пpичем cиcтема полyчилаcь наcтолько гибкой, что даже можно обойтиcь без менеджеpа пpоцеccов, еcли они не нyжны, оcтавив только одно микpоядpо. В RtP pеализована загpyзка чеpез diskboot, добавлена cиcтема pепозитаpиев. Следует отметить революционную концепцию наноядра, размером всего в 32 Кб.

1.2 Достоинства QNX

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

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

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

Эта технология выражается в следующих принципах.

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

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

Она была создана для yпpавления технологическими пpоцессами (напpимеp, конфетной фабpикой), втоpое пpизвание QNX - встpоенные системы (напpимеp, стиpальная машина). Эти обязанности поpyчили QNX потомy что она является надежной, маленькой и является операционной системой реального времени.

Ресурсов баз данных в QNX тоже более чем достаточно. В качестве представителя сетевых баз выступает db_Vista, а реляционные базы представлены продуктами Watcom SQL и Faircom C-tree. Для любителей dBase существует полностью совместимая со стандартом dBase III/IV база данных OnCmd,которая по причине совместимости с упомянутым пакетом работает недостаточно быстро для QNX, хотя значительно быстрее, чем в DOS. Последнее достижение фирмы Empress - одноименная база данных, которая предоставляет возможности, близкие к Oracle.

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

2. Архитектура операционной системы QNX

Микроядро QNX имеет объем в несколько десятков килобайт (в разных версиях 10Кб, 32Кб и 46Кб). В этом объеме совершаются:

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

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

Рисунок 1. Микроядро.

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

Для прямой связи друг с другом взаимодействующие процессы используют следующие функции языка C:


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

- система пакетной обработки;

- система с разделением времени;

- система реального времени.

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

QNX изначально расшифровывалась как QuickUnix, но фирме QNX Software Systems Ltd пришлось отказаться от этого названия из-за прав на торговую марку Unix фирмы AT&T. Создателем QNX является известная канадская фирма QSSL-QNX Software Systems, Ltd. (ранее Quantum Software Systems Ltd.), вот уже более 20 лет лидирующая на рынке встраиваемых ОС реального времени.

18 мая 2004 года в Государственный реестр сертифицированных средств защиты информации внесён сертификат № 906, удостоверяющий, что защищённая система реального времени QNX 4.25 (КПДА.00002-01) соответствует требованиям руководящих документов Гостехкомиссии России по 3 классу защищённости от несанкционированного доступа (НСД) и 2 уровню контроля отсутствия НДВ.

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

После 2004 года интерес в мире как к QNX, так и к конкурирующим продуктам, начал угасать. QNX сохранила популярность в основном в Японии, Германии, России и, в последнее время, в Китае благодаря активному развитию рынка автомобильной электроники и интегрированных систем управления производством.

Осенью 2007 года компания QNX Software Systems приступила к поэтапному открытию исходного кода QNX Neutrino на условиях лицензии гибридного типа в рамках сообщества Foundry27. Эта лицензия позволяет энтузиастам бесплатно получать доступ не только к исходным текстам операционной системы, но и к инструментальным средствам. При этом для коммерческого использования QNX Neutrino по-прежнему необходимо приобретать соответствующие лицензии. Кроме того, лицензия QNX Neutrino прямо запрещает проведение сертификаций продуктов, производных от исходного кода QNX Neutrino, без письменного разрешения компании QSS.

Последняя версия достаточно современна – она вышла в начале 2000-х годов. По сравнению с предшественницами она предоставляет множество новых возможностей: поддержку разделяемых библиотек, поддержку многопроцессорности, поддержку отличных от x86 аппаратных архитектур, например, SH4, ARM, PowerPC, MIPS и др. Серьезной переработке подверглись сетевая подсистема, графическая система Photon и другие подсистемы ОСРВ. В данной версии появилась возможность простого портирования сетевых драйверов NetBSD в QNX6.

В сентябре 2009 года на портале Foundry27 был создан проект, предназначенный для сопровождения QNX4 в публичной форме.

9 апреля 2010 года канадская компания Research In Motion, владеющая брендом BlackBerry, заключила соглашение о выкупе у компании Harman International подразделения, занимающегося разработкой QNX. В этот же день на сайте Foundry27, появилось объявление, что доступ к исходным кодам QNX для широкой общественности с этого момента ограничен.

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

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

- первичную обработку прерываний и перенаправление их адресатам (редиректор прерываний);

- сетевые взаимодействия (сетевой интерфейс)

Рассмотрим их более подробно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- реализован многозадачный режим;

- быстрое переключение контекста.

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

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

QNX достигает своего уникального уровня производительности, модульность и простоты благодаря двум фундаментальным принципам:

- архитектура на основе микроядра;

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

7. Список использованной литературы

1. Бурукина И.П. Операционные системы реального времени. Учебное пособие / И.П. Бурукина, Пензенский государственный университет, 2011. – 73 с.

3. Деревянко А.С., Солощук М.Н. Операционные системы. Часть II Обзор операционных систем / А.С. Деревянко. – Харьков: НТУ “ХПИ”, 2002. – 331 с.

4. Стальнов А.Ф, Фомин А.И. Операционные системы. Учебное пособие / А.Ф. Стальнов, Военная академия войсковой противовоздушной обороны вооруженных сил РФ, 2005. – 304 с.

Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) QNX. Уже несколько лет занимаюсь разработкой как под эту ОС, так и некоторых частей самой системы. Обратил внимание на то, что поиск на хабре выводит немного результатов по запросу QNX, однако, мне кажется, что эта ОСРВ может быть интересна не только специалистам по встраиваемым и высоконадёжным системам, но и более широкой публике. Не секрет, что планшетный компьютер BlackBerry PlayBook производства компании RIM основан на QNX и имеет популярность и у нас.

Немного о QNX

QNX 4.25 (КПДА.00002-01). Файловый менеджер.

В конце 90-х стала развиваться новая ветка QNX — QNX6 или QNX Neutrino. Это современная версия ОСРВ, которая вышла в самом начале 2000-х и привнесла много нового в QNX: поддержку отличных от x86 аппаратных архитектур (MIPS, PowerPC, ARM, SH4), поддержку многопроцессорности, поддержку разделяемых библиотек и т.д. Были переработаны подсистемы ОСРВ, например, графическая система Photon и сетевая подсистема. К слову, теперь существует возможность достаточно простого портирования сетевых драйверов NetBSD в QNX6.

О QNX как таковом можно написать очень и очень много хороших и тёплых слов, чему способствует модульная структура, высокая надёжность, простота разработки под эту ОС, отличное встроенное справочное руководство, и многое-многое другое. Но наверное не стоит так сразу перехваливать?

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

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

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

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

Состав QNX6

  • QNX Neutrino — включает в себя микроядро (даже набор микроядер), драйверы, утилиты, графическую среду и т.д. для поддерживаемых аппаратных платформ (x86, MIPS, PowerPC, ARM, SH4).
  • QNX SDP (Software Development Platform) — включает в себя среду разработки Momentics IDE на базе Eclipse, компиляторы, заголовочные файлы и библиотеки для разработки, а также QNX Neutrino.

На всякий случай, уточню, что операционной системой является QNX Neutrino, а QNX SDP это средства кроссплатформенной разработки для QNX Neutrino.

ПО для QNX Neutrino

В дистрибутив QNX6 входят помимо микроядра и драйверов ряд консольных утилит, как специфичных для QNX, так и общих для всех UNIX-подобных систем. Помимо этого присутствует графическая подсистема на базе Photon 2.0. Это самостоятельная графическая среда, которая не совместима ни с Windows, ни с X-Window. Однако, существует системный сервис XPhoton, который позволяет запускать графические приложения использующие X-протокол.

Для QNX6 доступны и другие графические среды, которые основаны на технологиях Adobe Flash Lite 3 (доступен отдельно) или Qt/Embedded (на данный момент в Foundry27 доступна версия 4.7.1).

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

QNX6 поддерживает спецификации POSIX, а значит не должно составить большого труда собрать в QNX грамотно написанный код на языке C. Что, кстати, я делал неоднократно.

Типы лицензий QNX6

  • Коммерческая лицензия предполагает покупку ОСРВ QNX6 у дистрибьютора. Это необходимо делать в случае коммерческой разработки устройств или ПО на базе QNX.
  • Академическая лицензия предоставляется вузам для обучения студентов и работы преподавателей.
  • Пробная лицензия (на 30 дней) позволяет ознакомиться с полнофункциональной версией QNX и средой разработки, чтобы оценить целесообразность приобретения ОСРВ.
  • Некоммерческая лицензия позволяет работать с QNX и вести некоммерческую разработку.

Переходим на страницу Non-commercial developers. На первом шаге предлагают скачать QNX SDP под ту инструментальную платформу, в которой планируется вести разработку. Сейчас этот шаг можно пропустить и сразу перейти к шагу два (ниже). Надо отметить, что Вы согласны с лицензионным соглашением (если Вы действительно согласны), проверить, что указанные данные верны, и нажать кнопку Submit. После этого лицензия будет выслана на указанный адрес электронной почты.

Заключение

Сначала я хотел написать заметку об установке QNX, но так увлёкся введением, что понял — если я напишу ещё и про установку, то мало кто захочет дочитать всё это до конца. В связи с этим, наверное, мне стоит извиниться, что в заметке так мало интересных технических деталей. С другой стороны, наверное, я подготовлю отдельную заметку по установке QNX и не только на x86 ПК. А может быть и не только по установке. А если вдруг кто-то попросить описать какую-то технологию QNX или тему связанную с QNX, то я постараюсь пойти навстречу.

Читайте также: