| 1 | | Dans cette section nous spécifions l'ordonnanceur d'ALMOS-MK. |
| | 1 | 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. |
| | 2 | |
| | 3 | == __1) Structures de données == |
| | 4 | |
| | 5 | Nous présentant ici les structures de données nécessaire au fonctionnement de l'ordonnanceur. |
| | 6 | Ces structures sont organisée par groupe : thread ou cœur. |
| | 7 | |
| | 8 | === 1.1) Structures par thread === |
| | 9 | |
| | 10 | Dans chaque thread, on trouve des champ qui sont relative à l'ordonnanceur : |
| | 11 | |
| | 12 | * ''sched_list'' : Ce champs est de type ''list_t'' et permet d'ajouter un thread dans l'une des liste de l'ordonnanceur ; |
| | 13 | * ''state'': Ce champ permet d'indiquer dans quel est l'état du thread. Ce champ indique l'un des états suivants : |
| | 14 | * runing : |
| | 15 | * dead : |
| | 16 | * created : |
| | 17 | * ''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é. |
| | 18 | |
| | 19 | === 1.2) Structures par cœur === |
| | 20 | |
| | 21 | Dans chaque cœur, on trouve une structure ''sched_t'' contenant les champs suivante : |
| | 22 | * ''ready_list'' : contient les threads qui sont prêt à s'éxécuter ; |
| | 23 | * ''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é ; |
| | 24 | * |