SCHED_FIFO et SCHED_RR sont des politiques dites "en temps réel". Ils implémentent l'ordonnancement en temps réel à priorité fixe spécifié par la norme POSIX. Les tâches avec ces politiques devancent toutes les autres tâches, qui peuvent donc facilement tomber en panne (si elles ne libèrent pas le CPU).
La différence entre SCHED_FIFO et SCHED_RR est que parmi les tâches avec la même priorité, SCHED_RR effectue un round-robin avec une certaine tranche de temps ; SCHED_FIFO, à la place, a besoin que la tâche cède explicitement le processeur.
SCHED_OTHER est la politique de planification de partage de temps à tour de rôle commune qui planifie une tâche pour une certaine tranche de temps en fonction des autres tâches en cours d'exécution dans le système.
Mettre à jour :depuis Linux 3.14, il existe une politique supplémentaire appelée SCHED_DEADLINE. Cette stratégie implémente l'algorithme Constant Bandwidth Server (CBS) au-dessus des files d'attente Early Deadline First. Chaque tâche dans le cadre de cette stratégie se voit attribuer une échéance et la tâche la plus proche de l'échéance est exécutée. La meilleure ressource décrivant cet algorithme est la planification des dates limites dans le noyau Linux.
Mise à jour 2 :depuis Linux 4.13, SCHED_DEADLINE a remplacé CBS par l'algorithme Greedy Reclamation of Unused Bandwidth (GRUB).
Voici les différences entre SCHED_OTHER, SCHED_FIFO et SCHED_RR basées sur le manuel Linux (http://man7.org/linux/man-pages/man7/sched.7.html)
SCHED_FIFO :Planification du premier entré, premier sorti
SCHED_FIFO ne peut être utilisé qu'avec des priorités statiques supérieures à 0, ce qui signifie que lorsqu'un thread SCHED_FIFO devient exécutable, il préemptera toujours immédiatement tout thread SCHED_OTHER, SCHED_BATCH ou SCHED_IDLE en cours d'exécution. SCHED_FIFO est un algorithme d'ordonnancement simple sans découpage temporel.
SCHED_RR :planification à tour de rôle
SCHED_RR est une simple amélioration de SCHED_FIFO. Tout ce qui est décrit ci-dessus pour SCHED_FIFO s'applique également à SCHED_RR, sauf que chaque thread est autorisé à s'exécuter uniquement pendant un quantum de temps maximum. Si un thread SCHED_RR a été exécuté pendant une période de temps égale ou supérieure au quantum de temps, il sera placé à la fin de la liste pour sa priorité.
SCHED_OTHER :Planification par défaut du partage de temps Linux
SCHED_OTHER peut être utilisé uniquement à la priorité statique 0 (c'est-à-dire que les threads sous les politiques en temps réel ont toujours la priorité sur les processus SCHED_OTHER. SCHED_OTHER est le planificateur standard de partage de temps Linux qui est destiné à tous les threads qui ne nécessitent pas les mécanismes spéciaux en temps réel.