Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

В 1982 году QNX попала под запрет комитета COCOM, как технология двойного назначения. Этот запрет был снят в 1990 году, однако жёсткая по-

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

тема не получила широкого распространения.

На сегодняшний день единственным ограничением на широкое исполь-

зование QNX является высокая стоимость лицензии и сильная зависимость от QSSL в плане лицензирования разработанного программного обеспечения.

Но, тем не менее, она занимает лидирующую позицию среди ОС реального времени на платформе ПК.

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

Наиболее ярким примером применения QNX является работа с кре-

дитными карточками VISA во всех региональных офисах Северной Америки.

Управление ядерным реактором. Одно из отделений канадской ком-

пании Atomic Energy of Canada Ltd., которая известна как разработчик, про-

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

этим отделением разработана система управления ядерным реактором, кото-

рая называется «Распределённая система управления с открытой архитекту-

рой» (Open Architecture Distributed Control System).

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

слеживания хода экспериментов.

Cisco Systems использует оптимизированную версию микроядра

QNX Neutrino в программном обеспечении IOS XR. Программный пакет IOS XR предназначен для управления коммутаторами Cisco CRS-1, обеспечивает непрерывный режим работы и поддерживает развитые функции управления терабитными коммутаторами с распределённой архитектурой.

На март 2009 года решения на базе QNX лицензированы для исполь-

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

дущих производителей автомобилей, включая BMW, Chrysler, Daimler, Fiat,

101

Ford, General Motors, Honda, Hyundai, Mazda, Mitsubishi, Nissan, Saab, SsangYong, Toyota и Volkswagen. В частности такие автомобили выпускаются под марками Acura, Alfa Romeo, Audi, Buick, Cadillac, Chevrolet, Dodge, Honda, Hummer, Infiniti, Jeep, Lancia, Mini, Mercedes, Opel, Pontiac, Saturn и др.

В России и СНГ QNX применения в промышленных системах, которые управляют довольно сложным и ответственным производством с очень вы-

сокими требованиями по времени реакции на аварийные ситуации, требова-

ниями к надёжности и непрерывности управления.

Наиболее крупными конкурентами QNX являются: Windows CE, VxWorks, OS-9, Integrity, LynxOS а также некоторые ОС на ядре Linux.

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

ОС QNX Neutrino строится на основе компактного микроядра, способ-

ного управлять группой взаимодействующих процессов. Как видно на рис.39

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

«игроков» взаимодействуют в ней между собой посредством координирую-

щего ядра, чем иерархию.

ОС QNX Neutrino действует как своего рода « программная шина», по-

зволяющая динамически присоединять/ отсоединять модули ОС по мере не-

обходимости.

Ядроэто сердце любой операционной системы. В некоторых системах

«ядро» несет столько функций, что оно уже само по себе является целой опе-

рационной системой [15]. Но микроядро в ОС QNX Neutrino – это истинное ядро, потому что, во-первых, как и ядро исполнительного модуля реального времени, оно очень компактного, а во-вторых, оно предназначено для выпол-

нения только нескольких базовых функций:

102

управление потоками (thread services) посредством POSIXприми-

тивов для создания потоков;

управлениясигналами(signalservices)посредствомпримитивовсигналов;

обмен сообщениями (message-passing services) , с помощью которо-

го микроядро выполняет трассировку всех сообщений, пересылаемых между

всеми потоками внутри системы;

синхронизация (synchronization serviсes) посредством примитивов синхронизации потоков;

планирование (scheduling services), с помощью которого микроядро осуществляет планирование потоков в реальном времени на основе различ-

ных алгоритмов;

управление таймерами (timer services) , помощью которого микро-

ядро обеспечивает большой набор POSIXтаймеров;

управление процессами (process management services), выполняемое администратором процессов, вместе с которым ядро образует единый мо-

дуль procnto. Администратор процессов предназначен для управления про-

цессами, памятью и пространством имен путей (pathname space).

 

 

 

Файловый адм.

Файловый адм.

Файловый адм.

 

 

 

флеш-памяти

 

 

 

QNX4

 

CD-ROM

 

 

 

 

 

 

 

