Vous êtes sur la page 1sur 21

Exercice 1: Déduction blocages par réduction du Graphe d’Allocation

État après la demande par P2 d’une unité de R1, accordée puisque la ressource est disponible :

R1 R2

P2

État après la demande par P1 d’une unité de R1, accordée puisque la ressource est disponible :

P1

R1 R2

P2
État après la demande par P1 d’une unité de R2, accordée puisque la ressource est disponible :

P1

R1 R2

P2

État après la demande par P3 de deux unités de R2, accordées puisqu’elles sont disponibles :

P1

R1 R2

P2 P3
État après la demande par P2 d’une unité de R2; mise en attente de P2 puisque la ressource
est indisponible :
P1

R1 R2

P2 P3

État après la demande par P3 d’une unité de R1; mise an attente de P3 puisque la ressource
est indisponible :
P1

R1 R2

P2 P3
Cet état final est-il un état de blocage ou non? Pour le déterminer on applique la procédure
de réduction de graphe sur le graphe d’allocation de ressources associé à l’état final :

P1

R1 R2

P2 P3

Le processus P1 n’a pas de demande en attente. On peut donc éliminer P1, ce qui donne :

P1

R1 R2

P2 P3
On peut ensuite accorder la demande de P2 ou celle de P3. On a donc le choix entre P2
ou P3. On commence par P2, qui détient alors (selon la simulation) ce qu’il a demandé :

P1

R1 R2

P2 P3

Le processus P2 n’a pas de demande en attente. On peut donc éliminer P2, ce qui donne :

P1

R1 R2

P2 P3
On accorde enfin la demande de P3 :

P1

R1 R2

P2 P3

Le processus P3 n’a pas de demande en attente. On peut donc éliminer P3, ce qui donne :

P1

R1 R2

P2 P3

Le graphe ayant été complètement réduit, l’état final n’est pas un état de blocage.
Exercice 2. Trouver des états sûrs

État après la demande par P1 d’une unité de R1, accordée puisque la ressource est disponible :

P1

R1 R2

L’état est sûr puisqu’un seul processus détient des ressources et il faut au moins deux
processus détenant des ressources pour avoir blocage (lors de l’application du test de sûreté).
État après la demande par P2 d’une unité de R1, accordée puisque la ressource est disponible :

P1

R1 R2

P2
Pour déterminer si l’état est sûr on ne se préoccupe que de P1 et de P2, car P3 ne détenant
aucune ressource ne peut pas participer à un blocage. On suppose donc les demandes
maximales pour P1 et P2 tenant compte de ce qu’ils détiennent (flèches rouges).

P1

R1 R2

Le test de sûreté consiste à déterminer si l’on a un blocage


dans cet état fictif. On applique donc à ce graphe la
P2 procédure de réduction de graphe (ci-dessous) :

P1 peut acquérir les ressources qu’il demande et on peut éliminer P1 :

P1 P1

R1 R2 R1 R2

P2 P2
Comme il ne reste plus qu’un processus, P2, il ne peut y avoir blocage (on sait a priori qu’on
peut réduire le graphe jusqu’au bout). Donc l’état est sûr.
État après la demande par P1 d’une unité de R2, accordée puisque la ressource est disponible :

P1

R1 R2

P2
Pour déterminer si l’état est sûr on suppose les demandes maximales de P1 et P2 :

P1

R1 R2 La demande de P1 peut être satisfaite. P1 détient


alors 1 unité de R1 et 2 unités de R2 et n’a pas de
demande en attente. P1 peut donc être éliminé.
Comme il ne reste que P2, il ne peut pas y avoir de
P2
blocage. L’état est donc sûr.
État après la demande par P3 de deux unités de R2, accordées puisque disponibles :

P1

R1 R2

P2 P3

Pour déterminer si l’état est sûr on suppose les demandes maximales de P1, P2 et P3 :

P1

R1 R2

P2 P3
Aucune ressource n’est disponible et, comme chaque processus détient au moins une
ressource et en demande au moins une, aucune réduction n’est possible. Il y a donc
blocage en supposant les demandes maximales. L’état n’est donc pas sûr ou, plus
exactement, on ne peut pas garantir que l’état est sûr.

État après la demande par P1 d’une unité de R2; P1 est mis en attente.

P1 Pour déterminer si l’état est sûr on suppose les


demandes maximales de P1, P2 et P3, ce qui
donne l’état fictif ci-dessous.
La situation est identique à celle de l’état fictif
R1 R2 associé à l’état précédent du système.
La conclusion est donc la même. L’état n’est
pas sûr.
P2 P3
P1

Note: dans cet état ainsi que dans l’état précédent R1 R2


aucun processus n’est bloqué.
Ce sont des exemples d’instances d’états non sûrs
pour lesquels il n’y a pas de blocage P2 P3
État après la demande par P3 d’une unité de R2; P3 est mis en attente (figure à gauche).
L’état fictif associé en supposant les demandes maximales est représenté à droite.
La situation est la même que pour l’état précédent. L’état n’est pas sûr.
P1 P1

R1 R2 R1 R2

