Changes between Version 24 and Version 25 of AS6-TME-B7


Ignore:
Timestamp:
Apr 13, 2022, 1:51:09 PM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B7

    v24 v25  
    223223
    224224
    225 == B.1. `app0`
    226 
    227 
    228 == B.2. `app1`
    229 
    230 
    231 == B.3. `app2` : Mécanisme des barrières
     225== B.1. `uapp0` et `uapp1`
     226
     227Les deux programmes testent respectivement, l'API `exit`/`join` et `mutex`.
     228
     229- décrivez les programmes...
     230
     231== B.2. `uapp2` : Mécanisme des barrières
    232232
    233233
     
    413413}}}
    414414
    415 == B.4. Ajout de l'API des sémaphores
     415== B.3. Ajout de l'API des sémaphores
    416416 
    417 Les sémaphores sont un mécanismes de synchronisation permettant de synchroniser des threads ou des processus. Nous n'avons qu'un seule processus, alors nous n'allons l'utiliser que pour les threads.
    418 
    419 Je vous propose l'API suivante
     417Les sémaphores sont un mécanisme de synchronisation permettant de synchroniser des threads ou des processus. Nous n'avons qu'un seul processus, alors nous n'allons l'utiliser que pour les threads.
     418
     419Je vous propose l'API suivante:
    420420- typedef struct sem_s * sem_t;
    421 - sem_init( sem_t * sem, int value);
    422 - sem_post( )
    423 - sem_wait()
    424 
     421- sem_init (sem_t * sem, int value);
     422  - pour créer et initialiser un sémaphore `sem` à la valeur `value`
     423  - vous pouvez traiter les erreurs ou pas... 
     424- sem_wait (sem_t);
     425  - si la valeur du sémaphore est nul, le thread se met en attente
     426  - sinon décremente le sémaphore et continue
     427- sem_post (sem_t * sem);
     428  - s'il y a un thread en attente, le notifier
     429  - sinon incrémenter la valeur du sémaphore
     430- sem_destroy (sem_t);
     431  - détruire le sémaphore
     432  - vous pouvez traiter les cas d'erreur.
     433
     434Vous allez devoir modifier les fichiers (commenter votre code).
     435- ulib/thread.h
     436- ulib/thread.c
     437- common/syscall.h
     438- kernel/ksyscall.c
     439- kernel/ksynchro.h
     440- kernel/ksynchro.c