Changes between Version 2 and Version 3 of TME6-2014
- Timestamp:
- Mar 7, 2014, 9:44:06 AM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TME6-2014
v2 v3 3 3 == Objectif de la séance 4 4 5 Nous avons vu en cours que la gestion des threads se fait en utilisant des structures de données abstraites c'est qui n'exposent pas leur contenu mais juste leurméthodes.5 Nous avons vu en cours que la gestion des threads se fait en utilisant des structures de données abstraites c'est qui n'exposent pas leur contenu, mais juste leurs méthodes. 6 6 L'accès aux attributs de ces structures se fait par des fonctions d'accès. 7 7 Toutefois avant d'utiliser ces structures, nous allons faire une gestion "naïve" et simplifiée des threads. … … 15 15 === thread 16 16 17 * Un thread peut être dans 5 états (vous ferez une énum eration) :17 * Un thread peut être dans 5 états (vous ferez une énumération) : 18 18 * CREATE : état de démarrage attribué au thread lorsqu'il n'a jamais été chargé sur un core. 19 19 * READY : état dans lequel le thread est en attente du core. … … 52 52 * extern void sched_init (void); !//// initialise un scheduler 53 53 * extern void sched_create (thread_t *thread); !//// ajoute un nouveau thread 54 * extern void sched_wakeup (thread_t *thread); !//// remet un thread dans l'état READY54 * extern void sched_wakeup (thread_t *thread); !//// remets un thread dans l'état READY 55 55 * extern void sched_yield (void); !//// demande d'ordonnancement 56 56 * extern void sched_sleep (void); !//// place le thread dans une liste d'attente … … 85 85 * app.c : les threads de votre application 86 86 87 Je vous propose une application mais vous pouvez en imaginer une autre plus intelligente.87 Je vous propose une application, mais vous pouvez en imaginer une autre plus intelligente. 88 88 N threads identiques de type 1 qui se partagent un compteur commun protégé par un mutex. 89 Un thread de type 2 va recevoir les compteurs de chaque instance des threads de type 1 et vérifier qu'il ne reçoit pas deux valeurs identiques (vous faite comme vous voulez pour faire cette vérificationmais vous pouvez profiter du fait que les valeurs envoyées par les threads de type 1 sont strictement croissantes...).89 Un thread de type 2 va recevoir les compteurs de chaque instance des threads de type 1 et vérifier qu'il ne reçoit pas deux valeurs identiques (vous faites comme vous voulez pour faire cette vérification, mais vous pouvez profiter du fait que les valeurs envoyées par les threads de type 1 sont strictement croissantes...). 90 90 Le compteur est une variable globale initialisée à 0. 91 91 Chaque instance de thread de type 1 boucle sur la séquence suivante: … … 96 96 * envoi de la valeur du compteur vers le thread de type 2 97 97 98 Pour faire l'envoi des valeurs de compteur vous allez avoir besoin d'un moyen de communication N vers 1. Je vous laisse spécifier et implémenter ce moyen.98 Pour faire l'envoi des valeurs de compteur, vous allez avoir besoin d'un moyen de communication N vers 1. Je vous laisse spécifier et implémenter ce moyen.