Приложение Организация обмена сообщениями (Владимир Зайцев)
Приложение
Организация обмена сообщениями
(Владимир Зайцев)
Обмен сообщениями (message passing) является основой архитектуры ОС QNX, на которой строится значительная часть служебных функций системы. Несмотря на свою «элементарность», он является удобным (и в силу своей «нативности» чрезвычайно эффективным!) механизмом для непосредственной организации взаимодействия между процессами. Особый же шарм этого механизма заключается в том, что вместе с передачей данных как таковой можно естественным образом (на основе блокировок Send/Receive/Reply) организовать синхронизацию взаимодействующих процессов.
И хотя в QNX 6 появилось такое мощное средство для организации обмена данными, как менеджер ресурсов, а также имеется богатый набор средств синхронизации, способный удовлетворить любого программиста, имеющего опыт работы в POSIX-совместимых системах, механизм обмена сообщениями по-прежнему остается привлекательным средством, используемым непосредственно в разработке ПО. Особенно отчетливо это проявляется в среде разработчиков, мигрирующих с предыдущих версий ОС QNX, и вряд ли может быть объяснено только их, программистов, консерватизмом.
Вместе с тем переход от QNX 4 к QNX 6 вызвал изменения в реализации механизма обмена сообщениями и, как следствие, API-функций. Причиной этого стал переход от однопоточных к многопоточным процессам, при этом обмен сообщениями стал осуществляться не между процессами[43], а между потоками. Соответственно изменился и «адресат» сообщения. В QNX 4 в этом качестве выступал процесс и его можно было однозначно определить по его идентификатору — действительному (при работе на одном узле) или идентификатору виртуального канала («virtual circuit») при межузловых сообщениях. Таким образом, для того чтобы передать сообщение (функцией из семейства Send*()) в адрес некоего сервера, процессу-клиенту достаточно было «знать» этот идентификатор. Получал он его, как правило, либо от «родителя» искомого процесса, либо через сервис глобального пространства имен (qnx_name_attach() и qnx_name_locate()).
Теперь же, в QNX 6, в качестве «адресата» сообщения стал выступать идентификатор соединения (coid), и именно он требуется при вызове функций семейства MsgSend*(). Для создания же соединения с сервером клиенту необходимо «знать» триаду соединения: идентификатор этого процесса-сервера (pid), дескриптор узла (nd), на котором сервер выполняется, и идентификатор созданного сервером канала (chid).
Вторым «возмущением», привнесенным QNX 6 в привычную и сложившуюся технику разработок, явился переход от идентификаторов узлов (nid), которые являлись уникальными в пределах сети и однозначно определяли каждый узел, к дескрипторам узлов (nd), которые уникальны только в пределах каждого данного узла, но не в сети. Уникальность в пределах сети теперь должны обеспечивать символьные имена узлов.
В этом приложении предпринята попытка обрисовать специфику, характерную для организации обмена сообщениями в QNX 6, особенно проявляющуюся при межузловом обмене, и поделиться практическими решениями, учитывающими эту специфику.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Применение обмена сообщениями
Применение обмена сообщениями Теперь, когда мы рассмотрели базовые концепции обмена сообщениями и выяснили, что он используется даже в таких обычных повседневных вещах как библиотека языка Си, давайте рассмотрим кое-какие детали.Архитектура и структураМы рассуждали о
Особенности обмена сообщениями в сети
Особенности обмена сообщениями в сети Итак, как только соединение установлено, все дальнейшие операции обмена сообщениями осуществляются в соответствии с этапом 4, как указано на рисунке. Это может привести вас к ошибочному представлению, что передача сообщений по сети
Анализ обмена сообщениями
Анализ обмена сообщениями В QNX4 клиент мог найти сервер двумя способами:• используя глобальное пространство имен;• выполнение open() в отношении администратора ввода/вывода.«Клиент/сервер» с использованием глобального пространства именЕсли взаимоотношения
Организация обмена сообщениями на основе «семейных» процессов
Организация обмена сообщениями на основе «семейных» процессов Рассмотрим, как можно организовать обмен сообщениями между потоками, принадлежащими процессам, связанным «родственными узами». Для простоты изложения, чтобы в дальнейшем не формулировать «поток,
Пример обмена сообщениями с помощью менеджера ресурсов
Пример обмена сообщениями с помощью менеджера ресурсов Код файла заголовков #define NET_OPER "/net/904-3"#define NET_REG "/net/Bed-Test"// Максимальная длина обычного стандартного сообщения.#define MESSIZE_MAX 100// Максимальная длина инвентаризационного имени процесса#define PROC_NAME_MAX 100struct IdLabel_t { // Структура,
Владимир Левин
Владимир Левин Владимир Левин – русский хакер, ставший всемирно известным после похищения из нью-йоркского «Ситибанка» ни много ни мало $ 10 млн, 400 тыс. из которых не найдены до сих пор.Сотрудники банка быстро обнаружили пропажу и обратились в ФБР. Установить конечные
2.4.2. Клиент для мгновенного обмена сообщениями Pidgin
2.4.2. Клиент для мгновенного обмена сообщениями Pidgin Практически каждый пользователь Интернета использует ICQ или другой сервис для мгновенного обмена сообщениями. У нас популярнее ICQ, а на Западе - другие сервисы, например AOL AIM.Сейчас мы поговорим о том, как настроить Pidgin
12.2.4. Выбор программы для мгновенного обмена сообщениями. Настройка проприетарных клиентов для работы через Tor
12.2.4. Выбор программы для мгновенного обмена сообщениями. Настройка проприетарных клиентов для работы через Tor Таких программ тоже предостаточно. Вот неполный список клиентов для мгновенного обмена сообщениями с открытым кодом:? Instantbird (http://www.instantbird.com/) – поддерживает
Глава 5 ICQ и другие системы мгновенного обмена сообщениями
Глава 5 ICQ и другие системы мгновенного обмена сообщениями ICQ: установка и получение собственного номера. Обмен сообщениямиТонкости ICQАльтернативные клиенты ICQСети MSN и JabberЭкономим на телефоне с помощью SkypeЭлектронная почта, безусловно, хорошее средство общения, но далеко
Программы для обмена мгновенными сообщениями
Программы для обмена мгновенными сообщениями Когда возникла первая система обмена мгновенными сообщениями (Instant Messaging), ее использовали в основном для развлечения. Сегодня с помощью таких систем деловые люди ведут переговоры и управляют сделками. Мгновенные сообщения
2.2.3 Организация операций обмена с дисками
2.2.3 Организация операций обмена с дисками Операции ввода-вывода, как правило, образуют наиболее медленную компоненту обработки баз данных. Поэтому от их реализации существенно зависит общая продуктивность сервера. Для оптимизации ввода-вывода и повышения надежности в
Владимир Путин
Владимир Путин Перед нами целеустремленный, честолюбивый человек, мечтающий о многом (рис. 157). Двигаясь вверх, он не только приучил себя к сдержанности, но и накопил в себе много агрессивности, проистекающей из большого честолюбия и излишней критичности к себе и
Владимир Жириновский
Владимир Жириновский Обладает большой внутренней силой (рис. 162). Не привык придерживаться обычной рутины.Часто действует под влиянием эмоций, не скрывая и не сдерживая их. Его личность интересна, необычна и очень противоречива. Сильно развит дух соперничества.Весьма
Глава 19 Болталка ICQ. Программа для мгновенного обмена сообщениями
Глава 19 Болталка ICQ. Программа для мгновенного обмена сообщениями 19.1. Что такое ICQ ICQ — один из самых популярных сервисов мгновенного обмена сообщениями. Это своего рода Интернет-пейджер. Аббревиатура ICQ означает «I seek you» («Я ищу тебя»), в России эту программу принято