Контроллер системных ресурсов
В этом разделе описан Контроллер системных ресурсов (SRC), предназначенный для управления сложными подсистемами.
SRC - это программа для управления подсистемами. SRC может применяться при разработке подсистем, управляющих одним или несколькими демонами, для создания интерфейса управления системой. SRC предоставляет набор команд для запуска, завершения, трассировки, обновления и получения информации о состоянии подсистемы.
Кроме того, в SRC предусмотрена функция уведомления об ошибках. Она позволяет применять собственные методы исправления ошибок. На тип информации об исправлении не накладывается практически никаких ограничений: метод уведомления должен быть строкой файла, содержащей имя исполняемой программы.
Дополнительная информация о требованиях, которые накладываются на программы SRC, приведена в следующих разделах:
Взаимодействие подсистем с SRC
В SRC подсистемой называется программа или набор связанных программ, которые были совместно разработаны для решения конкретной задачи. Дополнительная информация о свойствах подсистемы приведена в разделе "Контроллер системных ресурсов" книги Управление операционной системой и устройствами.
Субсервер - это процесс, которым управляет подсистема и который входит в ее состав.
SRC работает с объектами из класса объектов SRC. При этом подсистемы определяются в SRC как объекты подсистем, а субсерверы - как объекты типа субсервер. Структура, связанная с объектом каждого типа, описана в файле usr/include/sys/srcobj.h.
В SRC предусмотрены команды для работы с объектами подсистем, субсерверов, а также группами подсистем. Группой подсистем называется группа любых пользовательских подсистем. Объединение подсистем в группы позволяет выполнить одну команду сразу для нескольких подсистем. Кроме того, для группы подсистем можно создать общий метод уведомления об ошибках.
SRC обменивается данными с подсистемами путем отправки сигналов и обмена пакетами с запросами и ответами. Помимо сигналов SRC поддерживает обмен данными через сокеты и очереди сообщений IPC. Для описания обмена данными между подсистемами и SRC в API SRC предусмотрено несколько функций. Кроме того, в API SRC предусмотрены функции для обмена данными между клиентскими программами и SRC.
SRC и команда init
При работе SRC не используется команда init. Тем не менее, SRC расширяет возможности этой команды, предназначенной для порождения процессов. Помимо команд запуска, завершения, трассировки, обновления и получения информации о состоянии подсистем, SRC позволяет управлять работой отдельных подсистем, поддерживает удаленное управление системой и функцию ведения протоколов подсистем.
SRC вызывает команду init только при добавлении главного демона SRC, srcmstr, в файл inittab. По умолчанию демон srcmstr указан в файле inittab. В этом случае команда init запускает демон srcmstr во время запуска системы, как и любой другой процесс. Права на запуск демона srcmstr есть только у системного администратора и членов системной группы.
Компиляция программ, взаимодействующих с демоном srcmstr
Для того чтобы программа могла работать с демоном srcmstr, в ней нужно указать файл /usr/include/spc.h, а во время компиляции подключить библиотеку libsrc.a. Для программ, обменивающихся данными с SRC путем сигналов, этого делать не нужно.
Операции SRC
Для работы с SRC подсистема должна обмениваться данными с демоном srcmstr двумя способами:
- С помощью объекта подсистемы, созданного в классе объектов подсистем SRC.
- С помощью функций SRC, если подсистема не использует механизм сигналов. Эти функции предназначены для отправки ответов на запросы SRC и применяются в случае использования очередей сообщений или сокетов.
Все подсистемы SRC должны поддерживать команду stopsrc. Эта команда применяется SRC для завершения работы подсистем и их субсерверов с помощью сигналов SIGNORM (обычное завершение), SIGFORCE (принудительное завершение) или SIGCANCEL (отмена).
Кроме того, подсистема может поддерживать команды startsrc, lssrc-l, traceson, tracesoff и refresh, функцию отправки подробного отчета о своем состоянии и отчета о состоянии субсервера, а также функцию уведомления об ошибках SRC.
Функции SRC
Для поддержки создания подсистем в SRC предусмотрены следующие функции:
- Общий интерфейс команд для запуска, завершения работы и отправки запросов подсистемам
- Возможность централизованного управления подсистемами и группами подсистем
- Общий формат запросов к подсистемам
- Определение субсервера, однозначно идентифицирующее субсервер в подсистеме
- Возможность определить для подсистемы особые методы уведомления об ошибках
- Возможность определить для подсистемы особые ответы на запросы о состоянии, трассировке и обновлении конфигурации
- Централизованная обработка запросов к подсистемам в сетевой среде