Читать «Разработка ядра Linux» онлайн - страница 64
Роберт Лав
Таблица 4.3. Системные вызовы для управления планировщиком
Системный вызов | Описание |
---|---|
nice() | Установить значение параметра nice |
sched_setscheduler() | Установить стратегию планирования |
sched_getscheduler() | Получить стратегию планирования |
sched_setparam() | Установить значение приоритета реального времени |
sched_getparam() | Получить значение приоритета реального времени |
sched_get_priority_max() | Получить максимальное значение приоритета реального времени |
sched_get_priority_min() | Получить минимальное значение приоритета реального времени |
sched_rr_get_interval() | Получить продолжительность кванта времени |
sched_setaffinity() | Установить процессорную привязку |
sched_getaffinity() | Получить процессорную привязку |
sched_yield() | Временно передать процессор другим заданиям |
Системные вызовы, связанные с управлением стратегией и приоритетом
Системные вызовы sched_setscheduler()
и sched_getcheduler()
позволяют соответственно установить и получить значение стратегии планирования и приоритета реального времени для указанного процесса. Реализация этих функций, так же как и для большинства остальных системных вызовов, включает большое количество разнообразных проверок, инициализаций и очистку значений аргументов. Полезная работа включает в себя только чтение или запись полей policy
и rt_priority
структуры task_struct
указанного процесса.
Системные вызовы sched_setparam()
и sched_getparam()
позволяют установить и получить значение приоритета реального времени для указанного процесса. Последняя функция просто возвращает значение поля rt_priority
, инкапсулированное в специальную структуру sched_param
. Вызовы sched_get_priority_max()
и sched_get_priority_min()
возвращают соответственно максимальное и минимальное значение приоритета реального времени для указанной стратегии планирования. Максимальное значение приоритета для стратегий планирования реального времени равно (MAX_USER_RT_PRIO-1
), а минимальное значение — 1.
Для обычных задач функция nice()
увеличивает значение статического приоритета вызывающего процесса на указанную в аргументе величину. Только пользователь root может указывать отрицательные значения, т.е. уменьшать значение параметра nice и соответственно увеличивать приоритет. Функция nice()
вызывает функцию ядра set_user_nice()
, которая устанавливает значение полей static_prio
и prio
структуры task_struct
.