Ayaklimat.ru

Климатическая техника
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Qnx операционная система установка

Qnx операционная система установка

QNX — компания легендарная и во многом загадочная, как, впрочем, и сама система. Загадочная, потому что продукция этой компании, операционная система QNX, использовалась и используется в самых критических и стратегических областях, таких как аэрокосмическая промышленность, энергетика, в том числе и ядерная, а также (насколько об этом можно судить) в военных разработках. Легендарной же QNX можно назвать хотя бы по той простой причине, что в течение двадцати лет у этой системы реального времени нет и никогда не было сколько-нибудь значительного конкурента. Все эти встроенные Linux и DOS, не говоря о Windows, даже и не приближались к лидеру в плане надежности кода и устойчивости интерфейсов.

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

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

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

QNX Neutrino. «Крепкий орешек» v.6.2.1

Долгие годы QNX была системой стратегического значения, не предназначавшейся не только для экспорта, но даже и для того, чтобы быть темой для пресс-релизов. Считалось, что «все, кому нужно, знают все, что им нужно». Но рынок, даже для критических систем, существует, и, пока вы расслабляетесь, конкуренты не оставляют попыток занять ваше место. Поэтому, а также по причине упомянутой конверсии, QNX стала выходить из тени — и в результате код и среда разработки стали доступны для обозрения мировому сообществу.

Официально QNX называется RTOS, Run Time Operating System. В основе QNX, как и раньше, лежит компактное и стабильное настоящее микроядро. Поскольку система рассчитана на 100-процентно бесперебойную работу, то архитектура ядра и окружения предполагает динамическую конфигурацию — установка и удаление драйверов, сетевых протоколов, файловых систем, оконных интерфейсов и т. п происходит в режиме «hot plug», без прекращения работы. Все перечисленные компоненты работают в отдельных адресных пространствах, без типичных для других систем «оптимизаций» по заносу подключаемых компонент в монолитное или составное ядро. Как следствие — QNX умеет восстанавливать себя практически после любого программного сбоя, любой компонент может быть «признан недействительным» и повторно запущен. Существуют точки восстановления, «неразрушающей перезагрузки», после которой система блокирует участки кода, которые вызвали сбой (исключение), и продолжает работу без потери состояния, очистки памяти и инициализации процессора.

Истинное микроядро

Что включает в себя микроядро? Предельно ограниченный набор функций — девизом разработчиков явно было «что мы еще можем оттуда убрать», а не «что мы еще можем туда вставить». Оставшиеся сервисы: управление потоками выполнения, взаимодействие потоков (IPC), примитивы синхронизации. Все остальное, включая драйверы, сетевые протоколы и приложения любого уровня, работает как отдельные процессы, сообщаясь с ядром с помощью синхронных сообщений.

Сообщения передаются через «шину сообщений», по которой проходят все сигналы по подключению и отключению программных компонент «на лету». Следствие из общей шины сообщений — это экстраполяция локального IPC на процессорные кластеры. Если одно ваше приложение вызывает другое через системный вызов (а иных возможностей фактически и нет), то IPC прозрачно транслируется на другой процессор — и в результате приложения общаются тоже прозрачно. Применение кластерного механизма — доступ к ресурсам другого процессора, такого как файловые системы, устройства или сетевые подключения, без включения сетевых протоколов (кроме встроенного в ядро протокола Qnet). На основе такого доступа можно строить экстремально «тонкие» клиенты, все ресурсы получающие по сети. Протокол Qnet будет осуществлять маршрутизацию и баланс сетевого трафика — прозрачно для приложений. Сам Qnet работает практически через любую среду, например Ethernet или Internet (конечно, такой IPC будет крайне зависимым от среды).

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

Подальше от спутников, поближе к «чайникам»

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

