Généralités
Les interblocages sont des situations assez courantes dans la vie quotidienne. Le meilleur exemple est celui
du rond point avec priorité à droite. Si 4 routes arrivent à ce rond point et s'il y a quatre véhicules, aucun
ne peut s'engager sur le rond point puisque chaque véhicule possède à sa droite un voisin.
En informatique, ce problème survient également quand des processus convoitent les mêmes ressources. Le
terme interblocage est quelquefois remplacé par les expressions poétiques "verrou mortel" (en anglais
deadlock), "étreinte fatale",...
exemple 1 :
exemple 2 :
Interblocage
Solution des exercices
Solution de l'exercice 1
● a) on donne 1 unité R3 à P2 ce qui lui permet de terminer on exécution. On récupère alors les
ressources de P2.
● b) on donne 2 unités R1, 2 unités R2, 2 unités R3 à P1 ce qui lui permet de terminer son exécution. On
récupère alors les ressources de P1.
● c) on donne 1 unité R1 et 3 unités R3 à P3, ce qui lui permet de terminer son exécution. On récupère
alors ses ressources.
● d) on donne 4 unités R1 et 2 unités R2 à P4 ce qui termine tous les traitements.
L'état 2 est également un état sain : on peut donner à P2 les ressources qui lui manquent et ensuite les
récupérer, ce qui permettra, comme dans le cas de l'état 1 d'aller au terme des exécutions.
L'état 3 est un état non sain. En effet, on ne peut donner à un processus les ressources qui lui
permettraient de se terminer. On a donc un interblocage.
Solution de l'exercice 2
1) application de l'algorithme
On ne peut continuer à l'étape 3, donc l'algorithme est terminé. On remarque que seulement P4 et P3 sont
marqués : il y a donc interblocage.
On voit que la seule ressource non affectée est une ressource de R5. Si on donne cette unité à P4, cela ne
suffit pas pour qu'il ait toutes les ressources nécessaires ; si on la donne à P3, cela permet la terminaison
de ce processus qui libère les ressources qu'il possède. Donner R5 à P2 ou P1 ne suffit pas à loes terminer.
On reste donc avec une boucle P1 - R2- P2 - R3 - P1 qui est l'indication d'un interblocage.
Solution de l'exercice 3
Exercice 1
On considère 4 processus P1, P2, P3, P4 et 3 types de ressources R1, R2, R3. Les tableaux ci-dessous
expriment les besoins en ressources des processus pour leur exécution complète ainsi que les disponibilités
totales, en unités arbitraires, de ressources des trois types :
besoins
R1 R2 R3
disponibilités
P1 3 2 2
R1 R2 R3
P2 6 1 3
9 3 6
P3 3 1 4
P4 4 2 2
A un instant donné, le système est dans l'un des états suivants . Indiquez si ces états sont sains ou non
sains au sens de l'algorithme du banquier et dans l'affirmative, indiquer la suite d'états permettant
d'exécuter complètement les processus.
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 1 0 0 P1 1 0 0 P1 2 0 1
P2 6 1 2 P2 5 1 1 P2 5 1 1
P3 2 1 1 P3 2 1 1 P3 2 1 1
P4 0 0 2 P4 0 0 2 P4 0 0 2
Exercice 2
Coffman, Elphick et Shoshani ont donné en 1971 un algorithme pour détecter les interblocages :
On utilise la matrice des besoins B, qui exprime les besoins instantanés en unités de ressources de chacun
des processus, la matrice A des allocations de ressources (à un instant donné) , le vecteur DT des
disponibilités totales de ressources et le vecteur DI des disponibilités instantanées. L'algorithme est le
suivant :
1. On marque chaque processus qui possède une ligne de zéros dans la matrice A ;
2. On initialise un vecteur W avec la valeur initiale de DI ;
3. On recherche l'indice i par mi les processus Pi qui ne sont pas marqués de manière que la ième ligne
de B a ses éléments plus petits ou égaux à ceux de W. S'il n'est pas possible de trouver un tel
indice, l'algorithme est terminé.
4. Si on a trouvé un indice i répondant au critère ci-dessus, on marque le processus Pi et on ajoute la
ligne i de A à W et on revient à l'étape 3).
matrice B matrice A
R1 R2 R3 R4 R5 R1 R2 R3 R4 R5 vecteur DT vecteur DI
P1 0 1 0 0 1 P1 1 0 1 1 0
R1 R2 R3 R4 R5 R1 R2 R3 R4 R5
P2 0 0 1 0 1 P2 1 1 0 0 0
2 1 1 2 1 0 0 0 0 1
P3 0 0 0 0 1 P3 0 0 0 1 0
P4 1 0 1 0 1 P4 0 0 0 0 0
Exercice 3
Détecter s'il existe un interblocage dans le système suivant :
besoins allocation courante
disponibilités instantanées R1 R2 R3 R4 R1 R2 R3 R4
R1 R2 R3 R4 P1 2 0 0 1 P1 0 0 1 0
2 1 0 0 P2 1 0 1 0 P2 2 0 0 1
P3 2 1 0 0 P3 0 1 2 0
Un processus P1 utilise deux ressources A et B, il
possède A et demande B ; un autre processus P2
utilise les mêmes ressources, il possède B et
demande A. Il est clair que cette situation (qui est
en fait une chaîne comme le montre le diagramme ci-
contre) est un interblocage.
L'analyse des situations qui peuvent mener à un interblocage (Coffman, Elphick, Shoshani - 1971) conduit
aux 4 conditions d'interblocage suivantes :
● C1 : Mutual Exclusion Condition ; Les processus demandent le contrôle exclusif des ressources qu'ils
demandent
● C2 : Wait For Condition ; Des processus détiennent des ressources et attendent des ressources
complémentaires
● C3 : No Préemption Condition ; Des ressources ne peuvent être enlevées à des processus qui les
détiennent tant qu'elles ne sont pas complètement utilisées.
● C4 : Circular Wait Condition ; Il existe une chaîne circulaire de processus où chaque processus
détient des ressources demandées par le processus suivant.
Il y quatre façon principales d'aborder le problème de l'interblocage. Nous allons les explorer les unes
après les autres.
Prévention des interblocages
(Havender - 1968). Plusieurs stratégies peuvent être envisagées. Nous en donnons ci-dessous trois exemples
:
Stratégie 1 : acquisition des ressources en "tout ou rien". Chaque processus doit demander toutes les
ressources dont il a besoin en une seule fois et doit attendre s'il n'est pas possible de les obtenir.
Cette stratégie est une solution à la condition C2. Toutefois elle possède plusieurs inconvénients. Un
processus risque d'attendre longtemps avant d'obtenir ses ressources ; il peut y avoir un gâchis éventuel de
ressources (quelques unes très utilisée, les autres peu utilisées mais mobilisées) ; on peut néanmoins
améliorer cet inconvénient par découpage d'un processus en sous-processus.
Stratégie 2 : Si un processus détient certaines ressources et si on lui refuse une ressource supplémentaire,
il doit libérer toutes ses ressources. Cette stratégie est une solution à la condition C3. L'inconvénient de
cette stratégie est le risque de faire attendre longtemps certains processus.
Stratégie 3 : On impose une numérotation des types de ressources :si un processus détient des ressources
d'un type donné, il ne peut demander que des ressources dont les numéros sont plus élevés. Cette stratégie
est une réponse à la condition C4.
On considère que le système informatique peut être dans l'un des deux états suivants :
● état SAIN : les utilisateurs peuvent terminer leurs travaux dans un temps garanti comme fini.
● état NON SAIN : pas de garantie
et l'algorithme du banquier consiste à allouer les ressources (d'après les règles précédentes) de manière à
passer d'un état sain à un autre état sain.
Bien entendu, le raisonnement précédent a porté sur un cas peu réaliste. Dans la réalité, le nombre
d'utilisateurs peut varier de même que le nombre de ressources. Par ailleurs, il est difficile de connaître à
l'avance le maximum de ressources demandées par un utilisateur.
Circular Wait :
La détection des interblocages s'effectue par réduction du graphe : si une demande de processus peut être
satisfaite, on l'effectue et on libère la ressource ; le graphe est alors réduit par ce processus. Il n'y a pas
d'interblocage si le graphe peut être réduit par tous ses processus, sinon l'irréductibilité indique un
interblocage.
exemple