За інших рівних умов процесорний час розподіляється між
процеси, запущені порівну, але процес може встановити добавку до
пріоритету. Ця Добавка, однак, не підвищує, а знижує пріоритет процесу в
сенсі використання процесора. Тільки процеси адміністратора можуть
отримувати негативну добавку до пріоритету, тобто реально підвищувати свій
пріоритет.r
Це обґрунтовано тим, що в ядрі Linux використовується два класи пріоритетів:
- Unreal-time priority.
- -Real time priority
Unreal-time priority діляться на два підкласи:
-
Статичний пріоритет або nice-пріоритет, Значення nice-пріоритету може лежати в діапазоні від -20 до 19, типово використовується значення 0. Значення -20 відповідає найбільш високому приоритету. nice-пріоритет не змінюється планувальником, він успадковується від батьків або його вказує користувач.
-
Динамічний пріоритет, на підставі якого працює планувальник.
Динамічний пріоритет обчислюється виходячи зі значення параметра пісе для даної задачі шляхом обчислення надбавки або штрафу в діапазоні від -5 до 5, залежно від інтерактивності завдання. Для визначення інтерактивності в ядрі Linux передбачений змінюваний показник того, як співвідноситься час, що процес проводить в припинене стані, з часом, що процес проводить у стані готовності до виконання.
-Real time priority лежать в діапазоні від 1 до (MAX_RT_PRIO-1), За замовчуванням діапазон значень пріоритетів реального часу складає від 1 до 99.
Для планування стратегії в режимі не реального часу (SCHED_OTHER) простір пріоритетів реального часу поєднується з простором значень параметра nice, що відповідає діапазону пріоритетів від значення MAX_RT_PRIO до значення (MAX_RT_PRIO+40). За замовчуванням це означає, що діапазон значень параметра nice від -20 до +19 взаємно однозначно відображається в діапазон значень пріоритетів від 100 до 139. І, таким чином, планування виконується за рівнями пріоритетів від 1 до 139.
Змінити пріоритет процесу в Linux можна за допомогою системного виклику
nice, а пріоритет іншого процесу може бути змінено
системним викликом setpriority..
Системний виклик getpriority дозволяє дізнатися пріоритет процесу.