Для этого был создан несколько аскетический, но вполне приятный и самодостаточный интерфейс пользователя — Photon MicroGUI. Он предоставляет все основные примитивы графической оконной системы: окна, кнопки, меню и так далее. Позднее появление этой оболочки сыграло положительную роль — в нее изначально были заложены современные идеи, так сказать «символы» XXI века: полная поддержка Unicode, «плугабельно-скинабельный» интерфейс (то есть как внешний вид, так и функциональность штатно могут быть изменены во время работы), встроенный интерфейс с Java (Java получает отдельные окна в качестве своего viewpoint).

Совместимость? Без проблем

Первоначально QNX 6 задумывалась как POSIX-совместимая система — POSIX API был реализован на самом раннем этапе, так что нет никакой «библиотеки POSIX-совместимости» или чего-то подобного. Если вы привыкли к программированию в Unix или Linux, можете продолжать в том же духе и под QNX, проблем не возникнет. Помимо прочего, «родной» POSIX занимает меньше места в памяти и быстрее работает.

Среда разработки — плацдарм атаки на TTM

Что сегодня особенно важно на рынке ПО — это сокращение времени выхода на рынок (TTM, Time To Market). Для быстрого создания новых приложений необходима «дружественная» среда разработки приложений. Пренебрежение этим фактом делает продвижение среды или технологии весьма проблематичным. Например, отсутствие (или недостаток) комфортабельных условий для разработки сдерживает разработку под Plan9 — хотя с технической стороны эта система дает фору многим другим «исторически сложившимся» системам.

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

Eclipse — пришелец из открытых систем

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

Одним из самых перспективных кандидатов среди «контрибьюшинов» в сфере разработки ПО был и остается Eclipse — IDE-среда разработки, созданная на базе оболочки Websphere Studio Workbench компании IBM. Eclipse написан на Java — таким образом, проблема переносимости и универсальности этой среды решена изначально. Модульная архитектура Eclipse позволяет разработчикам и потребителям этой технологии свободно модифицировать, встраивать и добавлять возможности без перекомпиляции всего кода, адаптируя возможности Eclipse под свои нужды.

Кросс-разработка? Un Momentics

Мудрым решением, с точки зрения разработчиков, стало использование Eclipse в качестве новой среды для разработки под QNX. «Мод» получил название Momentics и был полностью интегрирован в поставку «QNX для разработчиков» — загружаемый «диск разработчика» включает все компоненты среды разработки. Существует как коммерческая его версия, так и версия для частного и ознакомительного использования. Последняя отличается более скромным набором поддерживаемых платформ.

Основные особенности Momentics, унаследованные от Eclipse, это возможность подключать модули для различных целевых процессоров (x86, MIPS, PowerPC, ARM, StrongARM, XScale, SH-4), различных языков программирования (C, C++, Embedded C++, Java) и различных платформ разработчика (Windows, Solaris или в собственном режиме под QNX Neutrino). Помимо прочего, Momentics располагает согласованным под всеми платформами интерфейсом, построенным по принципу «передачи токена внимания» (то есть нужные инструменты и окна всплывают по мере необходимости).

Хотя набор возможностей Momentics может показаться аскетическим, по мере работы вы обнаружите, что под простым интерфейсом скрыто гораздо больше, чем кажется на первый взгляд. В частности, реализованы QNX-специфические Wizards, сквозной поиск теста в проекте (типа Find in Files), управление проектами и ставший в открытых системах стандартом де-факто механизм групповой разработки и контроля версий CVS.

Все это позволяет работать на очень профессиональном уровне: автоматически генерировать проекты, откатывать файлы и целые проекты целиком, исследовать системные состояния потоков и счетчиков, блокировки (особенно важный параметр для RTOS!), очереди сообщений.

Особое отличие среды Momentics (как, впрочем, и Eclipse или Sun ONE Studio) — это немодальная отладка. То есть вы можете выполнять один или несколько фрагментов кода, причем они могут выполняться на разных «целевых» платформах и быть написанными на разных языках. Дополнительные опции — подключение к уже запущенному процессу и анализ дампа «свалившегося» процесса. Естественно, поддерживаются все типы отладки: точки останова, пошаговое прохождение, просмотр стека и переменных.

