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 системной библиотеки