sched_aps_security_parms

Структура, используемая для установки параметров безопасности адаптивного планировщика

Прототип:

#include <sys/sched_aps.h>
#include <sys/neutrino.h>
typedef struct {
_Uint32t sec_flags;
} sched_aps_security_parms;

Описание:

Структура используется в функции SchedCtl() в сочетании с командой SCHED_APS_ADD_SECURITY для определения параметров безопасности адаптивного планировщика.

Структура включает следующие поля:

sec_flags
Флаги безопасности. Набор флагов SCHED_APS_SEC_* в качестве входных и выходных параметров. Для того, чтобы получить текущие флаги безопасности, необходимо установить значение 0. Планировщик адаптивных партиций позволяет динамически создавать и изменять партиции в системе.

Note: Рекомендовано настроить среду партиции во время запуска, а затем заблокировать все параметры:
  • в программе с помощью флага SCHED_APS_SEC_LOCK_PARTITIONS
  • из командной строки, с помощью команды aps modify

Однако может потребоваться изменить партицию во время выполнения. В этом случае рекомендовано использовать параметры безопасности, описанные ниже.

ЗОСРВ «Нейтрино» во время запуска устанавливает параметр безопасности SCHED_APS_SEC_OFF. Рекомендовано немедленно установить его на SCHED_APS_SEC_RECOMMENDED. Пример кода:

sched_aps_security_parms p;
APS_INIT_DATA( &p );
p.sec_flags = SCHED_APS_SEC_RECOMMENDED;
SchedCtl( SCHED_APS_ADD_SECURITY, &p, sizeof( p ) );

Ниже представлены основные параметры безопасности:

SCHED_APS_SEC_RECOMMENDED
Только root (суперпользователь) из системной партиции может создавать партиции или изменять параметры. Это создает двухуровневую иерархию партиций: системная партиция и её дочерние элементы. Только root, работающий в системной партиции, может присоединять свой поток к партициям. Процентные бюджеты не должны быть равны нулю.
SCHED_APS_SEC_FLEXIBLE
Только root в системной партиции может изменять параметры планирования или изменять критические бюджеты. Но суперпользователь, работающий в любой партиции, может создавать подпартиции, объединять потоки в свои собственные подпартиции и изменять подпартиции. Это позволяет приложениям создавать свои собственные локальные подпартиции из своих собственных бюджетов. Процентные бюджеты не должны быть равны нулю.
SCHED_APS_SEC_BASIC
Только root в системной партиции может изменять общие параметры планирования и устанавливать критические бюджеты.
Если требуется изменить все параметры безопасности без перезагрузки системы, исключая режим тестирования, вы должны установить хотя бы SCHED_APS_SEC_BASIC. Параметр SCHED_APS_SEC_RECOMMENDED более безопасен, чем SCHED_APS_SEC_FLEXIBLE, который более безопасен, чем SCHED_APS_SEC_BASIC. Все три позволяют создавать и изменять партиции. После настройки партиций следует использовать SCHED_APS_SEC_LOCK_PARTITIONS, чтобы предотвратить дальнейшие несанкционированные изменения. Например:

sched_aps_security_parms p;
APS_INIT_DATA( &p );
p.sec_flags = SCHED_APS_SEC_LOCK_PARTITIONS;
SchedCtl( SCHED_APS_ADD_SECURITY, &p, sizeof( p ) );

SCHED_APS_SEC_RECOMMENDED, SCHED_APS_SEC_FLEXIBLE и SCHED_APS_SEC_BASIC состоят из флагов, определенных ниже (обычно удобнее использовать составные параметры):

SCHED_APS_SEC_ROOT0_OVERALL
Чтобы изменить общие параметры планирования в системной партиции, такие как усредненный размер окна, пользователь должен обладать правами суперпользователя (root).
SCHED_APS_SEC_ROOT_MAKES_PARTITIONS
Только root может создавать или изменять разделы. Применяется к командам SCHED_APS_CREATE_PARTITION, SCHED_APS_MODIFY_PARTITION и SCHED_APS_ATTACH_EVENTS.
SCHED_APS_SEC_SYS_MAKES_PARTITIONS
Необходимо работать в системной партиции, чтобы создавать или изменять партиции. Это относится к тем же командам, что и SCHED_APS_SEC_ROOT_MAKES_PARTITIONS. Присоединение событий с SCHED_APS_ATTACH_EVENTS считается изменением партиции.
SCHED_APS_SEC_PARENT_MODIFIES
Позволяет модифицировать партиции (SCHED_APS_MODIFY_PARTITION), но при этом необходимо работать в родительской партиции изменяемой партиции. “Модифицировать” означает изменить процент или критический бюджет партиции или присоединить события с помощью команды SCHED_APS_ATTACH_EVENTS.
SCHED_APS_SEC_NONZERO_BUDGETS
Партиция не может быть создана с нулевым бюджетом или изменена таким образом, чтобы иметь нулевой бюджет. Данный параметр безопастности следует устанавливать, например, в обработчике запросов клиентов, когда неизвестен порядок запуска адаптивных партиций
SCHED_APS_SEC_ROOT_MAKES_CRITICAL
Необходимо быть пользователем root, чтобы создать ненулевой критический бюджет или изменить существующий критический бюджет.
SCHED_APS_SEC_SYS_MAKES_CRITICAL
Необходимо работать в системной партиции, чтобы создать ненулевой критический бюджет или изменить существующий критический бюджет.
SCHED_APS_SEC_ROOT_JOINS
Необходимо быть пользователем root, чтобы присоединиться к потоку в партиции.
SCHED_APS_SEC_SYS_JOINS
Необходимо работать в системной партиции, чтобы присоединиться к потоку.
SCHED_APS_SEC_PARENT_JOINS
Необходимо работать в родительской партиции, к которой требуется присоединиться.
SCHED_APS_SEC_JOIN_SELF_ONLY
Вызывающий команду SCHED_APS_JOIN_PARTITION должен указать 0 для pid и tid. Другими словами, процесс не может присоединять другие процессы к партиции.
SCHED_APS_SEC_PARTITIONS_LOCKED
Предотвратить дальнейшие изменения бюджета любой партиции или общих параметров планирования, таких как размер окна. Следует устанавливать после настройки партиций. Заблокировав партиции, есть возможность по-прежнему использовать SCHED_APS_JOIN_PARTITION и Команды SCHED_APS_ATTACH_EVENTS.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

SchedCtl()




Предыдущий раздел: Описание API системной библиотеки