Визуальные возможности — такие как список «ToDo», формируемый на основе возникших ошибок компиляции, подсказки при наведении курсора на переменные, сохранение рабочей области и прочие «радости разработчика» — будут хорошо знакомы вам по другим известным IDE. Кроме того, в наличии все средства редактора: раскраска, автоотступы, отображение структуры проекта (файлов, классов, модулей), автодополнение ввода и т.д.

Помимо основных средств кроссплатформенной компиляции, Momentics снабжен несколькими инструментами, специфичных для отладки встроенных систем. Уникальный инструмент — сборщик загрузочных образов, собирающий все необходимые библиотеки и файлы вашего проекта для записи на загрузочный CD или для прожигания на ROM-диск. При этом отслеживаются зависимости библиотек: все нужные библиотеки будут включены, все ненужные функции из них будут удалены — это особенно важно, если объем памяти целевой платформы ограничен.

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

exit (0);

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

QNX и Virtual PC

Как-то в статье о VMWare (К+П, № 3/2003) я допустил ошибку — сказал, что QNX работает в этой среде, за что получил замечание от внимательного читателя. Совершенно верно: QNX не работает под VMWare, он работает под Virtual PC — имейте это в виду, если это для вас важно.

Внимание! Хотя QNX способна работать на самых непритязательных «камнях», под VPC она почему-то очень любит «поедать» такты вашего процессора. VPC по определению не может получить больше 50% среднестатистической мощности в фоновом режиме — но в режиме переднего плана, даже без фокуса ввода, претендует на все 100%. Так что, запуская QNX под Virtual PC, не стоит уводить VPC в фон и параллельно играть в игры, воспроизводить MP3, смотреть кинофильмы или запускать архиватор — в противном случае вы рискуете повесить «вычислители» в QNX, в частности менеджер пакетов, интенсивно использующий ресурсы процессора для разархивации.

QNX в России

Если вы думаете, что все описанное — далеко и недоступно, вы ошибаетесь. Система QNX активно продвигается на просторах СНГ и, в частности, в России. Интересы QNX на всем постсоветском пространстве с 1996-го года представляет компания SWD Software Ltd. Эта же компания проводит ежегодную конференцию «QNX-Россия».

QNX и базы данных

Одним из самых критических приложений для разработчика является система управления базами данных, RDBS. Поэтому нелишним будет знать, что QNX изначально поддерживает RDBMS Empress (производимую одноименной компанией — Empress Software). Эта RDBMS изначально создавалась для QNX — и, следовательно, была оптимизирована для встроенных приложений и ограниченных ресурсов. Тем не менее, система поддерживает методы доступа SQL, ODBC и JBDC и обладает всеми признаками «взрослых» СУБД.

QNX: Как надо делать операционные системы

Что общего между кухонным комбайном, станком с ЧПУ, атомной электростанцией и спутником связи? Кроме того, что во всех этих устройствах присутствует электроника, еще и то, что эта электроника работает под управлением одной операционной системы — QNX.

Эта ОС, обладающая уникальной масштабируемостью, была недавно установлена на тестовой системе у нас в редакции. Результаты общения с ней легли в основу этой статьи.

Для начала несколько слов о том, что же такое QNX. Это UNIX-подобная ОС реального времени, основанная на микроядре. Микроядро является, пожалуй, одной из самых интересных частей QNX. Оно отличается интересной архитектурой, неплохими показателями быстродействия, предоставлением интересных сервисов приложениям; кроме того, оно ответственно и за возможность работы в реальном времени. В QNX реализованы все системные вызовы, необходимые по стандарту POSIX.

Микроядро имеет объем менее 32 Кб, т. е. это одно из самых маленьких ядер среди всех существующих операционных систем. В этом объеме помещаются:

