Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Question sur les priorités : fifo, RR, other
    bonjour à tous,

    voila je me documente sur les priorités sur linux et j'aimerais savoir si j'ai bien compris :

    Il y a sur linux 3 type de processus : sched_FIFO qui est plus prioritaire que sched_RR (tourniquet) qui est lui meme plus prioritaire que sched_other.

    Lorsqu'il y a plusieurs processus lancés, on voit 3 files d'attentes : la file Fifo, la file RR et la file other. la file Fifo qui est plus prioritaire est lancé en premier. Cette file n'est pas préemptif, il n'y a donc pas de priorité dans cette file et on lance le premier processus de la file dans le CPU, ce dernier rendra la main uniquement lors de l'appelle systeme sched_yield() qui est une des instructions du processus, puis le second processus est lancé par le CPU et ainsi de suite.

    Une fois la file Fifo faite, l'ordonnanceur lance la file RR qui est préemptive. l'ordonnanceur va faire des epochs c'est a dire crée des listes de processus de meme priorité. Puis un processus sera lancé par le CPU pendant un certain temps (50ms). Une fois ce temps utilisé un autre processus prend la main meme si le processus n'a pas fini. Mais le second processus qui a pris la main sur le CPU est de meme priorité ce qui permet de partager les ressources CPU pour les processus de meme priorité d'ou la création d'epochs. une fois que tous les processus de meme priorité ont gaspillé leurs quantum de temps de facon équitable, on crée une autre epochs de la file RR avec les meme priorité et on recommence jusqu'à lancé tous les processus de la file RR.

    Puis une fois la file RR fini, on lance la file other qui fonctionne comme la fifo.

    Si vous pouviez m'éclairer sur les erreurs éventuelles que j'ai dit.

    merci d'avance

  2. #2
    Membre actif
    La file SCHED_OTHER ne fonctionne pas comme la file SCHED_FIFO (et heureusement sinon il n'y aurait pas de temps partagé sous linux ^^).

    Elle se base sur du round-robin (donc plutôt comme la file SCHED_RR mais avec des algorithmes différents) basé sur une priorité statique/dynamique (La priorité va dépendre de ton nice, du CPU que tu utilise, des E/S que tu fais etc...).