Контроллер системных ресурсов (SRC) поддерживает три способа обмена данными: сигналы, сокеты и очереди сообщений IPC. Выбранный способ обмена данными определяет набор функций SRC, доступный подсистеме.
Примечание: Все подсистемы, независимо от способа обмена данными, указанного в объекте подсистемы, должны поддерживать обмен ограниченным набором сигналов. В подсистеме должна быть определена функция для обработки сигнала SIGTERM (завершение и отмена). При получении сигнала SIGTERM подсистема должна освободить все ресурсы и завершить свою работу.
Дополнительная информация о способах обмена данными с SRC приведена в следующих разделах:
В таблице Обмен данными между
демоном srcmstr и подсистемами описаны все способы обмена данными и связанные
с ними функции SRC.
Обмен данными между демоном srcmstr и подсистемами | ||
Функция | С помощью IPC или сокетов | С помощью сигналов |
запуск |
|
|
подсистема | SRC порождает процесс подсистемы. | SRC порождает процесс подсистемы. |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается |
обычное завершение |
|
|
подсистема | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Подсистеме отправляется сигнал SIGNORM. |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
принудительное завершение |
|
|
подсистема | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Подсистеме отправляется сигнал SIGFORCE |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
завершение и отмена |
|
|
подсистема | Группе процессов подсистемы отправляется сигнал SIGTERM, а затем - SIGKILL. | Группе процессов подсистемы отправляется сигнал SIGTERM, а затем - SIGKILL. |
получить краткую информацию о состоянии |
|
|
подсистема | Реализуется SRC (нет соответствующего запроса к подсистеме). | Реализуется SRC (нет соответствующего запроса к подсистеме). |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
получить подробную информацию о состоянии |
|
|
подсистема | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
включить/выключить трассировку |
|
|
подсистема | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
обновить |
|
|
подсистема | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
субсервер | Подсистеме отправляется запрос через очередь сообщений IPC или сокет. | Не поддерживается. |
отправка уведомления |
|
|
подсистема | Реализуется с помощью метода подсистемы. | Реализуется с помощью метода подсистемы. |
Обмен сигналами - это основной способ обмена данными между демоном srcmstr и подсистемой. Поскольку сигналы передаются только в одном направлении, подсистемы, использующие механизм сигналов, распознают только запрос на завершение работы. Они не распознают запросы на получение подробной информации о состоянии, обновление и трассировку. Кроме того, они не распознают субсерверы.
Для работы с механизмом сигналов в подсистеме должна быть реализована процедура обработки сигналов SIGNORM и SIGFORCE, например, sigaction, sigvec или signal.
Подсистемы, использующие механизм
сигналов, должны быть описаны в классе объектов подсистем SRC с помощью
команды mkssys -Snf, либо функции
defssys или
addssys.
addssys | Добавляет определение подсистемы в базу данных конфигурации SRC |
defssys | Инициализирует новое определение подсистемы значениями по умолчанию |
mkssys | Добавляет определение подсистемы в базу данных конфигурации SRC |
Сокеты представляют собой другой способ обмена данными, который может применяться в подсистемах. Этот тип применяется демоном srcmstr по умолчанию. Дополнительная информация по этому вопросу приведена в разделе "Sockets Overview" книги AIX 5L Version 5.1 Communications Programming Concepts.
Демон srcmstr получает через сокеты запросы на обработку от процесса. Если вы выберете этот способ обмена данными, демон srcmstr создаст сокет подсистемы, через который она будет получать запросы демона srcmstr. Для локальных подсистем создаются сокеты UNIX (AF_UNIX). Для удаленных подсистем создаются сокеты Internet (AF_INET). Ниже описана последовательность обработки команды:
Права доступа к файлу и адреса сокетов, применяемые демоном srcmstr, хранятся во временных каталогах /dev/SRC и /dev/.SRC-unix. Информация в этих каталогах предназначена только для SRC, хотя ее можно просмотреть с помощью команды ls.
Очереди сообщений и сокеты предоставляют одни и те же функции для обмена данными с подсистемами.
Дополнительная информация по
этому вопросу приведена в разделе Создание подсистем, взаимодействующих с SRC.
srcrrqs | Сохраняет целевой адрес ответа подсистемы на полученный пакет. (См. также процедуру srcrrqs_r с защитой нитей) |
srcsrpy | Отправляет пакет с ответом подсистемы на полученный запрос. |
Очереди сообщений IPC выполняют те же функции, что и сокеты. Оба способа обмена данными позволяют работать со всеми функциями SRC.
При обмене данными через очередь сообщений IPC демон srcmstr получает запросы на обработку от процесса команды через сокет, а затем отправляет сообщение SRC для подсистемы в очередь сообщений IPC. Очередь сообщений создается при запуске подсистемы. Ниже описана последовательность действий, которая выполняется при обмене данными подсистемы с демоном srcmstr через очередь сообщений:
Дополнительная информация об этом способе обмена данными приведена в разделе "Message Queue Kernel Services" книги AIX 5L Version 5.1 Kernel Extensions and Device Support Programming Concepts. Дальнейшие действия, которые необходимо выполнить для настройки обмена данными с демоном srcmstr, описаны в разделе Создание подсистем, взаимодействующих с SRC.
Глава 26, Контроллер системных ресурсов
Создание подсистем, взаимодействующих с SRC
Файл spc.h
Функции msgrcv, signal, socket, srcrrqs, srcsrpy