Linux SCHED_OTHER, SCHED_FIFO и SCHED_RR - различия
Может кто-нибудь объяснить разницу между SCHED_OTHER, SCHED_FIFO и SCHED_RR?
Спасибо
1 ответ
SCHED_FIFO и SCHED_RR - это так называемые политики в реальном времени. Они реализуют планирование в реальном времени с фиксированным приоритетом, определенное стандартом POSIX. Задачи с этими политиками вытесняют любую другую задачу, которая может легко перейти в режим голодания (если они не освобождают ЦП).
Разница между SCHED_FIFO и SCHED_RR заключается в том, что среди задач с одинаковым приоритетом SCHED_RR выполняет циклический перебор с определенным временным интервалом; Вместо этого SCHED_FIFO нуждается в задании для явного выдачи процессора.
SCHED_OTHER - это общая политика планирования с разделением времени в циклическом режиме, которая планирует задачу для определенного временного интервала в зависимости от других задач, работающих в системе.
Обновление: начиная с Linux 3.14, существует дополнительная политика SCHED_DEADLINE. Эта политика реализует алгоритм сервера постоянной пропускной способности (CBS) поверх очередей " Самый ранний крайний срок - первые". Каждой задаче в соответствии с этой политикой назначается крайний срок, и задача с самым ранним сроком выполняется. Лучшим ресурсом, описывающим этот алгоритм, является планирование сроков в ядре Linux.
Обновление 2: начиная с Linux 4.13, SCHED_DEADLINE заменил CBS алгоритмом Greedy Reclamation of Unused Bandwidth (GRUB).
Вот различия между SCHED_OTHER, SCHED_FIFO и SCHED_RR на основе Руководства по Linux (http://man7.org/linux/man-pages/man7/sched.7.html)
SCHED_FIFO: планирование "первым пришел - первым ушел"
SCHED_FIFO может использоваться только со статическими приоритетами выше 0, что означает, что когда поток SCHED_FIFO становится работоспособным, он всегда будет немедленно вытеснять любой выполняющийся в данный момент поток SCHED_OTHER, SCHED_BATCH или SCHED_IDLE. SCHED_FIFO - это простой алгоритм планирования без квантования времени.
SCHED_RR: циклическое планирование
SCHED_RR - это простое расширение SCHED_FIFO. Все, что описано выше для SCHED_FIFO, также применимо к SCHED_RR, за исключением того, что каждому потоку разрешено работать только в течение максимального кванта времени. Если поток SCHED_RR работал в течение периода времени, равного или превышающего квант времени, он будет помещен в конец списка для его приоритета.
SCHED_OTHER: расписание разделения времени Linux по умолчанию
SCHED_OTHER может использоваться только со статическим приоритетом 0 (т. Е. Потоки в рамках политик реального времени всегда имеют приоритет над процессами SCHED_OTHER. SCHED_OTHER - стандартный планировщик разделения времени Linux, предназначенный для всех потоков, которым не требуются специальные механизмы реального времени..