wiki:scheduler

Version 3 (modified by karaoui, 8 years ago) (diff)

--

Dans cette section nous spécifions l'ordonnanceur d'ALMOS-MK. Ce dernier est par cœur est à pour rôle de gérer les états des threads.

1) Structures de données

Nous présentant ici les structures de données nécessaire au fonctionnement de l'ordonnanceur. Ces structures sont organisée par groupe : thread ou cœur.

1.1) Structures par thread

Dans chaque thread, on trouve des champ qui sont relative à l'ordonnanceur :

  • sched_list : Ce champs est de type list_t et permet d'ajouter un thread dans l'une des liste de l'ordonnanceur ;
  • state: Ce champ permet d'indiquer dans quel est l'état du thread. Ce champ indique l'un des états suivants :
    • runing :
    • dead :
    • wait
    • created :
  • sched_callback : ce pointeur de fonction peut être utilisé pour signaler à l'ordonnanceur qu'un thread peut être réveillé (1.2, sleep_list). Cette fonction retourne un booléen lorsque le thread peut être réveillé.

1.2) Structures par cœur

Dans chaque cœur, on trouve une structure sched_t contenant les champs suivante :

  • ready_list : cette liste contient les threads qui sont prêt à s'éxécuter ;
  • sleep_list : cette liste contient les threads qui sont endormis et dont le réveil est à la charge de l’ordonnanceur. L'ordonnanceur utilise le pointeur de fonciton sched_callback pour savoir à quel moment le thread doit être réveillé ;
  • dead_list : cette liste contient les threads qui sont mort et dont les données doivent être libérées ;