Quelqu'un peut-il expliquer les différences entre SCHED_OTHER, SCHED_FIFO et SCHED_RR ?
Gracias
Quelqu'un peut-il expliquer les différences entre SCHED_OTHER, SCHED_FIFO et SCHED_RR ?
Gracias
SCHED_FIFO et SCHED_RR sont des politiques dites "en temps réel". Elles mettent en œuvre l'ordonnancement temps réel à priorité fixe spécifié par la norme POSIX. Les tâches avec ces politiques préemptent toutes les autres tâches, qui peuvent donc facilement mourir de faim (si elles ne libèrent pas le CPU).
La différence entre SCHED_FIFO et SCHED_RR est que parmi les tâches ayant la même priorité, SCHED_RR effectue un round-robin avec un certain timelice ; SCHED_FIFO, au contraire, a besoin que la tâche cède explicitement le processeur.
SCHED_OTHER est la politique commune d'ordonnancement en temps partagé round-robin qui programme une tâche pour une certaine tranche de temps en fonction des autres tâches en cours d'exécution dans le système.
Update : depuis Linux 3.14, il existe une politique supplémentaire appelée SCHED_DEADLINE . Cette politique met en œuvre l'algorithme du serveur à largeur de bande constante (CBS) en plus de l'algorithme du serveur à largeur de bande constante. Date limite la plus proche Première les files d'attente. Une date limite est attribuée à chaque tâche dans le cadre de cette politique, et la tâche la plus proche de la date limite est exécutée. La meilleure ressource décrivant cet algorithme est Ordonnancement des délais dans le noyau Linux .
Mise à jour 2 : depuis Linux 4.13, SCHED_DEADLINE a remplacé CBS par la fonction Algorithme GRUB (Greedy Reclamation of Unused Bandwidth - récupération rapide de la bande passante inutilisée) .
Voici les différences entre SCHED_OTHER, SCHED_FIFO et SCHED_RR d'après 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 il préemptera toujours immédiatement tout thread SCHED_OTHER, SCHED_BATCH, ou SCHED_IDLE. SCHED_FIFO est un algorithme d'ordonnancement simple, sans découpage temporel. simple sans découpage temporel.
SCHED_RR : Ordonnancement round-robin
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 n'est autorisé à fonctionner que pendant un quantum de temps maximum. Si un SCHED_RR est en cours d'exécution depuis une période égale ou supérieure au ou plus longue que le quantum de temps, il sera placé à la fin de la liste pour sa priorité.
SCHED_OTHER : Planification en temps partagé par défaut de Linux
SCHED_AUTRE ne peut être utilisé qu'avec une priorité statique de 0 (c'est-à-dire que les threads des politiques temps réel ont toujours la priorité sur les processus SCHED_OTHER . SCHED_OTHER est l'ordonnanceur en temps partagé standard de Linux. Linux qui est destiné à tous les threads qui ne nécessitent pas les mécanismes mécanismes temps réel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.