Version 2 (modified by 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 :
- 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 : contient les threads qui sont prêt à s'éxécuter ;
- sleep_list : 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é ;