— блок передачи сообщений (IPC — межпроцессное общение);

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

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

— менеджер процессов (Proc);

— менеджер файловой системы (Fsys);

— менеджер устройств (Dev);

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

Блок передачи сообщений занимается пересылкой сообщений между процессами и является одной из важнейших частей операционной системы, так как все общение между процессами, в том числе и системными, происходит через сообщения. Система QNX, часто применяемая во встраиваемых системах, имеющих ограниченные ресурсы, использует несколько хитростей для уменьшения нагрузки на процессор и уменьшения количества используемой памяти. Рассмотрим, как происходит общение “процесса А” и “процесса Б”. Обычно сеанс передачи сообщения от “процесса А” “процессу Б” состоит из следующих шагов: “процесс А” выполняет процедуру Send() и посылает сообщение “процессу Б”, в этот момент “процесс А” блокируется на передачу и не может посылать сообщений. “Процесс Б” в какой-то момент выполняет функцию Receive() и принимает посланное ему сообщение. Начиная с этого момента “процесс Б” становится заблокированным на прием и не может принимать сообщения. “Процесс Б” обрабатывает полученное сообщение и выполняет процедуру Reply(), посылая ответ “процессу А”, после чего “процесс Б” снова может принимать сообщения, но не может посылать ответы, пока “процесс А” не получит направленный ему ответ. “Процесс А” получает ответ и после этого снова может посылать сообщения, а “процесс Б” посылать ответы. При этом посылаемые сообщения и ответы находятся в теле отправляющего их процесса до того момента, когда они могут быть приняты. Это значит, что, с одной стороны, уменьшается вероятность повреждения сообщения в процессе передачи, а с другой — уменьшается объем оперативной памяти, необходимый для работы ядра. Кроме того, уменьшается число пересылок из памяти в память, что разгружает процессор. Особенностью процесса передачи сообщений является то, что в сети, состоящей из нескольких компьютеров под управлением QNX, сообщения могут прозрачно передаваться процессам, выполняющимся на любом из узлов.

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

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

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

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

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

Сетевой интерфейс в системе QNX является неотъемлемой частью ядра. Он, конечно, взаимодействует с сетевым адаптером через сетевой драйвер, но базовые сетевые сервисы реализованы на уровне ядра. При этом передача сообщения процессу, находящемуся на другом компьютере, ничем не отличается с точки зрения приложения от передачи сообщения процессу, выполняющемуся на том же компьютере. Благодаря такой организации сеть превращается в однородную вычислительную среду, наконец-то оправдывая русскоязычный вариант названия — “Локальная вычислительная сеть”. При этом для большинства приложений не имеет значения, с какого компьютера они были запущены, на каком исполняются и куда поступают результаты их работы. В наших тестах удалось создать ситуацию на двух компьютерах, когда задача была запущена с (условно назовем) “компьютера А” на “компьютере Б”, при этом весь вывод на экран задача осуществляла на экран “компьютера А”, а на “компьютере Б” была запущена программа, показывавшая содержимое экрана “компьютера А”. Код для обеспечения сетевого взаимодействия в приложении становится ненужным, скорее потребуется специальный код для определения, работает приложение на одном компьютере или на нескольких, и если на одном, то на каком именно.

Несколько слов о файловой системе. QNX — ОС реального времени, и одним из критических и медленных ресурсов является жесткий диск. Поэтому необходимо использовать надежную высокоэффективную файловую систему и эффективно работать с ней. В QNX реализована файловая система, основанная на экстентах (extent). Для обеспечения высокой скорости работы с диском запросы на запись сортируются, и запись производится за один проход блока головок по диску. Кроме того, применяется буферизация (кэширование), есть специальный режим для временных файлов, к которым происходит частое обращение, — эти файлы хранятся в буфере в памяти и записываются на диск только в случае острой необходимости. Но вся важная системная информация, такая, как блоки расширения и файлы карты занятых блоков, записывается в обход буфера и вне очереди. В менеджер файловой системы встроена возможность создания в ОЗУ “диска”, работа с которым реализована через стандартные средства передачи сообщений, что еще более повышает его эффективность.

