Vous êtes sur la page 1sur 4

Université de Blida 1 Système d’exploitation 2

Département d’informatique 3ème LMD SIQ

Chapitre 3 : Interblocage
1. Introduction
Dans un système donné, plusieurs processus peuvent entrer en compétition pour l'accès à un
nombre fini de ressources. Généralement la demande de ressources est bloquante : c'est à dire que
lorsque les ressources demandées par un processus ne sont pas disponibles à l'instant de la
demande, ce processus passe à l'état bloqué et doit attendre jusqu'à leur libération effective.
2. Définition
Un ensemble de processus est en situation d'interblocage quand tout processus de cet ensemble est
en attente d'une libération de ressources qui ne peut venir que d'un autre processus de cet
ensemble et que les conditions de cette libération restent indéfiniment non satisfaites.
3. Modèle de système
Un système consiste en un nombre fini m de classes de ressources (C1 à Cm) à partager entre un
nombre fini n de processus (P1 à Pn) en compétition.
Chaque classe de ressource Ci comporte un nombre fini d'exemplaires banalisés.
Le protocole suivi par chaque processus sera :
Demander(Ci,k) : demander k unités de la classe de ressource Ci.
<utiliser unités obtenues de Ci>
Libérer(Ci,k) : libérer les k unités de la classe de ressource Ci.
4. Conditions d’interblocage
On distingue 4 conditions nécessaires d'interblocage:
1. Exclusion mutuelle : Elle concerne les ressources critiques (un seul exemplaire non partageable)
car l'exclusion mutuelle entre processus est nécessaire pour les utiliser.
2. Allocation partielle : Situation où chaque processus acquiert chaque ressource progressivement
selon ses besoins immédiats (et donc détient une partie de ses besoins maximaux en ressources) et
attend d'autres unités de ressource sans libérer celles qu'il détient.
3. Pas de Préemption : Elle concerne les ressources non préemptibles avec demandes bloquantes.
Dans ce cas une ressource ne peut être retirée à un processus avant qu'il n'ait fini de l'utiliser.
4. Attente Circulaire : Il existe un ensemble de n processus bloqués { P0, P1,... , Pn-1} tels que : pour
tout i de 0 à n-1 , Pi attend une ressource Ri détenue par Pi+1Mod n .
5. Représentation de l’état d’un système
1. Représentation Matricielle
Pour un système comportant n processus et m classes de ressources on peut définir les variables
représentatives suivantes:
a)Vecteur des ressources disponibles : Available de dimension m
Available[i] = nombre d'unités disponibles de la classe de ressources Ci.
b)Matrice des unités de ressources allouées: Allocate de dimension n x m
Allocate [i , j] = nombre d'unités de ressources de la classe j détenues par le processus Pi.
c)Matrice des demandes en attente (requêtes non satisfaites): Request de dimension n x m
Request [i , j] = nombre d'unités de ressources de la classe Cj demandées et non encore obtenues par
le processus Pi.
2. Représentation par Graphe
_L'ensemble des sommets correspond aux processus et aux classes de ressources
_L'ensemble des arcs correspond aux relations entre processus et ressources selon 2 cas:
1) arc d'allocation allant d'une ressource Rj à un processus Pi et signifiant que des unités de Rj sont
allouées à Pi : (Rj , Pi).
2)arc de requête en attente allant d'un processus Pi à une ressource Rj et signifiant que des unités de
Rj sont demandées par Pi : (Pi , Rj).

Chargée de cours Docteur N. TOUBALINE 1/4


Université de Blida 1 Système d’exploitation 2
Département d’informatique 3ème LMD SIQ

6. Méthodes de traitement de l’interblocage


