Реализация удаленного вызова процедур в системе QNX


Дополнительные сведения
При разработке программ, использующих передачу сообщений, необходимо иметь в виду следующее:
Cообщение сохраняется в теле посылающего процесса до тех пор, пока принимающий процесс не будет готов получить его. Сообщение не копируется в Микроядро. Это безопасно, т.к. посылающий процесс SEND-блокирован и не может неумышленно изменить содержимое сообщения.alt
При вызове функции Reply() данные копируются из отвечающего процесса в REPLY-блокированный процесс как одна неразрывная операция. Вызов функции Reply() не блокирует процесс — REPLY-блокированный процесс перестает быть блокированным после того, как в него скопированы данные.
При посылке сообщения процессу не требуется знать состояние того процесса, которому это сообщение адресовано. Если получатель не готов к приему сообщения в момент его отправки, то посылающий сообщение процесс просто становится SEND-блокирован.
Если это необходимо, то процесс может посылать сообщение нулевой длины, ответ нулевой длины, либо и то и другое.
С точки зрения разработчика, использование Send() для передачи процессу-серверу запроса на получение какой-либо услуги равнозначно вызову библиотечной подпрограммы, предоставляющей ту же самую услугу. В обоих случаях ваша программа сначала подготавливает определенные данные, а затем вызывает либо функцию Send(), либо библиотечную подпрограмму, после чего ожидает, когда они закончат выполнение. В обоих случаях код, реализующий запрашиваемую услугу, выполняется между двумя четко определенными точками — Receive() и Reply() для процесса-сервера, входом в подпрограмму и командой return для вызова библиотечной подпрограммы. Когда вызываемая сервисная программа завершена, ваша программа «знает», куда помещены результаты, и может приступить к проверке возвращенного кода ошибки, обработке результатов и так далее.
Несмотря на такую кажущуюся простоту, вызов функции Send() делает гораздо больше, чем простой вызов библиотечной подпрограммы. Функция Send() может прозрачно для вызывающей программы передать запрос на другой узел сети, где и будет в действительности выполняться обслуживающий запрос код. При этом также может быть задействована параллельная обработка данных без издержек на создание нового процесса. Процесс-сервер может сразу, как только станет возможным, вызвать функцию Reply(), позволяя тем самым запрашивавшему процессу возобновить выполнение и, в то же время, продолжить выполнение самому.
Возможна ситуация, когда сообщения от многих процессов одновременно ожидают своей обработки одним и тем же принимающим процессом. Как правило, принимающий процесс получает сообщение в том же порядке, в каком они были посланы другими процессами; однако принимающий процесс может установить очередность получения сообщений на основе приоритетов посылающих процессов

Сервер получил сообщение от клиента A и клиента B (но еще не ответил им). Сообщения от клиентов C, D, E еще не получены.

  • Related Posts

    Поддержка многоядерности

    Поддержка многоядерности QNX предлагает наиболее функциональную программную платформу для многоядерных систем. Это полностью интегрированное решение поддерживает асимметричную (AMP), симметричную (SMP) и исключительную (BMP) модели многопроцессорности. Впервые представленная компанией QNX Software…

    Операционная система реального времени QNX Neutrino

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    You Missed

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

    • От Redactor
    • 21 августа, 2026
    • 6 views

    Как сохранить букет свежим дольше

    • От Redactor
    • 19 августа, 2026
    • 7 views

    Чем отличается предчистовая отделка от чистовой

    • От Redactor
    • 17 августа, 2026
    • 14 views

    Сколько стоит грузчик на час

    • От Redactor
    • 10 августа, 2026
    • 23 views

    Как выбрать зал для конференции

    • От Redactor
    • 6 августа, 2026
    • 31 views

    Накрутка поведенческих факторов: быстрый эффект и высокая цена — что нужно знать, прежде чем рисковать

    • От Redactor
    • 16 июля, 2026
    • 29 views
    Накрутка поведенческих факторов: быстрый эффект и высокая цена — что нужно знать, прежде чем рисковать