Vous êtes sur la page 1sur 7

Chapitre 3 : Interblocage

1) Interblocage, c’est quoi ?


Un ensemble de processus est dans une situation d’interblocage si chaque processus de cet ensemble attend
une ressource déjà possédée par un autre processus du même ensemble. Dans une telle situation aucun ne
peut poursuivre son exécution. L’attente des processus est infinie.

2) Exemple d’interblocage:
a) Ressources imbriquées :
Revoir le cours précédant

b) Problème des philosophes :


Revoir le cours précédant

3) Conditions d’interblocage:
Quatre conditions doivent être vérifiées simultanément (en même temps) dans le système pour qu’un
interblocage puisse se produire :
 Exclusion mutuelle: A un instant précis, une ressource est allouée à un seul processus;
 Possession et attente : Il existe au moins un processus possédant une ressource et qui attend
d’acquérir des ressources supplémentaires détenues par d’autres processus. Les processus demandent
les ressources au fur et à mesure de leur exécution;
 Pas de réquisition : Les ressources sont libérées sur seule volonté des processus les détenant;
 Attente circulaire : Il existe un cycle d’attente entre k processus P1, P2, ..., Pk tels que :
 P1 attend une ressource détenue par P2
 P2 attend une ressource détenue par P3
 ...
 Pk attend une ressource détenue par P1.
Les processus impliqués dans ce cycle sont en interblocage.

4) Politiques de traitement d’interblocage:


Il existe quatre méthodes de traitement des situations d’interblocage : la politique de l’autruche, la politique
de guérison, la politique de prévention, et la politique d’évitement.

a) Politique de l’autruche:
Elle consiste à ignorer l’existence des interblocages et donc de ne rien prévoir pour les traiter. Simplement la
machine est redémarrée lorsque trop de processus sont en interblocage. Malheureusement, c’est l’approche
utilisée par Windows et UNIX, parce que les interblocages surviennent rarement, et aussi le coût des autres
politiques est élevé.

1
b) Politique de guérison:
Dans cette politique on autorise les interblocages à se produire. On les détecte puis on les résout. Mais
comment ?
i) Détection:
Le système maintient un graphe appelé graphe d’allocation des ressources dont la notation est comme suit:

 Processus:

 Ressource dont il y a un seul exemplaire:

 Ressource dont il y a N exemplaires (instances) (ex: 4) :

 Pi demande (attend) un exemplaire de Rj, dont il y en a 3 (arc de requête):

 Pi détient (utilise) un exemplaire de Rj (arc d’affectation):

Exemple:

Graphe 1

Y-a-t-il un interblocage ?
Réponse : Non

 Dans un tel graphe, l’absence de cycle garantit (équivalent à) l’absence d’interblocage, contrairement au
graphe suivant :

Graphe 2

2
Remarques:
 Dans un graphe pour lequel chaque ressource existe en un seul exemplaire, alors la présence d’un cycle
implique forcément la présence d’un interblocage et tous les processus participant au cycle sont
interbloqués.
 Dans un graphe pour lequel chaque ressource existe en plusieurs exemplaires, la présence d’un cycle
peut produire un interblocage.

Graphe 3

Alors, pour détecter l’interblocage, Il faut d’abord chercher un cycle, puis se poser la question suivante: Y-a-
t-il au moins un processus qui peut terminer, si oui, quels autres processus peuvent terminer en
conséquence?

Le système met à jour le graphe à chaque nouvelle allocation de ressources ou demande d’allocation de
ressources.

Matrices de modélisation d’allocations de ressources:


On considère que le système est composé de :
 n processus P1, P2, ...., Pn ;
 et de m classes (types) de ressources R1, R2, …, Rm.
On représente les demandes et les allocations de ressources par 4 tableaux:
1. Vecteur des ressources existantes:
 E: Tableau de m entiers indiquant le nombre maximum d'exemplaires des ressources
(disponible au départ). Exemple pour le graphe 2: E=(1,2,1,3)
2. Vecteur des ressources disponibles (Available):
 Available: Tableau de m entiers indiquant le nombre d'exemplaires libres (disponibles) des
ressources. Exemple: Available=(0,0,0,3)
 Au départ ce vecteur est égal au vecteur des ressources existantes E.
3. Matrice d'allocation (Allocation) :
 Allocation: matrice de n×m entiers indiquant le nombre d'exemplaires de la ressource Rj
alloués au processus Pi. Exemple :

3
4. Matrice des demandes en attente(Request) :
 Request: matrice de n×m entiers indiquant le nombre d'exemplaires de la ressource Rj
demandés et non obtenus par le processus Pi. Exemple :

Algorithme de détection d’interblocage:

Début
Work: Tableau[m] d’Entier ;
Finish: Tableau[n] de booléen ;
Etape 1. Initialisation:
(a) Work = Available.
(b) Finish[*] = FALSE; // le * signifie pour tous les i
Etape 2. Trouver un indice i tel que :
(a) Finish[i] == FALSE, et
(b) Request[i,*] <= Work.
Si un tel i n’existe pas aller à l’étape 4.
Etape 3.
Work = Work + Allocation[i,*]
Finish[i] = TRUE
Aller à l’étape 2
Etape 4.
Si Finish[i]=FALSE (pour certain i) Alors Le système est dans un état d’interblocage
Sinon Le système n’est pas dans un état d’interblocage

À appliquer sur les graphes 2 et 3