Le problème de l'interblocage peut être traité selon deux approches:
1) Approche pessimiste: le principe général est d'instaurer un mécanisme de contrôle avant
l'allocation effective des ressources garantissant qu'une situation d'interblocage ne peut se produire.
La prévention de l'interblocage peut être réalisée sous 2 formes:
_statique (application d'une technique préventive avant l'exécution du processus)
_dynamique (application du mécanisme préventif pendant l'exécution du processus)
2) Approche optimiste: Le contrôle se fait à posteriori. Si une situation d'interblocage est détectée
alors une méthode de guérison est appliquée pour remettre le système dans un état cohérent.
7. Méthodes de détection et guérison de l’interblocage
1. Cas de ressources en plusieurs exemplaires.
La méthode se base sur la détection de l'état sain du système; un état sain est un état où
l'interblocage est impossible.
Notion d'état sain: Le système est dit dans l'état sain si on peut allouer les ressources dans un
certain ordre tel que tous les processus du système peuvent s'exécuter jusqu'à leur fin sans
interblocage. D'une manière plus formelle ceci revient à trouver une suite S dite saine et complète de
processus : S= { Pi, Pj, ... Ps } suite ordonnée contenant les n processus du système et telle que pour
tout processus Pl de cette suite les requêtes de Pl en attente peuvent être totalement satisfaites en
prenant l'ensemble des ressources disponibles et des ressources détenues par l'ensemble des
processus qui précèdent Pl dans la suite. Si la suite S est complète alors le système est dans un état
sain et il n'y a pas d'interblocage. Si S est incomplète et ne peut plus être prolongée en une suite
saine complète alors l'état n'est pas sain et il y a interblocage: dans ce cas si Card(S)=k <n alors il y a
(n-k) processus interbloqués.

Algorithme de Détection de l'interblocage:


Rmax : array [1..m] of constant init [r1max r2max rm max];
Available : array [1..m] of integer;
Work : array [1..m] of integer;/* vecteur de travail */
Allocate :array [1..n,1..m] of integer;
Request :array [1..n,1..m] of integer;
Reste : set of processus;
Possible : boolean;
Initialisation: Available := Rmax;
Procedure SafeTest();
Begin
Possible := true;
Reste:={P1,P2, ...., Pn};
Work:=Available;
While (Possible) and Reste <> {} do
Begin
Chercher p dans Reste tel que Request[p,*] <= Work;
If trouvé then
Begin
Reste:= Reste-{p};
Work:=Work+Allocate[p,*];
End;
Else Possible:=false;
End;
End SafeTest;

Chargée de cours Docteur N. TOUBALINE 2/4


Université de Blida 1 Système d’exploitation 2
Département d’informatique 3ème LMD SIQ

Après exécution de SafeTest, si Reste ={} ensemble vide alors l'état est sain (pas d'interblocage);
sinon il y a interblocage et Reste contient les numéros des processus interbloqués.
2. Cas de ressources en un seul exemplaire.
Dans ce cas, pour réduire le nombre d'opérations de l'algorithme de test de l'état sain, on utilise une
variante du graphe d'état appelée graphe des attentes. Ce dernier graphe est obtenu en éliminant
du graphe d'état tous les sommets de type ressource et en ne gardant que les sommets de type
processus, on effectue alors la fusion des arcs appropriés:
(Pi,Rk) et (Rk,Pj) -----> (Pi,Pj) ceci indique que Pi attend une ressource détenue par Pj.
Méthode de détection:
1) Construire le graphe des attentes.
2) Détecter un interblocage revient à rechercher au moins un circuit dans le graphe des attentes:
l'absence de circuit indique un état sain (pas d'interblocage); la présence d'un circuit indique que les
processus formant ce circuit sont interbloqués.
Guérison de l'interblocage : La guérison de l'interblocage vise à reprendre l'exécution du système
dans un état cohérent et sain. Ceci ne peut être fait qu'en récupérant des ressources déjà allouées : il
y aura donc réquisition ou retrait forcé appliquée à ces ressources. Ceci entraine une transformation
de ces ressources en ressources préemptibles.
8. Méthodes de prévention de l’interblocage
Méthodes de prévention statique: Le principe général suivi est que lorsqu'on ne connait rien à
l'avance sur les demandes des processus les méthodes de prévention statique consistent à introduire
des contraintes permettant d'éliminer d'entrée l'une des 4 conditions nécessaires d'interblocage.
Méthode de prévention dynamique:Afin d'éviter dynamiquement tout interblocage, on a besoin
d'information supplémentaire sur l'évolution des demandes de ressources de chaque processus. Il y a
plusieurs modèles possibles selon le volume d'information requis: le modèle le plus simple exige de
chaque processus de déclarer à l'avance sous forme d'une annonce le nombre maximum d'unités de
ressources de chaque classe dont il peut avoir besoin. Un algorithme de prévention dynamique de
l'interblocage permet, en se basant sur cette annonce, d'éviter l'interblocage en simulant pour
chaque demande d'un processus le nouvel état qu'on obtiendrait si la demande est satisfaite et en
évaluant le risque d'interblocage engendré par cet état. Cet algorithme est basé sur la notion d'état
fiable :un état est fiable si ,à partir de cet état, il est possible de faire exécuter tous les processus du
système sans interblocage dans l'hypothèse (la plus pessimiste) où chaque processus demande
effectivement la quantité maximale de ressource prévue dans son annonce.
Cet algorithme n'alloue une ressource que si cette allocation maintient le système dans un état
fiable. On aura donc besoin de deux matrices supplémentaires:
1)Annonce=Matrice des demandes maximales de ressources ,de dimension n x m , telle que:
Annonce[i,j] = nombre maximum d'unités de ressources de la classe j que le processus Pi peut
demander avant son éxécution.
2)Need=Matrice des besoins maxi de chaque processus, de dimension n x m , telle que:
Need=Annonce - Allocate
Need[i,j] = nombre maximum d'unités de ressources de la classe j que le processus Pi peut demander
à chaque instant.
Notion d'état fiable: Le système est dit dans l'état fiable si on peut allouer les ressources dans un
certain ordre tel que tous les processus du système peuvent s'exécuter jusqu'à leur fin sans
interblocage. D'une manière plus formelle ceci revient à trouver une suite S dite fiable et complète
de processus : S= { Pi, Pj, ... Ps } suite ordonnée contenant les n processus du système et telle que
pour tout processus Pl de cette suite les besoins maximaux de Pl en attente peuvent être totalement
satisfaits en prenant l'ensemble des ressources disponibles et des ressources détenues par
l'ensemble des processus qui précèdent Pl dans la suite. Pour prévenir dynamiquement un
interblocage dans un système par test de l'état fiable, il suffit de réaliser un algorithme permettant

