Основы IPC в KasperskyOS

В KasperskyOS единственным способом межпроцессного взаимодействия (IPC) является обмен сообщениями.

Виды сообщений и роли сущностей

Обмен сообщениями в KasperskyOS построен по клиент-серверной модели.

Во взаимодействии двух сущностей одна из них является клиентом (клиентская сущность), а вторая — сервером (серверная сущность). Клиент инициирует взаимодействие, отправляя сообщение-запрос (далее также "запрос"). Сервер получает запрос и отвечает на него, отправляя клиенту сообщение-ответ (далее также "ответ").

IPC-каналы

Чтобы две сущности могли обмениваться сообщениями, между ними должен быть установлен IPC-канал (далее также "канал" или "соединение"). Каждая сущность может иметь несколько соединений, выступая как клиент для одних сущностей и как сервер — для других.

Системные вызовы

KasperskyOS предоставляет три системных вызова для обмена IPC-сообщениями: Call, Recv и Reply. Соответствующие функции объявлены в файле syscalls.h:

Функции Call(), Recv() и Reply() возвращают rcOk или код ошибки.

Вызовы Call() и Recv() являются блокирующими, то есть обмен сообщениями происходит по принципу рандеву:

Системные вызовы редко используются в коде сущности. Вместо них рекомендуется использовать более удобные NK-сгенерированные методы, которые, в свою очередь, выполняют системные вызовы.

В начало