KasperskyOS Community Edition 1.0

IPC-каналы

IPC-каналы соединяют сущности друг с другом и используются для обмена IPC-сообщениями.

Канал представлен парой IPC-дескрипторов: клиентским и серверным, которые связаны друг с другом.

Две сущности соединены IPC-каналом

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

Сущность может иметь несколько соединений (каналов) с другими сущностями, выступая как клиент в одних соединениях, и как сервер – в других.

Сущность A является клиентом для сущности C и сервером – для сущности B. Обозначения: cl_1, cl_2 – клиентские IPC-дескрипторы; srv_1, srv_2 – серверные IPC-дескрипторы.

Создание и использование каналов

IPC-каналы создаются статически и динамически.

Статически созданные IPC-каналы создаются сущностью Einit при старте решения. Код сущности Einit генерируется на основе init-описания, в котором указываются все каналы (т.е. соединения), которые нужно создать.

Помимо статически создаваемых IPC-каналов, сущности могут использовать динамически создаваемые IPC-каналы.

Чтобы отправить и принять IPC-сообщение по конкретному каналу, нужно знать соответствующие значения IPC-дескрипторов (клиентского и серверного). Для получения значений IPC-дескрипторов используется локатор сервисов.

В этом разделе

Динамическое создание IPC-каналов