chapitre 6 : Interblocage

publicité
Interblocage
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 :
le spooling massif ; un processus P veut
imprimer des données ; comme le
système utilise un spool, le processus
envoie ses données sur un disque (buffer)
et le périphérique (imprimante) attend
que toutes les donnée soient sur le disque
pour imprimer. Mais si le buffer est plein
avant que le processus ait envoyé toutes
ses données, le processus va attendre et
l'imprimante, de son côté, attend aussi.
exemple 2 :
Interblocage
Solution des exercices
Solution de l'exercice 1
L'état 1 est un état sain. On peut, en effet opérer de la manière suivante :
●
●
●
●
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
●
●
●
P4 n'a pas de ressources allouées ;il peut donc être marqué ;
On pose W = DI = (0,0,0,0,1)
La ligne P3 de B satisfait la condition : on marque P3 et W devient (0,0,0,1,1).
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.
2) vérification avec les graphes
Le graphe est indiqué ci-dessous :
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
On peut utiliser l'algorithme de l'exercice précédent :
●
●
●
●
W = (2, 1, 0, 0)
P3 <= W donc P3 est marqué et W = (2,1,0,0) + (0,1,2,0) = (2,2,2,0)
P2 <= W donc P2 est marqué et W = (2,2,2,0) + (2,0,0,1) = (4,2,2,1)
P1 <= W donc P1 est marqué
Tous les processus étant marqués, il n'y a pas d'interblocage.
Interblocage
Exercices
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
P1
3
2
2
P2
6
1
3
P3
3
1
4
P4
4
2
2
disponibilités
R1
R2
R3
9
3
6
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.
état 1
état 2
état 3
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).
Si , à la fin de l'algorithme il existe des processus non marqués, il y a un interblocage.
Appliquer cet algorithme à, l'exemple suivant :
matrice B
matrice A
R1 R2 R3 R4 R5
vecteur DT
vecteur DI
R1 R2 R3 R4 R5
R1 R2 R3 R4 R5
2
0
R1 R2 R3 R4 R5
P1 0
1
0
0
1
P1 1
0
1
1
0
P2 0
0
1
0
1
P2 1
1
0
0
0
P3 0
0
0
0
1
P3 0
0
0
1
0
P4 1
0
1
0
1
P4 0
0
0
0
0
Examiner le même problème avec la méthode des graphes.
Exercice 3
Détecter s'il existe un interblocage dans le système suivant :
1
1
2
1
0
0
0
1
besoins
disponibilités instantanées
allocation courante
R1 R2 R3 R4
R1 R2 R3 R4
R1 R2 R3 R4
P1 2
0
0
1
P1 0
0
1
0
2
P2 1
0
1
0
P2 2
0
0
1
P3 2
1
0
0
P3 0
1
2
0
1
0
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 cicontre) 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.
Esquive des interblocages
La solution la plus connue pour esquiver les interblocages est l'algorithme du "banquier" (Dijkstra - 1965).
Pour exposer sa philosophie, on considérera dans ce qui suit que l'on a u utilisateurs et r ressources
identiques. L'algorithme consiste alors en les règles suivantes :
●
●
●
●
Chaque utilisateur indique à l'avance le nombre maximum de ressources dont il a besoin ;
Le système d'exploitation accepte une demande si celle-ci ne dépasse pas r ;
Un utilisateur peut acquérir ou libérer une ressource une par une ;
Une attente est possible, mais elle doit rester finie.
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.
exemple 1 : 12 ressources, 3 utilisateurs
Si on donne 2 ressources à U(2), il peut finir et il
libère alors 6 ressources.
On en prend 3 que l'on donne à U(1) qui peut alors
finir et libérer ainsi 4 ressources.
On prend 3 autres ressources pour U(3) qui peut
alors finir.
En conclusion l'état I est un état sain
exemple 2 : mêmes conditions que l'exemple précédent.
L'unique ressource disponible ne suffit pas à
contenter n'importe lequel des utilisateurs.
En conclusion, l'état II est non sain.
exemple 3 : mêmes conditions que dans l'exemple précédent.
Un état sain peut devenir non sain par mauvaise
allocation des ressources.
Si U(3) acquiert 1 ressource, on passe à l'état III
qui est non sain.
On comprend donc le rôle décisif de l'allocation de
ressources.
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.
Détection des interblocages
La méthode générale est l'utilisation de graphes d'allocation de ressources.
Le processus P1 demande une ressource de classe R1
Une ressource de classe R2 a été allouée au
processus P2
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
état initial
réduction par P3
réduction par P1
Guérison des interblocages
La solution principale est la suspension de processus (guérison dans la douleur).
réduction par P2
Plusieurs méthodes sont à considérer :
●
●
●
●
suspension de tous les processus bloqués
faire repartir le traitement à partir d'un point de contrôle antérieur
suspension successive es processus bloqués
retrait successif des ressources des processus bloqués.
Téléchargement