Information Technology Reference
In-Depth Information
L'opération P (sem)
L'opération P(sem) attribue un jeton au processus appelant s'il en reste au moins un
et sinon bloque le processus dans la file sem.L. L'opération P est donc une opération
éventuellement bloquante pour le processus élu qui l'effectue. Dans le cas du blocage,
il y a réordonnancement et un nouveau processus prêt est élu. Concrètement, le
compteur K du sémaphore est décrémenté d'une unité. Si la valeur du compteur devient
négative, le processus est bloqué.
P(sémaphore sem)
début
masquer_it;
sem.K : = sem.K - 1;
si sem.K < 0
alors
ajouter ce processus à sem.L;
bloquer ce processus;
fsi
démasquer_it;
fin
L'opération V (sem)
L'opération V(sem) a pour but de rendre un jeton au sémaphore. De plus, si il y a au
moins un processus bloqué dans la file d'attente L du sémaphore, un processus est
réveillé. La gestion des réveils s'effectue généralement en mode FIFO, c'est-à-dire
que c'est le processus le plus anciennement endormi qui est réveillé. L'opération V
est une opération qui n'est jamais bloquante pour le processus qui l'effectue.
V(sémaphore sem)
début
masquer_it;
sem.K :
=
sem.K
+
1;
si sem.K
<
=
0
-- il y a au moins un processus dans la file L
alors
sortir un processus de sem.L;
réveiller ce processus; -- passage à l'état prêt
fsi
démasquer_it
fin
Réalisation d'une section critique à l'aide des sémaphores
La réalisation d'une section critique à l'aide de l'outil sémaphore s'effectue en utili-
sant un sémaphore que nous appelons mutex, dont le compteur K est initialisé à 1.
Le prélude de la section critique correspond à une opération P(mutex).
Le postlude de la section critique correspond à une opération V(ùutex).
 
Search WWH ::




Custom Search