Нас приятно поразили минимальные требования к аппаратному обеспечению — для нормальной работы QNX требуется компьютер с процессором 386 или выше и 1 Мб оперативной памяти. При использовании QNX на файл-сервере рекомендуется использовать 4 Мб ОЗУ. Существует версия ядра под названием Neutrino, которой для исполнения достаточно всего 64 Кб памяти. Очень нехарактерен для нашего времени объем, занимаемый этой системой на жестком диске, — вся система с графической оболочкой умещается в 15 Мб, а комплект, состоящий из системы разработки (Watcom C++) и комплекта для разработки приложений, запускаемых из графической системы Photon, заняли еще около 100 Мб. Кстати, графическая оболочка Photon на компьютере с процессором 486DX-2/66 загружается менее 10 с.

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

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

В заключение хочется выразить благодарность фирме SWD Real Time Systems, единственному российскому дистрибьютору фирмы QNX, предоставившему нам операционную систему, инструменты разработчика, а также сделавшую прекрасный русификатор для операционной системы QNX.

QNX — QNX

QNX ( / ˌ к Ju ˌ ɛ п ɛ к ы / или / к Ju п ɪ к с / ) является коммерческим Unix-подобных операционных систем реального времени , направленный в первую очередь на встроенных систем рынка. QNX была одной из первых коммерчески успешных операционных систем на базе микроядра . По состоянию на 2020 год он используется на различных устройствах, включая автомобили и мобильные телефоны .

Продукт был первоначально разработан в начале 1980-х годов канадской компанией Quantum Software Systems , позже переименованной в QNX Software Systems . В конечном итоге компания была приобретена BlackBerry Limited в 2010 году.

СОДЕРЖАНИЕ

Описание

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

Чтобы продемонстрировать возможности и относительно небольшой размер ОС, в конце 1990-х QNX выпустила демонстрационный образ, который включал POSIX-совместимую ОС QNX 4, полный графический пользовательский интерфейс, графический текстовый редактор, сеть TCP / IP, веб-браузер и веб-сервер, который все помещается на загрузочную дискету 1,44 МБ для ПК 386.

QNX Neutrino (2001) был перенесен на ряд платформ и теперь работает практически на любом современном семействе центральных процессоров (ЦП), которое используется на рынке встраиваемых систем. Сюда входят PowerPC , x86 , MIPS , SH-4 и тесно взаимосвязанные ARM , StrongARM и XScale .

QNX предлагает лицензию для некоммерческих и академических пользователей.

BlackBerry PlayBook планшетный компьютер разработан BlackBerry использует версию ОС QNX в качестве основной операционной системы. Устройства BlackBerry под управлением операционной системы BlackBerry 10 также основаны на QNX.

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

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

Операционная система QNX также содержала веб-браузер, известный как «Вояджер».

История

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

Одно из первых широко распространенных применений ОС реального времени QNX (RTOS) было в мире без встроенных систем, когда она была выбрана в качестве операционной системы для собственной компьютерной системы системы образования Онтарио , Unisys ICON . На протяжении многих лет QNX использовался в основном для более крупных проектов, поскольку его ядро ​​44k было слишком большим, чтобы поместиться в однокристальные компьютеры того времени. Система заработала репутацию надежной и стала использоваться в оборудовании во многих промышленных приложениях.

В конце 1980-х Quantum осознал, что рынок стремительно движется к модели интерфейса переносимой операционной системы ( POSIX ), и решил переписать ядро, чтобы оно было более совместимо на низком уровне. В результате появился QNX 4. За это время Патрик Хайден , работая стажером, вместе с Робином Бургенером (в то время штатным сотрудником) разработали новую оконную систему. Эта запатентованная концепция была развита во встраиваемый графический интерфейс пользователя (GUI) под названием QNX Photon microGUI. QNX также предоставил версию X Window System .

