Короткий ответ
99 станет победителем за приоритет в реальном времени.
PR - уровень приоритета (диапазон от -100 до 40). Чем ниже PR, тем выше приоритет процесса.
PR рассчитывается следующим образом:
- для нормальных процессов: PR = 20 - NI (NI подходит и составляет от -20 до
19)
- для процессов реального времени: PR = - 1 - real_time_priority
(real_time_priority варьируется от 1 до 99)
Длинный ответ
Существует 2 типа процессов: обычный и реальное время
Для обычных (и только для тех), nice применяется следующим образом:
Nice
Шкала «добротности» варьируется от -20 до 19, тогда как -20 это самый высокий приоритет и 19 самый низкий приоритет. Уровень приоритета рассчитывается следующим образом:
PR = 20 + NI
Где NI - хороший уровень, а PR - уровень приоритета. Итак, как мы видим, -20 фактически отображается в 0, а 19 - в 39.
По умолчанию, значение nice программы равно 0 бит, и пользователь root может запускать программы с указанным значением nice с помощью следующей команды:
nice -n <nice_value> ./myProgram
Реальное время
Мы могли бы пойти еще дальше. Хороший приоритет на самом деле используется для пользовательских программ. Тогда как общий приоритет UNIX / LINUX имеет диапазон 140 значений, значение nice позволяет процессу отображать последнюю часть диапазона (от 100 до 139). Это уравнение оставляет недоступными значения от 0 до 99, которые будут соответствовать отрицательному уровню PR (от -100 до -1). Чтобы иметь возможность доступа к этим значениям, процесс должен быть указан как «в реальном времени».
В среде LINUX существует 5 политик планирования, которые можно отобразить с помощью следующей команды:
chrt -m
Который покажет следующий список:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
Процессы планирования можно разделить на 2 группы: обычные политики планирования (от 1 до 3) и политики планирования в реальном времени (4 и 5).
Процессы реального времени всегда будут иметь приоритет над обычными процессами. Процесс реального времени может быть вызван с помощью следующей команды (например, как объявить политику SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
Для получения значения PR для процесса в реальном времени применяется следующее уравнение:
PR = -1 - rt_prior
Где rt_prior соответствует приоритету от 1 до 99. По этой причине процесс, который будет иметь более высокий приоритет по сравнению с другими процессами, будет вызываться с номером 99.
Важно отметить, что для процессов реального времени значение nice не используется.
Чтобы увидеть текущую «привлекательность» и значение PR процесса, можно выполнить следующую команду:
top
Который показывает следующий вывод:
На рисунке показаны значения PR и NI. Хорошо отметить процесс со значением PR -51, которое соответствует значению в реальном времени. Есть также некоторые процессы, чье значение PR указано как «rt». Это значение фактически соответствует значению PR -100.