TD Interblocage 2021
TD Interblocage 2021
TD Interblocage 2021
Les interblocages
Exercice N° :01
Le graphe d’allocation de ressources pour un système à un moment donné est le suivant:
Exercice N° :02
Circulation routière. Considérons deux routes à double sens qui se croisent comme dans la
figure ci-dessous.
Est-ce qu’il existe une situation d'interblocage ? Si oui donner les 4 conditions nécessaires
Exercice N° :03
Soient trois processus concurrents qui utilisent en exclusion mutuelle 6 ressources différentes
(de A à F). Ces trois processus exécutent respectivement les codes suivants :
Ces processus concurrents peuvent-ils entrer en interblocage ? Expliquez à l’aide d’un graphe.
Si oui, peut-on l’éviter ? Justifiez brièvement.
Exercice N° :04
Donnez une solution au problème des cinq philosophes en utilisant les sémaphores sans risque
d’interblocage.
Exercice N° :05
Dans un système électronique de transfert de fonds, il existe des centaines de processus
identiques qui fonctionnent comme suit : Chaque processus lit une ligne de données qui
spécifie la quantité d’argent, le numéro de compte à créditer et le numéro de compte à débiter.
Il verrouille ensuite l’un après l’autre les deux comptes, transfère l’argent puis libère les
verrous.
Exercice N° :06
Un système est composé de quatre processus P1, P2, P3, P4 et de trois types de ressources.
Initialement, le système est décrit par :
2 2 1
Available = (2, 5, 3) et Max = 0 3 0
1 2 3
0 1 2
1 2 1
0 1 0
Soit la situation Allocation = 0 0 1
0 1 1
Exercice N° :02
Exercice N° :03
1 détient D, E attend C
2 détient C attend B
3 détient A, B attend E
Oui, en utilisant l’algorithme du banquier
Exercice N° :04
Algorithme sans risque d’Interblocage, en niant condition 4 “attente circulaire”
==> Briser le cycle, en empêchant son apparition : en imposant un ordre d’acquisition des
fourchettes
Ex: Demander les fourchettes selon les numéros croissant et pour P4, demander d’abord la
fourchette F0
Repeat
Penser // sans fourchette !
If i <> 4 Then
Begin
Wait(Fourchettes[ i ])
Wait (Fourchettes[ (i + 1) mod 5 ]
EndIf
Else
Begin
Wait (Fourchettes[ 0 ])
Wait (Fourchettes[ 4 ]
EndIf
Manger avec fourchettes gauche et droite
Signal(Fourchettes[i])
Signal(Fourchettes[ (i + 1) mod 5 ]
Until false
Exercice N° :05
2. Il suffit de faire en sorte qu’il n’y est pas d’attente circulaire. Chaque processus doit
verrouiller le compte le plus petit avant le compte le plus grand.
3. Oui, on connaît les besoins de chaque processus. On peut donc utiliser l’algorithme du
banquier.