P2 P3 P2 P3
État après la demande par P2 d’une unité de R1; P2 est mis en attente.

P1 Aucune réduction ne peut être effectuée sur ce graphe.


Les trois processus sont bloqués. Comme l’état est un
état de blocage, l’état n’est pas sûr.
Note : blocage implique non sûr. Ainsi, comme dans
R1 R2 l’état précédent (en haut à gauche) P1 et P3 sont
bloqués, on aurait pu conclure directement - sans
construire l’état fictif en haut à droite – que l’état n’était
P2 P3 pas sûr.
Exercice 3.
Les ressources sont chacune en exemplaire unique. On peut exploiter la propriété que,
dans ce cas, l’existence d’un cycle dans le graphe d’allocation de ressources est
équivalente à un blocage. On construit donc le graphe d’allocation à partir des matrices
BESOIN (demandes) et TENU (ressources acquises).

R1 R2
P1 P2

R3 R4
P3 P4

R5
P5 P6

On distingue facilement deux cycles, P3R2P2R4P3 et P1R2P2R4P3R5P5R3P1; il y a


donc blocage. (Un cycle suffit pour avoir blocage).
On note que tous les processus sont bloqués, même P4 et P6 qui n’appartiennent à
aucun cycle.
Exercice 4. Détection

La version matricielle de l’algorithme de détection de blocage est totalement équivalente


à la procédure de réduction du graphe d’allocation de ressources. Elle a l’avantage
d’être moins lourde lorsque les instances deviennent un peu grosses.
a). On doit d’abord déterminer si l’état suivant est un blocage, sachant que le nombre
total de ressources de chaque classe (capacité) est : N=[ 4 6 2 ]

R1 R2 R3 R1 R2 R3
P1 2 2 2 P1 0 2 0
P2 1 1 0 P2 1 1 0
BESOIN = TENU =
P3 0 1 0 P3 1 1 1
P4 1 1 1 P4 1 0 1

Le nombre total de ressources disponibles est DISPO = [ 1 2 0 ]


C’est, pour chaque classe de ressources, le nombre total de ressources moins la somme
des ressources détenues par les processus.
On cherche maintenant un processus tel que ses demandes soient inférieures ou égales
aux ressources disponibles. C’est le cas de P2 (ou de P3). On suppose donc que P2
obtient les ressources demandées puis exécute la tâche nécessitant ces ressources
supplémentaires et enfin (hypothèse optimiste) se termine, libérant donc toutes les
ressources qu’il détient.
L’état (simulé) est alors

R1 R2 R3 R1 R2 R3
P1 2 2 2 P1 0 2 0
BESOIN = TENU =
P3 0 1 0 P3 1 1 1
P4 1 1 1 P4 1 0 1

DISPO = [ 2 3 0 ]
Seules les demandes de P3 sont inférieures à DISPO et, supposant que P3 s’exécute et
libère toutes les ressources qu’il détient, l’état devient

R1 R2 R3 R1 R2 R3
P1 2 2 2 TENU = P1 0 2 0
BESOIN =
P4 1 1 1 P4 1 0 1

avec DISPO = [ 3 4 1 ]
Seules les demandes de P4 sont inférieures à DISPO . Supposant que P4 s’exécute et
libère toutes les ressources qu’il détient, l’état devient

R1 R2 R3 R1 R2 R3
P1 2 2 2 TENU = P1 0 2 0
BESOIN =

avec DISPO = [ 4 4 2 ]

Comme P1 est seul, il ne peut pas y avoir blocage. Cependant, pour s’assurer que l’on
n’a pas fait d’erreur, on vérifie que les demandes de P1 sont inférieures à DISPO et que
s’il se termine et restitue les ressources qu’il détient on a bien DISPO = N = [4 6 2].
L’état n’est pas un état de blocage.
b) Si P3 demande maintenant une unité supplémentaire de R3, l’état devient

R1 R2 R3 R1 R2 R3
P1 2 2 2 P1 0 2 0
P2 1 1 0 P2 1 1 0
BESOIN = TENU =
P3 0 1 1 P3 1 1 1
P4 1 1 1 P4 1 0 1
Le nombre total de ressources disponibles demeure DISPO = [ 1 2 0 ]
Seules les demandes de P2 sont inférieures à DISPO . Supposant que P2 s’exécute et
libère toutes les ressources qu’il détient, l’état devient

R1 R2 R3 R1 R2 R3
P1 2 2 2 P1 0 2 0
BESOIN = P3 0 1 1 TENU = P3 1 1 1
P4 1 1 1 P4 1 0 1

avec DISPO = [ 2 3 0 ]

Comme pour aucun des processus P1, P3 et P4 les demandes sont inférieures ou égales
aux ressources disponibles, les trois processus sont bloqués.
L’état est un état de blocage.
Exercice 5.
L’état de départ calculé par l’algorithme du banquier est obtenu en supposant que les
processus font leur demande maximale tenant compte des ressources qu’ils détiennent.
La matrice des demandes est donc calculée selon BESOIN’ = MAX -TENU

