Контроллер системных ресурсов

В этом разделе описан Контроллер системных ресурсов (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 предусмотрены следующие функции:

  • Общий интерфейс команд для запуска, завершения работы и отправки запросов подсистемам
  • Возможность централизованного управления подсистемами и группами подсистем
  • Общий формат запросов к подсистемам
  • Определение субсервера, однозначно идентифицирующее субсервер в подсистеме
  • Возможность определить для подсистемы особые методы уведомления об ошибках
  • Возможность определить для подсистемы особые ответы на запросы о состоянии, трассировке и обновлении конфигурации
  • Централизованная обработка запросов к подсистемам в сетевой среде