Короткий Ответ
PR - это приоритетный уровень. Чем ниже PR, тем выше будет приоритет процесса.
PR рассчитывается следующим образом:
- для нормальных процессов:
PR = 20 + NI
(NI хороший и колеблется от -20 до19)
- для процессов реального времени:
PR = - 1 - real_time_priority
(значение real_time_priority колеблется от 1 до 99)
Длинный Ответ
Существует 2 типа процессов, следующие обычный одни и те же в реальном времени.
Для обычных (и только для них) nice применяется следующим образом:
Ницца
Шкала "приятности" варьируется от -20 до 19, тогда как -20 - самый высокий приоритет, а 19 - самый низкий. Уровень приоритета рассчитывается следующим образом:
PR = 20 + NI
Где NI - уровень nice, а 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 policy2. SCHED_BATCH for "batch" style execution of processes3. SCHED_IDLE for running very low priority background jobs.4. SCHED_FIFO a first-in, first-out policy5. 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.