SCHED_FIFO y SCHED_RR son las llamadas políticas de "tiempo real". Implementan la programación en tiempo real de prioridad fija especificada por el estándar POSIX. Las tareas con estas políticas se adelantan a todas las demás tareas, que por lo tanto pueden morir de hambre fácilmente (si no liberan la CPU).
La diferencia entre SCHED_FIFO y SCHED_RR es que, entre las tareas con la misma prioridad, SCHED_RR realiza un round-robin con un intervalo de tiempo determinado; SCHED_FIFO, en cambio, necesita que la tarea produzca explícitamente el procesador.
SCHED_OTHER es la política común de programación de tiempo compartido por turnos que programa una tarea para un cierto intervalo de tiempo dependiendo de las otras tareas que se ejecutan en el sistema.
Actualizar :desde Linux 3.14, existe una política adicional llamada SCHED_DEADLINE. Esta política implementa el algoritmo del Servidor de ancho de banda constante (CBS) además de las colas Primero en la fecha límite más temprana. A cada tarea bajo esta política se le asigna una fecha límite y se ejecuta la tarea con la fecha límite más temprana. El mejor recurso que describe este algoritmo es la programación de fechas límite en el kernel de Linux.
Actualización 2 :desde Linux 4.13, SCHED_DEADLINE ha reemplazado a CBS con el algoritmo Greedy Reclamation of Unused Bandwidth (GRUB).
Aquí están las diferencias entre SCHED_OTHER, SCHED_FIFO y SCHED_RR según el Manual de Linux (http://man7.org/linux/man-pages/man7/sched.7.html)
SCHED_FIFO:Primero en entrar, primero en salir
SCHED_FIFO solo se puede usar con prioridades estáticas superiores a 0, lo que significa que cuando un subproceso SCHED_FIFO se vuelve ejecutable, siempre se adelantará inmediatamente a cualquier subproceso SCHED_OTHER, SCHED_BATCH o SCHED_IDLE que se esté ejecutando actualmente. SCHED_FIFO es un algoritmo de programación simple sin cortes de tiempo.
SCHED_RR:Programación por turnos
SCHED_RR es una mejora simple de SCHED_FIFO. Todo lo descrito anteriormente para SCHED_FIFO también se aplica a SCHED_RR, excepto que cada subproceso puede ejecutarse solo durante un tiempo máximo. Si un subproceso SCHED_RR se ha estado ejecutando durante un período de tiempo igual o mayor que la cantidad de tiempo, se colocará al final de la lista por su prioridad.
SCHED_OTHER:Programación predeterminada de tiempo compartido de Linux
SCHED_OTHER se puede usar solo con prioridad estática 0 (es decir, los subprocesos bajo políticas en tiempo real siempre tienen prioridad sobre SCHED_OTHERprocesos. SCHED_OTHER es el programador estándar de tiempo compartido de Linux que está destinado a todos los subprocesos que no requieren los mecanismos especiales en tiempo real.