Прежде всего, ответ немного длинный, но он предназначен только для уточнения.
Как и в ядре Linux, каждый обычный процесс может иметь приоритеты, называемые статическими приоритетами, от 100 (самый высокий) до 139 (самый низкий). Таким образом, процессу можно присвоить 40 приоритетов.
поэтому, когда создается любой процесс, он получает приоритет своего родителя, но если пользователь хочет изменить его приоритет, это можно сделать с помощью системного вызова nice (nice_value).
и причина вашего вопроса в том, что каждому процессу нужен квант базового времени, который используется как время, в течение которого процесс получит процессор для своего выполнения в миллисекундах, и это рассчитывается как
time={
if static_priority<120
(140-static_priority)*20
if static_priority>=120
(140-static_priority)*5
поэтому сервисная процедура sys_nice() обрабатывает системный вызов nice(). Хотя nice_value может иметь любое значение, абсолютные значения, превышающие 40, обрезаются до 40. Традиционно отрицательные значения соответствуют запросам на увеличение приоритета и требуют привилегий суперпользователя, а положительные значения соответствуют запросам на снижение приоритета. В случае отрицательного значения nice_value функция вызывает функцию enable(), чтобы проверить, имеет ли процесс возможность CAP_SYS_NICE. Кроме того, функция вызывает ловушку безопасности security_task_setnice(). поэтому в конце nice_value используется для расчета статического приоритета, а затем этот статический приоритет используется для расчета кванта базового времени.
поэтому ясно, что значения -ve используются для увеличения приоритета, поэтому требуется доступ суперпользователя, а значения +ve используются для снижения приоритета, поэтому доступ суперпользователя не требуется.
person
akp
schedule
28.12.2012