2012-02-22 6 views
24

Может кто-нибудь объяснить различия между SCHED_OTHER, SCHED_FIFO и SCHED_RR?Linux SCHED_OTHER, SCHED_FIFO и SCHED_RR - отличия

Благодаря

+2

Довольно дублируется с этим один Linux :-): http://stackoverflow.com/questions/9374653/real-time-scheduling-in- –

+0

Не совсем, SCHED_OTHER не был упомянут – eve

ответ

35

SCHED_FIFO и SCHED_RR так называемые политики "в реальном времени". Они реализуют фиксированное приоритетное планирование в реальном времени, указанное стандартом POSIX. Задачи с этими политиками вытесняют каждую другую задачу, которая, таким образом, может легко впадать в голод (если они не освобождают CPU).

Разница между SCHED_FIFO и SCHED_RR заключается в том, что среди задач с одинаковым приоритетом SCHED_RR выполняет циклический цикл с определенным временным интервалом; SCHED_FIFO, вместо этого, нуждается в задаче для явного вывода процессора.

SCHED_OTHER является общей политикой планирования распределения времени с циклическим распределением, которая назначает задачу для определенного таймлиса в зависимости от других задач, выполняемых в системе.

Обновление: с Linux 3.14 существует дополнительная политика: SCHED_DEADLINE. Эта политика реализует алгоритм Constant Bandwidth Server (CBS) поверх Earliest Deadline First очередей. Каждой задаче в соответствии с этой политикой назначается конечный срок, и выполняется самая ранняя задача. Лучший ресурс, описывающий этот алгоритм, - Deadline scheduling in the Linux kernel.

Обновление 2: поскольку Linux 4.13, SCHED_DEADLINE заменил CBS Greedy Reclamation of Unused Bandwidth (GRUB) algorithm.

+1

Следует также отметить, что планировщик Linux может дросселировать недопустимые процессы в SCHED_DEADLINE, поэтому другие процессы получают процессорное время. См. https://www.youtube.com/watch?v=AmyfSjRMcIY и http://retis.sssup.it/~jlelli/talks/rts-like14/SCHED_DEADLINE.pdf. То есть если процесс SCHED_DEADLINE говорит, что ему потребуется 2 раза из 5, но он потребляет больше, то при необходимости он будет уменьшен. Для достижения чего-то вроде жесткого реального времени в Linux, SCHED_DEADLINE, вероятно, лучший выбор. –