Chargée de cours Docteur N. TOUBALINE 3/4


Université de Blida 1 Système d’exploitation 2
Département d’informatique 3ème LMD SIQ

de construire une suite fiable de processus S. Si la suite S est complète alors le système est dans un
état fiable et il n'y a pas de risque d'interblocage. Si S est incomplète et ne peut plus être prolongée
en une suite fiable complète alors l'état n'est pas fiable et il y a risque d'interblocage.

Algorithme du Banquier:
Rmax : array [1..m] of constant init [r1max r2max rm max];
Available : array [1..m] of integer;
Work : array [1..m] of integer;/* vecteur de travail */
Allocate :array [1..n,1..m] of integer;
Request :array [1..n,1..m] of integer;
Annonce :array [1..n,1..m] of integer;
Need :array [1..n,1..m] of integer;
Reste : set of processus;
Possible : boolean;
A chaque requête d'un processus Pi cet algorithme est lancé:

Begin
Need:=Annonce - Allocate ;
If Request[i,*] > Need[i,*] then "erreur demande rejetée car annonce dépassée"
Else If Request[i,*] > Available then /*ressources insuffisantes */ < mettre Pi en attente> ;
Else Begin /*simuler l'allocation */
Available:=Available - Request[i,*] ;
Allocate[i,*]:=Allocate[i,*] + Request[i,*] ;
Need[i,*]:=Need[i,*] - Request[i,*] ;
End;
/* Tester si état fiable */
SafeTest(); /*procedure SafeTest mais en remplaçant
Request[p,*] par Need[p,*] */
If état fiable then "allocation acceptée " <valider l'allocation>
Else
Begin /* état non fiable */ "allocation refusée"
<restaurer état antérieur du système :Available ; Allocate[i,*]; Need[i,*]; >
< mettre Pi en attente> ;
End;
End Banquier;

9. Conclusion
Le problème de choisir entre méthodes de prévention et méthodes de détection-guérison ne peut se
résoudre qu'en évaluant le coût (rendement du système) engendré par l'adoption de chacune de ces
approches en tenant compte des facteurs : fréquence des interblocages, nombre de processus
interbloqués. En fait, aucune approche n'est totalement satisfaisante pour résoudre à elle seule tous
les cas d'interblocage.
L'expérience prouve qu'il est en général meilleur de combiner plusieurs méthodes de prévention et
de détection-guérison pour résoudre le problème de l'interblocage dans un système. Il est donc
recommandé de partitionner ce problème en plusieurs sous-problèmes et de trouver pour chacun
d'eux la méthode la plus adéquate.

Chargée de cours Docteur N. TOUBALINE 4/4