Минимальный

Администра-

 

Файловый адм.

Файловый

 

тор процессов

 

адм.NFS

 

загружаемый

 

 

DOS

 

 

 

модуль procnto

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Микроядро

 

Программная шина

 

 

 

Neutrino

 

 

 

 

 

 

 

 

 

 

 

 

Администра-

 

Администра-

 

Файловый

 

 

 

тор TCP/IP

 

тор Mqueue

 

адм. CIFS

 

 

Адм. граф.

 

Адм. симв.

 

Приложение

 

Файловый

 

польз. интерф.

ввода/вывода

 

 

 

адм. Qnet

 

Photon

 

 

 

 

 

 

Рис.39 Архитектура ОС QNX Neutrino

103

В отличие от потоков, микроядро никогда не планируется на выполне-

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

ра, при возникновении исключения или в результате аппаратного прерывания.

Все службы ОС, за исключением тех, которые выполняются обяза-

тельным модулем микроядра/ администратора процессов (procnto), обраба-

тываются посредством стандартных процессов. Система может содержать следующие компоненты:

Администраторы файловых систем;

Администраторы устройств символьного ввода/вывода;

Графический пользовательский интерфейс (Photon);

Сетевой администратор;

Стек протоколов TCP/IP.

Системные процессы, по сути, никак неотличимы от пользовательских процессов - они используют те же самые унифицированный службы про-

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

ского процесса, имеющего соответствующие привилегии.

Именно такая архитектура дает ОС QNX Neutrino уникальные возмож-

ности расширяемости. Поскольку большинство служб ОС выполняются стан-

дартными системными процессами, конфигурация ОС может быть легко до-

полнена новыми компонентами , для чего достаточно написать соответст-

вующие программы, предназначенные для выполнения новых служб.

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

сами для клиентских задач.

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

тие файлов и чтение или запись данных. Оба сервера действуют аналогич-

ным образом в том смысле, что они обеспечивают программный интерфейс

(на основе обмена сообщениями), с помощью которого клиенты получают

104

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

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

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

Для разработчиков, создающих специализированные встроенные системы,

это дает гибкие возможности расширения ОС в соответствии с требованиями разрабатываемых ими приложений и избавляет от необходимости обращать-

ся к исходному коду ОС,

Драйверы устройств позволяют ОС и прикладным программам согла-

сованно использовать базовое оборудование компьютера (например, жесткий диск, сетевой интерфейс). Если в большинстве ОС драйверы устройств должны быть встроены в структуру ОС, в QNX Neutrino они могут запус-

каться и останавливаться как стандартные процессы. В результате добавле-

ние новых драйверов устройств не нарушает работу какой-либо части ОС,

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

QNX Momentics IDE - Интегрированная среда разработки приложений для операционной системы QNX Neutrino (рис.40). QNX Momentics IDE

представляет собой профессиональный комплект разработчика, который поддерживает различные языки программирования (С, С++, Embedded С++ и Java), различные инструментальные ОС (Windows, Linux, или QNX Neutrino)

и различные целевые процессоры (ARM, MIPS, PowerPC, SH-4 и x86) и по-

зволяет существенно сократить время разработки встраиваемого проекта не-

зависимо от его масштаба и сложности.

Для разработки нестандартных драйверов применяются комплекты раз-

работки драйверов (DDK), содержащие большую базу исходных текстов и

105

готовых шаблонов. Отладка приложений вместе с драйверами выполняется с помощью одного и того же графического символьного отладчика [15].

Рис.40. Структура и функции QNX Momentics IDE

QNX Momentics IDE позволяет оптимизировать производительность приложений с использованием профайлера приложений и анализатора ОЗУ,

которые тесно интегрированы с остальными инструментами среды разработ-

ки. Системный профайлер и отладочная версия микроядра позволят визуаль-

но отслеживать проблемы синхронизации, взаимные блокировки и прочие часто возникающие ошибочные ситуации (рис. 41.).

Рис. 41. Профилирование кода

106

Для выполнения системного профилирования в состав QNX Momentics IDE входит пакет System Analysis Toolkit (SAT). В операционной системе происходят различные события, все они так или иначе проходят через микто-