R1 R2 R3 R1 R2 R3
P1 7 4 3 P1 0 1 0
P2 1 2 2 P2 2 0 0
BESOIN’ = P3 6 0 0 TENU = P3 3 0 2
P4 0 1 1 P4 2 1 1
P5 4 3 1 P5 0 0 2
Le nombre de ressources disponibles étant DISPO = [ 3 3 2 ]
a) On vérifie d’abord que l’état ci-dessus n’est pas un blocage, c’est-à-dire que le
système est dans un état sûr. Ce n’est pas demandé dans l’énoncé car, si le problème est
correctement posé, on part d’un état sûr.
On cherche un processus tel que ses demandes soient inférieures ou égales aux
ressources disponibles. C’est le cas de P2 ou de P4. On suppose que P4, qui détient
plus de ressources que P2, se termine et libère ses ressources. Alors DISPO = [5 4 3].
Maintenant les demandes de P2 et P5 sont inférieures à DISPO. Supposant donc que P2
et P5 s’exécutent séquentiellement et libèrent ce qu’ils détiennent, DISPO = [7 4 5].
Maintenant P1 et P3 peuvent tous les deux s’exécuter, donc l’état est sûr.
b) Si P2 demande [1 0 2], qui est inférieur à DISPO, il est possible de satisfaire cette
demande. Cependant la demande ne sera pas accordée si elle conduit à un état qui ne
peut pas être garanti sûr. L’algorithme du banquier fait donc l’hypothèse que la
demande est accordée et teste si l’état obtenu en supposant que les processus font leur
demande maximale est un état de blocage ou non. Si c’est un blocage, l’état n’est pas
garanti sûr, et la demande n’est pas autorisée; sinon, l’état obtenu est sûr et la demande
est autorisée.
La matrice des demandes est calculée selon BESOIN’ = MAX –TENU où TENU est la
matrice obtenue supposant la demande accordée :
R1 R2 R3 R1 R2 R3
P1 7 4 3 P1 0 1 0
P2 0 2 0 P2 3 0 2
BESOIN’ = P3 6 0 0 TENU = P3 3 0 2
P4 0 1 1 P4 2 1 1
P5 4 3 1 P5 0 0 2

Le nombre de ressources disponibles est DISPO = [ 2 3 0 ]


La demande de P2 est inférieure à DISPO. Supposant P2 exécuté, DISPO = [5 3 2].
Les demandes de P4 et P5 sont inférieures à DISPO. Supposant P4 et P5 exécutés,
DISPO = [7 4 5]. Maintenant les demandes de P1 et P3 sont inférieures à DISPO.
Pas de blocage. L’état est sûr et la demande est autorisée.
c) Si, à partir de l’état initial, P5 demande [3 3 0], qui est inférieur à DISPO = [3 3 2], il
est possible de satisfaire cette demande. Cependant la demande ne sera pas accordée si
elle conduit à un état qui ne peut pas être garanti sûr. Cela revient à tester si l’état
[BESOIN’, TENU] où TENU est la matrice obtenue supposant la demande accordée et
BESOIN’ = MAX –TENU est un état de blocage :

R1 R2 R3 R1 R2 R3
P1 7 4 3 P1 0 1 0
P2 1 2 2 P2 2 0 0
BESOIN’ = P3 6 0 0 TENU = P3 3 0 2
P4 0 1 1 P4 2 1 1
P5 1 0 1 P5 3 3 2
Le nombre de ressources disponibles est DISPO = [ 0 0 2 ]
Il n’y a pas de demande inférieure à DISPO. L’état simulé est un blocage. Accorder la
demande de P5 conduirait à un état non garanti sûr. La demande n’est donc pas
autorisée par l’algorithme du banquier.
d) Si, à partir de l’état initial, P1 demande [0 2 0], qui est inférieur à DISPO = [3 3 2], il
est possible de satisfaire cette demande mais, par application de l’algorithme du
banquier, la demande ne sera pas accordée si elle conduit à un état qui ne peut pas être
garanti sûr, c’est-à-dire si l’état [BESOIN’, TENU], où TENU est la matrice obtenue
supposant la demande accordée et BESOIN’ = MAX –TENU, est un état de blocage.
R1 R2 R3 R1 R2 R3
P1 7 2 3 P1 0 3 0
P2 1 2 2 P2 2 0 0
BESOIN’ = P3 6 0 0 TENU = P3 3 0 2
P4 0 1 1 P4 2 1 1
P5 4 3 1 P5 0 0 2
Le nombre de ressources disponibles est DISPO = [ 3 1 2 ]
La demande de P4 est inférieure à DISPO. Supposant P4 exécuté, DISPO = [5 2 3].
La demande de P2 est maintenant inférieure à DISPO. Supposant P2 exécuté,
DISPO = [7 2 3]. Maintenant les demandes de P1 et P3 sont inférieures à DISPO.
Supposant P1 et P3 exécutés, il ne reste plus qu’un processus, P5, qui étant seul ne peut
pas être bloqué. Donc, pas de blocage, l’état est sûr et la demande est autorisée.

Vous aimerez peut-être aussi