К концу 1990-х компания, тогда называемая QNX Software Systems, начала работу над новой версией QNX, разработанной с нуля для поддержки симметричной многопроцессорной обработки (SMP) и для поддержки всех текущих интерфейсов прикладного программирования POSIX (API-интерфейсы). ) и любых новых API POSIX, которые можно было бы ожидать при сохранении архитектуры микроядра. Результатом стал QNX Neutrino, выпущенный в 2001 году.

Вместе с ядром Neutrino компания QNX Software Systems стала одним из основателей консорциума Eclipse ( интегрированная среда разработки ). В 2002 году компания выпустила набор подключаемых модулей Eclipse, поставляемых вместе с рабочей средой Eclipse, под названием QNX Momentics Tool Suite.

В 2004 году компания объявила, что была продана Harman International Industries. До этого приобретения программное обеспечение QNX уже широко использовалось в автомобильной промышленности для телематических систем. С момента покупки компанией Harman программное обеспечение QNX было разработано более чем для 200 различных марок и моделей автомобилей , в телематических системах, информационно-развлекательных и навигационных устройствах. По состоянию на середину 2011 года платформа приложений QNX CAR использовалась более чем на 20 миллионах автомобилей. С тех пор компания выпустила несколько промежуточных продуктов, включая QNX Aviage Multimedia Suite, QNX Aviage Acoustic Processing Suite и QNX HMI Suite.

Микроядра IOS-XR от Cisco Systems ( IOS сверхвысокой доступности, представленная в 2004 г.) и модульность программного обеспечения IOS (представленная в 2006 г.) основаны на QNX.

В сентябре 2007 года QNX Software Systems объявила о доступности некоторого исходного кода .

9 апреля 2010 г. Research In Motion объявила о приобретении QNX Software Systems у Harman International Industries. В тот же день доступ к исходному коду QNX был ограничен для публики и любителей.

В сентябре 2010 года компания анонсировала планшетный компьютер , на BlackBerry PlayBook и новой операционной системы BlackBerry Tablet OS , основанной на QNX для запуска на планшете.

18 октября 2011 г. компания Research In Motion объявила о выпуске BBX, который позже был переименован в BlackBerry 10 , в декабре 2011 г. Устройства Blackberry 10 основаны на операционной системе BlackBerry PlayBook QNX для сенсорных устройств, но адаптируют пользовательский интерфейс для смартфонов с помощью Фреймворк для собственного пользовательского интерфейса Cascades на основе Qt .

На Женевском автосалоне Apple продемонстрировала CarPlay, который обеспечивает интерфейс пользователя, похожий на iOS, для головных устройств в совместимых автомобилях. После настройки автопроизводителем QNX можно запрограммировать на передачу своего дисплея и некоторых функций устройству Apple CarPlay.

11 декабря 2014 года Ford Motor Company заявила, что заменит Microsoft Auto на QNX.

В январе 2017 года QNX объявила о предстоящем выпуске своего SDP 7.0 с поддержкой 32- и 64-разрядных платформ Intel и ARM и поддержкой C ++ 14 . Он был выпущен в марте 2017 года.

Проблема безопасности

В августе 2021 года было объявлено об уязвимости высокого риска в старых версиях QNX.

Технология

Ядро QNX procnto содержит только планирование ЦП , межпроцессное взаимодействие , перенаправление прерываний и таймеры. Все остальное работает как пользовательский процесс, включая специальный процесс, известный как proc процесс создания и управления памятью , работая совместно с микроядром . Это стало возможным благодаря двум ключевым механизмам: межпроцессному взаимодействию типа вызова подпрограмм и загрузчику, который может загружать образ, содержащий ядро ​​и любой желаемый набор пользовательских программ и разделяемых библиотек. В ядре нет драйверов устройств . Сетевой стек основан на коде NetBSD . Помимо поддержки собственных драйверов устройств, QNX поддерживает свой устаревший сервер io-net manager и сетевые драйверы, перенесенные из NetBSD.