ядро, поэтому основу SAT составляет модуль provnto-instr – Администратор процессов, с которым скомпоновано микроядро, оборудованное средствами диагностики. QNX утверждает, что производительность «истументированно-

го» микроядра составляет не менее 98% производительности обычного мик-

роядра. Средства, входящие в инструментальное расширение микроядра, за-

писывают информацию о системных событиях в специальных буферах ядра

(буферах трассировки) в виде записей (рис. 42).

Рис.42. Системное профилирование

Средства сбора данных извлекают информацию из буферов трассиров-

ки в специальный файл журнала трассировки, который для увеличения ско-

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

107

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

няться тремя способами:

1. С помощью утилиты qconn. В этом случае в качестве средства сбора данных используется утилита qconn, которая может на выбор сохранять дан-

ные в журнале трассировки на целевой системе или сразу отправлять их в виде потока средству визуализации – перспективе QNX System Profiler ин-

тегрированной среды разработки. Важным достоинством этого способа явля-

ется возможность ограничивать перечень регистрируемых событий трасси-

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

2. С помощью утилиты tracelogger. Утилита сохраняет данные в журна-

ле трассировки. Для конвертирование данных в форму, удобную для чтения,

следует или воспользоваться утилитой traceprinter, или написать свою про-

грамму обработчки журнала трассировки (в составе SAT есть специальная библиотека), или воспользоваться перспективой QNX System Profiler.

3. Управлять процессом трассировки из своего приложения, используя функцию TraceEvent(). Данные будут извлекаться из буферов трассировки в журнал с помощью утилиты tracelogger. Этот метод позволяет весьма тонко настраивать процесс трассировки.

По умолчанию и утилита tracelogger, и qconn заказывают у proc-instr 32

буфера. Каждый из буферов состоит из 1024 слов по 16 байт (т.е. каждый бу-

фер имеет размер 16 кбайт). Событие ядра, для описания которого достаточ-

но одного слота, называют fast. Те события, для описания которых недоста-

точно одного слота, называют wide.

Для управления трассировкой можно задавать фильтры:

режим fast, wide. Fast указывает, что информация о wide-событиях должна обрезаться до размера fast. Это позволяет сэкономить слоты и увели-

чить скорость трассировки. Режим fast задан по умолчанию.

108

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

ский фильтр – это программа, использующая вызовы функции TraceEvent().

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

Midnight Commander — один из старейших файловых менеджеров в мире *NIX-систем [16]. Несмотря на то, что технологии давно ушли вперед, и

жизнь без графического интерфейса существует только у системных админи-

страторов, программа продолжает развиваться и по-прежнему остается вос-

требованной среди пользователей Linux и QNX (рис.43).

Рис.43. Файловый менеджер Midnight Commander

Для работы Midnight Commander не требуется никаких графических библиотек, главное, чтобы всегда под рукой была консоль/терминал. Ранние версии файлового менеджера имели проблемы с русскими кодировками, но

109

сегодня все ошибки исправлены, и вы можете просматривать и редактиро-

вать файлы, используя кодовые страницы, не совпадающие с локалью Linux.

Текстовый редактор Midnight Commander имеет подсветку синтаксиса.

Во времена Norton Commander, создание обширного меню пользова-

тельских команд было весьма популярным явлением. Midnight Commander

обладает аналогичной функцией, вызываемой все той же заветной клавишей

F2. Если вы нажмете в меню F4, то сможете отредактировать текстовый файл его настроек.

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

ния. Любопытно, но Midnight Commander, не умея просматривать документы типа RTF, отлично справляется с DOC. А ведь DOC — это закрытый формат,

имеющий структуру на порядок сложнее документа «со сложным формати-

рованием» (Rich Text Format).

Midnight Commander позволяет создавать закладки, имеет историю по-

сещения каталогов. В отличие от других программ, где подобные элементы чаще реализованы в виде компактных, малоинформативных меню, Midnight Commander позволяет добавлять подробные описания элементам и отобра-

жает их в большом окне.

Если запускается какой-нибудь длительный процесс, например, копи-

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

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

110