Changes between Version 24 and Version 25 of AS6-TME-B7
- Timestamp:
- Apr 13, 2022, 1:51:09 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B7
v24 v25 223 223 224 224 225 == B.1. ` app0`226 227 228 == B.2. `app1` 229 230 231 == B. 3. `app2` : Mécanisme des barrières225 == B.1. `uapp0` et `uapp1` 226 227 Les 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 232 232 233 233 … … 413 413 }}} 414 414 415 == B. 4. Ajout de l'API des sémaphores415 == B.3. Ajout de l'API des sémaphores 416 416 417 Les sémaphores sont un mécanisme s de synchronisation permettant de synchroniser des threads ou des processus. Nous n'avons qu'un seuleprocessus, alors nous n'allons l'utiliser que pour les threads.418 419 Je vous propose l'API suivante 417 Les 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 419 Je vous propose l'API suivante: 420 420 - 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 434 Vous 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