Межпроцессное взаимодействие QNX заключается в отправке сообщения от одного процесса к другому и ожидании ответа. Это единственная операция, называемая MsgSend . Сообщение копируется ядром из адресного пространства отправляющего процесса в адресное пространство принимающего процесса. Если принимающий процесс ожидает сообщения, управление ЦП передается одновременно, без прохождения через планировщик ЦП. Таким образом, отправка сообщения другому процессу и ожидание ответа не приводит к «потере очереди» для ЦП. Эта тесная интеграция между передачей сообщений и планированием ЦП является одним из ключевых механизмов, делающих передачу сообщений QNX широко используемой. Большинству механизмов межпроцессного взаимодействия Unix и Linux не хватает такой тесной интеграции, хотя реализация обмена сообщениями типа QNX в пользовательском пространстве для Linux действительно существует . Неправильное решение этой тонкой проблемы является основной причиной неутешительной производительности некоторых других систем с микроядрами, таких как ранние версии Mach . Процесс-получатель не обязательно должен находиться на одном физическом компьютере.

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

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

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

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

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

История выпусков QNX RTOS

История QNX RTOS

ВерсияДатаСреда распространенияПримечания
1981 г.Основание QUNIX .
Бета1983 г.Как QNX Beta
1.01984
2.01987 г.Элементы 4.3BSD, такие как TCP / IP и PPP, объединены в QNX 2.0 .
2,211989 г.QNX 2.21
4.01990 г.QNX 4.0
4.11994 г.Элементы 4.4BSD в QNX 4.1
4.21995 г.QNX 4.2
4,221995 г.QNX 4.22
4,241995 г.QNX / Neutrino 1.0 является форком QNX 4.24.
4,251997 г.QNX 4.25 продолжается после форка с QNX / Neutrino 1.0.

История выпусков QNX / Neutrino

История микроядра QNX / Neutrino — ответвление от QNX 4.24 в 1996 году.

ВыпускатьДатаПримечания
1.01996 г.QNX / Neutrino 1.0, разветвленный от QNX 4.24
2.01998 г.QNX / Neutrino 2.0
2,101999 г.QNX / Neutrino 2.10 (QRTP)
618 января 2001 г.QNX ОСРВ 6
6.1.02001 г.QNX ОСРВ 6
6.1.0 (патч А)28 сентября 2001 г.
6.24 июня 2002 г.QNX 6.2 (Momentics)
6.2 (патч А)18 октября 2002 г.QNX 6.2
6.2.118 февраля 2003 г.QNX 6.2.1 (Momentics)
6.33 июня 2004 г.QNX 6.3
6.3.0 SP1?
6.3.0 с пакетом обновления 2 (SP2)?
6.3.0 SP3 /
OS 6.3.2
6.3.2
6.4.030 октября 2008 г.ОСРВ QNX Neutrino 6.4.0
6.4.1Май 2009 г.ОСРВ QNX Neutrino 6.4.1
6.5.0Июль 2010 г.QNX Neutrino RTOS 6.5.0 разветвляется для создания BBX,
как было объявлено 18 октября 2011 года, а затем анонсирована под
названием « BlackBerry 10 OS» 1 мая 2012 года.
6.5 SP111 июля 2012 г.ОСРВ QNX Neutrino 6.5 SP1
6,628 февраля 2014 г.QNX 6.6
7.04 января 2017 г.QNX SDP 7.0 , первая версия с поддержкой 64-бит
7.123 июля 2020 г.QNX SDP 7.1

Прозрачная распределенная обработка

