SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
Продукты QNX
Операционная система реального времени QNX Neutrino
Операционная система реального времени QNX4
Комплект разработчика QNX Momentics
Встраиваемые СУБД
Аппаратное обеспечение
Главная страница > Продукты > Продукты QNX > Операционная система реального времени QNX Neutrino > Обмен сообщениями Сделать страницу стартовой Послать ссылку коллеге Версия для печати

Обмен сообщениями

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

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

Технология обмена сообщениями на основе микроядра позволяет:

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

Автоматическая синхронизация

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

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

Как это работает? В QNX Neutrino каждая программа, предоставляющая некий сервис (например, драйвер), может зарегистрировать в пространстве имен путей "файл" или "каталог". В дальнейшем любое приложение может соединиться с этим драйвером, осуществив по отношению к данному файлу или каталогу стандартную операцию open(). Результатом будет получение приложением обычного файлового дескриптора, через который приложение сможет обращаться к сервисам драйвера при помощи вызовов POSIX, предназначенных для работы с файловыми дескрипторами - read(), write(), lseek() и т.п. Библиотека языка Си автоматически преобразует эти вызовы в соответствующие сообщения и передает их драйверу. Например, когда приложение вызывает стандартную функцию read(), чтобы считать готовые данные, библиотека преобразует этот вызов в сообщение "запрос на чтение". На самом деле в QNX Neutrino приложения используют преимущества обмена сообщениями каждый раз, когда работают с файловыми дескрипторами или указателями на файлы.

Такой подход позволяет вам:

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

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

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

Обратите внимание, что обмен сообщениями можно использовать напрямую, при помощи функций MsgSend(), MsgReceive() и MsgReply(). В QNX Neutrino доступны также и традиционные формы межзадачного взаимодействия - программные каналы, FIFO, очереди сообщений POSIX, разделяемая память и сигналы.

Рассказать друзьям:

     Рейтинг@Mail.ru