4. Пріоритетне планування
Алгоритми SJF і гарантованого планування є окремими випадками пріоритетного планування. При пріоритетному плануванні кожному процесу привласнюється певне числове значення — пріоритет, відповідно до якого йому виділяється процесор. Процеси з однаковими пріоритетами плануються у порядку FCFS. Для алгоритму SJF як такий пріоритет виступає оцінка тривалості наступного CPU burst. Чим менше значення цієї оцінки, тим більш високий пріоритет має процес. Для алгоритму гарантованого планування пріоритетом є коефіцієнт справедливості. Чим він менше, тим більше пріоритет у процесу.
Принципи призначення пріоритетів можуть спиратися як на внутрішні критерії обчислювальної системи, так і на зовнішні по відношенню до неї. Внутрішні використовують різні кількісні і якісні характеристики процесу для обчислення його пріоритету. Це можуть бути, наприклад, певні обмеження за часом використання процесора, вимоги до розміру пам'яті, число відкритих файлів і використовуваних пристрої ввводу-виводу, відношення середньої тривалості I/O burst до CPU burst і т.п. Зовнішні критерії виходять з таких параметрів, як важливість процесу для досягнення яких-небудь цілей, вартість сплаченого процесорного часу і інших чинників. Високий зовнішній пріоритет може бути привласнений задачі лектора або того, хто заплатив $100 за роботу протягом однієї години.
Планування з використанням пріоритетів може бути як витісняючим, так і невитісняючим. При витісняючему плануванні процес з вищим пріоритетом, що з'явився в черзі готових процесів, витісняє процес що виконується, але з нижчим пріоритетом. У разі невитісняючего планування він просто стає в початок черги готових процесів.
Якщо пріоритети процесів не змінюються з перебігом часу, то такі пріоритети прийнято називати статичними. Механізми статичної пріоритетності легко реалізувати, і вони зв'язані з відносно невеликими витратами на вибір найпріоритетнішого процесу. Проте статичні пріоритети не реагують на зміни ситуації в обчислювальній системі, які можуть зробити бажаним коректування порядку виконання процесів. Гнучкішими є динамічні пріоритети процесів, що змінюють свої значення по ходу виконання процесів. Початкове значення динамічного пріоритету, привласнене процесу, діє протягом лише короткого періоду часу, після чого йому призначається нове, більш відповідне значення. Зміна динамічного пріоритету процесу є єдиною операцією над процесами, яку ми дотепер не розглянули. Як правило, зміна пріоритету процесів проводиться погоджено із здійсненням яких-небудь інших операцій: при народженні нового процесу, при розблокуванні або блокуванні процесу, після закінчення певного кванту часу або після закінчення процесу. Прикладами алгоритмів з динамічними пріоритетами є алгоритм SJF і алгоритм гарантованого планування. Схеми з динамічною пріоритетністю набагато складніші в реалізації і пов'язані з великими витратами в порівнянні із статичними схемами. Проте їх використання припускає, що ці витрати виправдовуються поліпшенням поведінки системи.
Головна проблема пріоритетного планування полягає у тому, що при неналежному виборі механізму призначення і зміни пріоритетів низькопріоритетні процеси можуть бути не запущені невизначено довгий час. Звичайно трапляється одне з двох. Або вони все ж таки дочекаються своєї черги на виконання, або обчислювальну систему доводиться вимикати, і вони втрачаються (при зупинці IBM 7094 в Массачусетському технологічному інституті в 1973 році були знайдені процеси, що запущені в 1967 році і жодного разу з тих пір не виконувалися). Рішення цієї проблеми може бути досягнуте за допомогою збільшення з часом значення пріоритету процесу, що знаходиться в стані готовність. Хай спочатку процесам привласнюються пріоритети від 128 до 255. Кожного разу, після закінчення певного проміжку часу, значення пріоритетів готових процесів зменшуються на 1. Процесу, що побував в стані виконання, відновлюється первинне значення пріоритету. Навіть така груба схема гарантує, що будь-якому процесу в розумні терміни буде надане право на виконання.