Information Technology Reference
In-Depth Information
Une solution au problème
Dans ce problème, deux types de ressources distinctes peuvent être mis en avant :
- le producteur consomme des cases vides et fournit des cases pleines;
- le consommateur consomme des cases pleines et fournit des cases vides.
Il y a donc des ressources cases vides et des ressources cases pleines. Le problème
peut maintenant se rapprocher d'un problème d'allocation de ressources critiques tel
que nous l'avons vu précédemment. On associe donc un sémaphore à chacune des
ressources identifiées, initialisé au nombre de cases respectivement vides ou pleines
initialement disponibles (n et 0). Soient donc les deux sémaphores vide initialisé à n
et plein initialisé à 0.
Le producteur s'alloue une case vide par une opération P(vide), remplie cette case
vide et de ce fait génère une case pleine qu'il signale par une opération V(plein).
Cette opération réveille éventuellement le consommateur en attente d'une case pleine.
PRODUCTEUR
index i de dépot :
=
0
P(vide);
déposer le message dans tampon(i);
i: = i + 1 mod n;
V(plein);
Le consommateur s'alloue une case pleine par une opération P(plein), vide cette
case pleine et de ce fait génère une case vide qu'il signale par une opération V(vide).
Cette opération réveille éventuellement le producteur en attente d'une case vide.
CONSOMMATEUR
index j de retrait : = 0
P(plein);
retirer le message de tampon(j);
j: = j + 1 mod n;
V(vide);
Utilisation de ce schéma au niveau du système d'exploitation
Les systèmes d'exploitation offrent directement des outils de communication mettant
en œuvre au niveau des primitives d'accès à ces outils, le schéma producteur-
consommateur.
Le système Linux par exemple offre deux outils de ce type :
- d'une part, les tubes ( pipe ) qui permettent exclusivement la communication entre
processus qui sont issus d'un même processus père, créateur du tube ;
- d'autre part, les files de messages ( Messages queues - MSQ) qui permettent à
n'importe quel processus connaissant l'identifiant de la file de communiquer avec
d'autres processus.
Search WWH ::




Custom Search