Changes between Version 2 and Version 3 of TME6-2014


Ignore:
Timestamp:
Mar 7, 2014, 9:44:06 AM (11 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TME6-2014

    v2 v3  
    33== Objectif de la séance
    44
    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 leur méthodes.
     5Nous 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.
    66L'accès aux attributs de ces structures se fait par des fonctions d'accès.
    77Toutefois avant d'utiliser ces structures, nous allons faire une gestion "naïve" et simplifiée des threads.
     
    1515=== thread
    1616
    17 * Un thread peut être dans 5 états (vous ferez une énumeration) :
     17* Un thread peut être dans 5 états (vous ferez une énumération) :
    1818  * CREATE : état de démarrage attribué au thread lorsqu'il n'a jamais été chargé sur un core.
    1919  * READY : état dans lequel le thread est en attente du core.
     
    5252  * extern void sched_init      (void);                 !//// initialise un scheduler
    5353  * 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 READY
     54  * extern void sched_wakeup    (thread_t *thread);     !//// remets un thread dans l'état READY
    5555  * extern void sched_yield     (void);                 !//// demande d'ordonnancement
    5656  * extern void sched_sleep     (void);                 !//// place le thread dans une liste d'attente
     
    8585* app.c : les threads de votre application
    8686
    87 Je vous propose une application mais vous pouvez en imaginer une autre plus intelligente.
     87Je vous propose une application, mais vous pouvez en imaginer une autre plus intelligente.
    8888N 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érification mais vous pouvez profiter du fait que les valeurs envoyées par les threads de type 1 sont strictement croissantes...).
     89Un 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...).
    9090Le compteur est une variable globale initialisée à 0.
    9191Chaque instance de thread de type 1 boucle sur la séquence suivante:
     
    9696* envoi de la valeur du compteur vers le thread de type 2
    9797
    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.
     98Pour 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.