Благодаря своей микроядерной архитектуре QNX также является распределенной операционной системой . Дэн Додж и Питер ван дер Вин владеют патентом США 6 697 876: Операционная система с распределенным ядром, основанная на функциях распределенной обработки операционной системы QNX, известной под коммерческим названием Transparent Distributed Processing. Это позволяет ядрам QNX на отдельных устройствах получать доступ к системным службам друг друга, используя тот же механизм связи, который используется для доступа к локальным службам.

Форумы

OpenQNX — это портал сообщества QNX, созданный и работающий независимо. Доступен канал IRC и доступ к группам новостей через Интернет. Разработчики на сайте представляют самые разные отрасли.

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

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

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

Файлы: 1 файл

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

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

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

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

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

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

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

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

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

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

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

Одно из первых применений QNX, получивших широкое распространение, не относилось к встраиваемым системам — она была выбрана для собственного компьютерного проекта Министерства образования Онтарио, Unisys ICON. В те годы QNX использовалось в основном только для «больших» проектов, так как ядро, имеющее размер 44 килобайта, было слишком большим, чтобы работать на однокристальных чипах того времени. В середине 1980-х годов была выпущена QNX2. Благодаря своей надёжности, система имела завидную репутацию и получила широкое распространение для управления промышленными машинами. QNX2 и сейчас иногда применяется в ответственных системах.

В середине 1990-х в Quantum поняли, что на рынке быстро завоёвывает популярность POSIX (именно этот стандарт API операционных систем становился всё более и более популярным среди разработчиков приложений), и решили переписать ядро, чтобы оно было более совместимым на низком уровне. Так появилась QNX4. Она была доступна со встраиваемой графической подсистемой, названной Photon microGUI, и портированной под QNX версией X Window System. Перенесение программ в QNX4 из операционных систем, основанных на Unix, стало намного проще, также были убраны многие из «причуд» более ранних версий. Также, в начале 1990-х компания была переименована в QNX Software Systems (QSS), чтобы избежать путаницы с другими компаниями, в первую очередь с производителем жёстких дисков, имеющим такое же имя.

В конце 1990-х было решено создать операционную систему, соответствующую свежей редакции POSIX и в максимальной степени совместимую с NetBSD и Linux, в то же время сохранив предсказуемое поведение и микроядерную архитектуру. Результатом этих разработок стала QNX Neutrino, выпущенная в 2001 году. Эта версия поставляется вместе с QNX Momentics Tool Suite, интегрированной средой разработки (IDE), основанной на Eclipse, различными утилитами GNU и программным обеспечением, ориентированным на Интернет: веб-браузерами Voyager и Mozilla, а также веб-сервером. В отличие от предшествующих версий, работавших только в PC-совместимых архитектурах, QNX6 легко адаптируется практически к любой аппаратной конфигурации. Кроме того, особое внимание было уделено проработке архитектуры с тем, чтобы её можно было эффективно масштабировать: как «вверх» (добавляя новые сервисы и расширяя функциональность), так и «вниз» (урезая функциональность, чтобы «втиснуться» в ограниченные ресурсы). Иными словами, QNX6 можно установить там, где QNX4 не уместилась бы. Также, в QNX6 все драйверы были приведены к единой модели и все интерфейсы стали открытыми.

4 февраля 2004 года Государственная техническая комиссия при Президенте РФ выдала компании «СВД Встраиваемые Системы» сертификат № 846, удостоверяющий, что операционная система реального времени QNX 4.25 (изделие КПДА.00001-01) проверена по 2 уровню контроля отсутствия недекларированных возможностей (НДВ). Сертификат разрешает использовать изделие при разработке систем защиты для автоматизированных систем до класса 1Б включительно в соответствии с требованиями руководящих документов Гостехкомиссии России.

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].

голоса
Рейтинг статьи
Читайте так же:
Ошибка 80070570 при установке системы
Ссылка на основную публикацию
Adblock
detector