Information Technology Reference
In-Depth Information
s'exécuter, demande à accéder à la ressource R2 en faisant l'opération P(SR2) et
obtient R2 puisque la ressource est libre. Le processus P2 poursuit son exécution et
demande à présent à accéder à la ressource R1 en effectuant l'opération P(SR1).
Cette fois, le processus P2 est stoppé puisque R1 a été allouée au processus P1. Le
processus P2 passe donc dans l'état bloqué; l'ordonnanceur est invoqué et celui-ci
réélit le processus P1. Le processus P1 reprend son exécution et demande à présent
à accéder à la ressource R2 en effectuant l'opération P(SR2). Le processus P1 est
également stoppé puisque R2 a été allouée au processus P2.
La situation dans laquelle les processus P1 et P2 se trouvent maintenant est donc
la suivante : le processus P1 possède la ressource R1 et attend la ressource R2 détenue
par le processus P2. Pour que le processus P1 puisse reprendre son exécution, il faut
que le processus P2 libère la ressource R2 en effectuant l'opération V(SR2). Mais le
processus P2 ne peut lui-même pas poursuivre son exécution puisqu'il est bloqué en
attente de la ressource R1 possédée par le processus P1. On voit donc clairement que
les deux processus P1 et P2 sont bloqués dans l'attente l'un de l'autre et que rien ne
peut les sortir de cette attente.
Une telle situation est qualifiée d'interblocage. Elle correspond à une situation où
au moins deux processus, possédant déjà un ensemble de ressources, sont en attente
infinie les uns des autres pour l'acquisition d'autres ressources. Une telle situation,
lorsqu'elle se produit, ne peut être résolue que par la destruction des processus impli-
qués dans l'interblocage. Une façon d'éviter l'occurrence d'une telle situation est de
veiller à ce que les processus utilisant les mêmes ressources demandent celles-ci dans
le même ordre. Ici, donc les opérations P(SR2) et P(SR1) pour le processus P2 doivent
être inversées.
12.3.3 Le schéma lecteurs-rédacteurs
Dans ce problème, on considère la situation où un fichier ou une zone de mémoire
commune est accédée simultanément en lecture et en écriture. Il y a donc deux types de
processus, d'une part des processus lecteurs et d'autre part des processus rédacteurs.
Dans ce schéma, deux objectifs doivent être atteints. D'un côté, le contenu du fichier
ou de la zone de mémoire commune doit évidemment rester cohérent, donc les écri-
tures ne doivent pas avoir lieu en même temps. Par ailleurs, on souhaite que les lecteurs
lisent toujours une information stable, c'est-à-dire que les lecteurs ne doivent pas lire
une information en cours de modification.
Pour parvenir à réaliser ces deux objectifs, il faut donc, à un instant donné, sur la
zone de mémoire commune ou sur le fichier partagé :
- soit une seule écriture en cours;
- soit une ou plusieurs lectures en cours, les lectures simultanées ne gênant pas
puisqu'une lecture ne modifie pas le contenu de l'information.
Le rédacteur
Un processus rédacteur exclut donc les autres rédacteurs ainsi que tous les lecteurs.
Autrement dit, un rédacteur accède donc toujours seul au fichier ou à la zone de
 
 
Search WWH ::




Custom Search