Académique Documents
Professionnel Documents
Culture Documents
2. Définition
Un sémaphore S est constitué par un couple composé de :
Un compteur entier e(S) appelé valeur du sémaphore S.
Une file d’attente associée F(S) où seront insérés les processus en attente de la ressource.
Sur le sémaphore S seront définies deux procédures indivisibles : P(S) et V(S) (qui s'exécutent en
exclusion mutuelle).
La valeur du compteur e(S) est initialisée à e0(S) et sera toujours un entier non négatif (≥0). Cette
valeur représente le nombre d’unités libres de la ressource. Elle est utilisée pour déterminer si un
processus peut ou non continuer son exécution.
Les processus qui ne peuvent pas continuer leur exécution sont mis dans la file d’attente associée au
sémaphore.
Il est important de noter que les seules actions permises sur e(S) et F(S) ne sont que les procédures
P(S) et V(S) tel que :
Algorithme de P(S) : Algorithme de V(S) :
Début Début
e(S)=e(S)-1 ; e(S)=e(S)+1 ;
si e(S) < 0 alors si e(S) ≤ 0 alors
Mettre le processus appelant dans F(S) Retirer un processus de F(S) et le
avec état bloqué. réveiller.
Fin. Fin.
Program ProducteursConsommateurs;
Const N=…;
Type objet=….;
Var Tampon : Array [0…N-1] of objet;
Mutex : Semaphore Initial Value = 1;
Vide : Semaphore Initial Value = N;
Plein : Semaphore Initial Value = 0;
Begin
ParBegin
Producteur-1;Producteur-2; Producteur-3; …….; Producteur-I;
Consommateur-1; Consommateur-2; Consommateur-3;……;Consommateur-j;
ParEnd;
End;