Тема 12. Реалізація планування в Linux.
Планування процесів реального часу в ядрі.
Стосовно процесів реального часу, достатньо сказати, що:
• вони завжди матимуть під час планування пріоритет перед звичайними про цесами;
• процес із плануванням за принципом FIFO виконують доти, поки він сам не віддасть процесор (наприклад, внаслідок призупинення або завершення) або поки не буде витиснений процесом реального часу із вищим пріоритетом;
• те саме стосується процесу із круговим плануванням, крім того, що він додатково буде витіснений після вичерпання кванта часу.
'Традиційний алгоритм планування.'
Розглянемо алгоритм планування звичайних процесів. В основі алгоритму
лежить розподіл процесорного часу на епохи (epochs). Упродовж епохи кожен
процес має квант часу, довжину якого розраховують у момент початку епохи.
Здебільшого різні процеси мають кванти різної довжини. Коли процес вичерпав
свій квант, його витісняють і протягом поточної епохи він більше не виконувати
меться. Керування передають іншому процесові. Якщо ж процес був призупине
ний для виконання введення-виведення або внаслідок синхронізації, його квант
не вважають вичерпаним і він може бути вибраний планувальником упродовж
поточної епохи. Епоха закінчується, коли всі готові до виконання процеси вичер
пали свої кванти. У цьому разі алгоритм планування перераховує кванти для всіх
процесів і розпочинає нову епоху.
Квант, який задають на початку епохи, називають базовим квантом часу проце
су. Його значення можуть динамічно змінюватися системними викликами пі се О
і setpriorityO. Процес-нащадок завжди успадковує базовий квант свого предка.
Пріоритет процесу буває двох видів: фіксований, для процесів реального часу,
що задають тільки під час створення процесу, та динамічний, для звичайних про
цесів, який залежить від базового пріоритету і часу, що залишився до вичерпання
кванта. Динамічний пріоритет будь-якого звичайного процесу завжди нижчий за
будь-який пріоритет процесу реального часу.
Опишемо найважливіші поля структури даних процесу стосовно планування:
• рої і су — визначає, до якої групи відноситься процес (звичайні, реального часу
з алгоритмом FIFO тощо);
• nice — задає величину, на якій ґрунтується базовий квант часу процесу (нада
лі для спрощення вважатимемо nice рівним базовому кванту, насправді це не
зовсім так);
• counter — містить кількість переривань таймера, що залишилися до вичерпан
ня кванта часу процесу. На початку епохи counter надають значення базового
кванта і зменшують його на одиницю в обробнику переривання таймера.