ii) Guérison:
Régulièrement le système parcourt le graphe à la recherche de cycles. Si un cycle est découvert et que celui-
ci correspond bien à une situation d’interblocage, alors ce cycle est cassé :
 Soit en avortant les processus en interblocage appartenant au cycle,
 Soit en réquisitionnant les ressources allouées à certains processus participant à l’interblocage pour les

redistribuer aux autres processus.

c) Politique de prévention:
Pour qu’un interblocage puisse se produire, il faudrait que les 4 conditions d’interblocage soient vérifiées,
alors pour prévenir l’interblocage il suffit d’éliminer une condition d’entre elles. Les deux seuls conditions

4
sur lesquelles il est possible d’agir sont la condition de possession et attente ainsi que la condition d’attente
circulaire.
i) Éliminer Possession et attente:
Pour éliminer cette condition, on doit s’assurer que le processus ayant fait la requête ne dispose pas d’autres
ressources. Deux approches possibles:
 Allouer toutes les ressources demandées d’un seul coup (ou rien);
 Imposer la libération des ressources.
ii) Éliminer l’attente circulaire:
Une solution est d’imposer un ordre total sur l’ordre d’allocations des différentes ressources du système:
ainsi par exemple l’unité de CD doit toujours être demandée avant le disque, et le disque doit lui-même être
toujours demandée avant l’imprimante. Donc Les processus peuvent demander toutes les ressources dont ils
ont besoin, à condition de respecter l'ordre croissant de la numérotation des ressources. Si un processus
détient des ressources d'un type donné, il ne peut demander que des ressources dont les numéros soient plus
élevées

d) Politique d’évitement:
Ici, à chaque demande d’allocation de ressource faite par un processus, le système déroule un algorithme
appelé algorithme du banquier qui regarde si cette allocation peut mener le système en interblocage. Pour
chaque nouvelle allocation demandée, l’algorithme du banquier examine l’état d’allocation résultant pour
déterminer si celui-ci est sain ou malsain :
 Un état est sain si le système peut allouer des ressources à chaque processus (jusqu’à satisfaire sa
demande maximale) dans un certain ordre et encore éviter l’interblocage ;
 Un état sain ne conduit pas à l’interblocage ;
 Un état malsain peut conduire à l’interblocage.
À chaque nouvelle demande d’allocation, le système tente de construire une séquence d’exécution de chaque
processus en lui allouant le nombre maximale de ressources encore demandées. Si une telle séquence est
construite alors l’état résultant de la nouvelle allocation est sain, sinon il est malsain.
Exemple 01:
Considérons trois processus P1, P2, et P3 et un ensemble de ressources composé de 12 imprimantes. Le
tableau suivant donne l’état d’allocation courant :
Besoins maximaux Ressources allouées Besoins
Processus
BM RA (BM-RA)
P1 10 5 5
P2 4 2 2
P3 9 2 7

Le nombre de ressources disponible est égal à 3.


La séquence d’exécution <P2, P1, P3> est saine :
 Satisfaction de P2, ressources disponibles = 1 ;
 Restitution des ressources par P2, ressources disponibles = 5 ;
5
 Satisfaction de P1, ressources disponibles = 0 ;
 Restitution des ressources par P1, ressources disponibles = 10 ;
 Satisfaction de P3, ressources disponibles = 3 ;
 Restitution des ressources par P3, ressources disponibles = 12 ;
Exemple 02:
Considérons à présent le nouveau tableau résultant de l’allocation au P3 d’une imprimante :
Besoins maximaux Ressources allouées Besoins
Processus
BM RA (BM-RA)
P1 10 5 5
P2 4 2 2
P3 9 3 6

Le nombre de ressources disponibles est égal à 2.


L’état devient malsain et aucune séquence d’exécution incluant les 3 processus ne peut être construite. Ici,
seul P2 peut être satisfait:
 Satisfaction de P2, ressources disponibles = 0 ;
 Restitution des ressources par P2, ressources disponibles = 4 ;
Maintenant, ni P1, ni P2 ne peuvent être satisfaits.
Algorithme du banquier:
Cet algorithme (Dijistra, Habermann) consiste à examiner chaque nouvelle requête pour voir si elle conduit
à un état sûr.
 Si c'est le cas, la ressource est allouée,
 sinon la requête est mise en attente.
L'algorithme détermine donc si un état est sain ou malsain. Pour cela on a les structures de données
suivantes :
 Available
 Allocation
 Request: Matrice n×m indiquant les ressources supplémentaires que les processus viennent de
demander.
 Max: Matrice nm définissant la demande maximale de chaque processus.
 Need: Matrice n×m indiquant les ressources restant à satisfaire à chaque processus.
 Si Need[i, j]=k: cela veut dire que le processus Pi peut avoir besoin de k instances au plus du type de
ressources Rj pour achever sa tâche.

Début
Étape 1:
Si Requesti ≤ Needi Alors Aller à l’étape 2
Sinon erreur: le processus a excédé ses besoins maximaux
Étape 2:
Si Requesti ≤ Available Alors Aller à l’étape 3
Sinon Attendre (les ressources ne sont pas disponibles)
Étape 3:
Sauvegarder l’état du système (les matrices Available, Allocation et Need).
Allouer les ressources demandées par le processus Pi en modifiant l’état du système de la manière suivante :
Available := Available - Requesti

6
Allocationi := Allocationi + Requesti
Needi := Needi – Requesti
Si Verification_Etat_Sain = Vrai Alors L’allocation est validée
Sinon L’allocation est annulée ;
Restaurer l’ancien État du système
Fin.

Vous aimerez peut-être aussi