Vous êtes sur la page 1sur 10

Module : système d’exploitation II

Département d’informatique Année : 2020/2021

Chapitre 3 : l’interblocage
Introduction :
Un système informatique possède un nombre fini de ressources qui doivent être distribuées
parmi un certain nombre de processus concurrents. Les ressources sont groupées en plusieurs
types, lesquels peuvent exister en plusieurs instances identiques. L’espace mémoire, le
processeur, les périphériques sont des exemples de types de ressources. Par exemple, si un
système a 2 processeurs, on dira que le type de ressource processeur possède 2 instances, et si
le système est doté de 5 imprimantes, on dira que le type de ressource imprimante possède 5
instances.
Dans un interblocage, les processus ne terminent jamais leur exécution et les ressources du
système sont immobilisées.
Le but de ce chapitre est de présenter le problème de l’interblocage : les conditions de son
apparition, et les différentes méthodes qui ont été proposées pour le traiter.
1. Définition : Un ensemble de processus est en interblocage si chacun est en attente d’un

événement que peut être produit que par un processus de l’ensemble .


 Remarque : Le plus souvent l’événement attendu est la libération d’une ressource
par un processus de l’ensemble.

2. Caractérisation des ressources : une ressource est tout objet informatique matériel ou
logiciel nécessaire à l’exécution d’un programme.
Une ressource peut être :
a) matérielle ou logicielle
b) à accès unique ou multiple
c) banalisée ou unique :( Ressource banalisée : ensemble d’instances de
ressource identiques et allouables indifféremment, appelée classe)
(Ressource unique : 1 seul exemplaire de la ressource)
d) virtuelle ou physique
e) préemptible ou non préemptible : (Préemptible : la ressource peut être
retirée à un processus sans dommage),( Non préemptible : la ressource ne
peut être retirée)
3. Utilisation d’une ressource : On considère trois étapes :
a) Demande de la ressource : attente du processus si la ressource est détenue par un
autre processus. Réalisée par un appel système pour les ressources physiques.
b) Utilisation de la ressource
c) Libération de la ressource

4 .Conditions nécessaires : On constate que sont vérifiées en même temps


A. Exclusion mutuelle : ressource allouée exclusivement à un processus, c.-à-d.
Chaque ressource est soit attribuée à un seul, soit disponible.

Chapitre3 : interblocage Page 1


Module : système d’exploitation II

B. Détention et attente : Les entités qui détiennent des ressources peuvent en


demander de nouvelles (sans relâcher celles qu'elles détiennent)(c-a-dAllocation
dynamique et accumulation des ressources ).
C. Pas de réquisition : Pas de préemption des ressources acquises, Les ressources
obtenues par un processus ne peuvent lui être retirées de force.
D. Attente circulaire : il existe un cycle de processus : P0 attend P1 attend
P2….Pn attend P0
Remarque : Les quatre conditions listées doivent être simultanément vérifiées pour qu'un
interblocage puisse se produire .

5 Type d’interblocage :
 Interblocage passif « deadlock » : Les processus en attente de ressources sont
bloqués par l’allocateur
 Interblocage actif « livelock » : Les processus en attente de ressources testent la
disponibilité des ressources et se bloquent eux-mêmes.
6 .Graphe d’allocation des ressources :

On peut décrire l’état d’allocation des ressources d’un système en utilisant un graphe.
Ce graphe est composé de N noeuds et de A arcs.
L’ensemble des nœuds est partitionné en deux types :

 P={P1, P2, …, Pm} : l’ensemble de tous les processus


 R={R1, R2, …, Rn} l’ensemble de tous les types de ressources du système

Un arc allant du processus Pi vers un type de ressource Rj est noté Pi→Rj ; il signifie que le
processus Pi a demandé une instance du type de ressource Rj. Un arc du type de ressourcé Rj
vers un processus Pi est noté Rj→Pi ; il signifie qu’une instance du type de ressource Rj a été
alloué au processus Pi.
Un arc Pi→Rj est appelé arc de requête. Un arc Rj→Pi est appelé arc d’affectation.
Graphiquement, on représente chaque processus Pi par un cercle et chaque type de ressource
Rj comme un rectangle. Puisque chaque type de ressource Rj peut posséder plus d’une
instance, on représente chaque instance comme un point dans le rectangle.
Un arc de requête désigne seulement le rectangle Rj, tandis que l’arc d’affectation doit aussi
désigner un des points dans le rectangle. Quand un processus Pi demande une instance du
type de ressource Rj, un arc de requête est inséré dans le graphe d’allocation des ressources.
Quand cette requête peut être satisfaite, l’arc de requête est instantanément transformé en un
arc d’affectation. Quand plus tard, le processus libère la ressource l’arc d’affection est
supprimée.

Exemple : L’état d’allocation d’un système est décrit par les ensembles suivants :
 Ensemble des processus P={P1, P2, P3}
 Ensemble des ressources R={R1, R2, R3, R4}
 Ensemble des arcs A={P1→R1, P2→R3, R1→P2, R2→P2, R2→P1, R3→P3}

Chapitre3 : interblocage Page 2


Module : système d’exploitation II

Voici le graphe d’allocation des ressources associé à ce système :

Si le graphe d’allocation contient un circuit, alors il peut exister une situation d’interblocage.

7. méthodes de traitement des interblocages :


Il existe essentiellement trois méthodes pour traiter le problème de l’interblocage :
Prévention, Evitement, Détection
 Prévention : On élimine complètement le risque d’interblocage en faisant en sorte que
l’une des ses quatre conditions d’apparition ne soit pas vérifiée.
 Evitement : On évite le risque d’interblocage en veillant à que le système évolue
uniquement entre états sains.
 Détection : On attend que l’interblocage arrive, on le détecte puis on applique une
méthode de traitement .

A. La détection et la reprise :
La technique de détection et reprise est utilisée lorsque le système ne cherche pas à
empêcher les interblocages.il les laisse ses produire puis tente de les détecter, par la
suite les traiter .
1) La détection des interblocages avec une seule ressource d’un type donné :
Interblocage s’il existe un cycle dans le graphe. Tout processus qui fait partie d’un
cycle est concerné par l’interblocage.
 Il n’y a pas d’interblocage s’il n’y a pas de cycles.
 Il existe plusieurs algorithmes de détection de cycles dans les graphes orientés.

Algorithme de détection de cycles :

1. Pour chaque nœud N du graphe, effectuer les 5 étapes suivantes en prenant N comme
nœud de départ.
2. Initialiser L à une liste vide et indiquer que les arcs ne sont pas marqués .
3. Ajouter le nœud courant à la fin de L’en vérifiant qu’il n’y figure pas déjà. Si c’est le cas,
le graphe contient un cycle (liste dans L) et l’algorithme se termine .

Chapitre3 : interblocage Page 3


Module : système d’exploitation II

4. Tester s’il existe des arcs partant du nœud courant .aller à l’étape 5 s’il y en a et à l’étape
6 s’il y en a pas .
5. Prendre au hasard un arc partant du nœud courant et le marquer. atteindre le nœud la
destination de cet arc et aller à l’étape 3
6. C’est une impasse. revenir au nœud précédent, c’est -à-dire le nœud qui précédait le nœud
courant, en faire le nœud courant et aller à l’étape 3 .si ce nœud est le nœud de départ, le
graphe ne contient pas de cycles et l’algorithme ce termine .
2) La détection des interblocages avec plusieurs ressources d’un type donné :
L’existence d’un cycle n’implique pas forcément un interblocage; la non-existence de
cycle implique qu’il n’y a pas interblocage.

L’algorithme de détection de cycles :

 Formalisation de l’interblocage : Système = (P, E, X, A, R)


 P={P1, P2,…Pn} ensemble fini de processus
 E={R1, R2,…Rm} ensemble de classes de ressources
 X= (xi) xi nombre de ressources initial de la classe Ri
 A(t)=(aij) aij nombre de ressources de la classe Rj allouées au processus Pi à
l’instant t
 NR(t)=(nrij) nrij nouvelle requête de ressources de la classe Rj par le processus
Pi à l’instant t

Changements d’états du système :


Soit D=X-A la disponibilité en ressources
•Requête Pi demande à l’instant t une nouvelle requête N
NR[i]<– NR[i] + N
•Acquisition allocation à Pi de M
A[i]<–A[i] + M en fait M=NR[i] et NR[i]<– 0
D<– D - M
•Libération par Pi de H
A[i]<– A[i] - H
D<–D + H

Chapitre3 : interblocage Page 4


Module : système d’exploitation II

Hypothèses
• tout processus libère au bout d’un temps fini ses ressources
• l’état du système est réalisable :
- la demande d’un processus ne peut excéder le nombre initial de ressources
- un processus ne peut acquérir plus de ressources qu’il n’a demandées
- la somme des allocations aux processus ne peut dépasser le nombre initial de ressources

 Absence d’interblocage :
Il existe une suite d’états réalisables telle que tout processus obtienne sa requête à l’instant
considéré et s’exécute jusqu’à sa fin.
 Action de l’allocateur :
Ranger les processus dans un ordre tel que leur requête soit satisfaite s’ils s’exécutent
dans cet ordre. Interblocage si on ne peut inclure au moins un processus dans la suite de
processus.

Algorithme de détection de l’interblocage


Soient : T[1..m] les ressources potentiellement disponibles , F[1..n] F[i]= vrai si Pi est
dans la suite saine, faux sinon
1. initialisation T=D ressources disponibles, trouvé=vrai; F[i]=faux pour tout processus
2. tant que trouvé et il existe Pj t.q. non F[j] faire
rechercher i tel que non F[i] et NR[i]≤T; si i n’existe pas alors trouvé=faux;
sinon F[i]=vrai; T=T+A[i]; finsi; fait;
3. si pour tout i, F[i]==vrai, alors pas d’interblocage sinon les processus t.q. F[i]==faux
sont en interblocage
Exemple : m=3 n=5 X=(7,2,6)

F=(faux,faux,faux,faux,faux) T=(0,0,0)

Choix de P0 : F=(vrai,faux,faux,faux,faux) T=(0,1,0)


Choix de P2 : F=(vrai,faux,vrai,faux,faux) T=(3,1,3)
Choix de P3 : F=(vrai,faux,vrai,vrai,faux) T=(5, 2,4)
Choix de P1 : F=(vrai,vrai,vrai,vrai,faux) T=(7, 2,4)
Choix de P4 : F=(vrai,vrai,vrai,vrai,vrai) T=(7, 2,6)
(P0, P2, P3, P1, P4) est une suite saine complète Il n’y a pas d’interblocage.
Supposons que P2 demande une ressource de type C

Chapitre3 : interblocage Page 5


Module : système d’exploitation II

Choix de P0 : T=(0 1 0) : on ne peut satisfaire aucun autre processus.


P1, P2, P3, P4 sont en interblocage .
Détection par Réduction du graphe d'allocation des ressources :

Un graphe réduit peut être utilisé pour déterminer s'il existe ou non un interblocage. Pour
la réduction d'un graphe d'allocation des ressources :les flèches associées à chaque
processus et à chaque ressource doivent être
Vérifiées :
 Si une ressource possède seulement des flèches qui sortent (il n'y a pas des
requêtes), on les efface.

 Si un processus possède seulement des flèches qui pointent vers lui, on les
efface.
 Si une ressource a des flèches qui sortent, mais pour chaque flèche de requête il
y a une ressource disponible dans le bloc de ressources où la flèche pointe, il faut
les effacer.
Exemple :
Considérez quatre processus p1….p4_ qui utilisent des ressources . Le tableau montre
l'allocation courante et le nombre maximaux d'unités de ressources nécessaires pour
l'exécution des processus. Le graphe d'allocation des ressources pour l'état courant est montré
sur la Figure :

Chapitre3 : interblocage Page 6


Module : système d’exploitation II

 le graphe :

Le graphe réduit d’allocation des ressources :

Remarque :

 Si le graphe peut être réduit pour tous les processus, il n’y a pas d’interblocage ;
 Si le graphe ne peut étre réduit pour tous les processus, alors les processus
irréductibles constituent l’ensemble des processus interbloqués.

4. La reprise des interblocages :


Que faut il faire lorsque l’algorithme de détection des interblocages à découvert un
interblocage ?
Lorsque le système détecte un interblocage, il doit le supprimer, ce qui se traduit
généralement par la réalisation de l’une des opérations suivantes :

A. La reprise au moyen de la préemption :


Dans certains cas, il est possible de retirer temporairement une ressource à un
processus pour l’attribuer à un autre .le choix du processus à suspendre dépend des
ressources qui peuvent être le plus facilement retirées. Ce type de reprise est
souvent difficile voire impossible.

Chapitre3 : interblocage Page 7


Module : système d’exploitation II

B. Le reprise au moyen de rollback :


Si les concepteurs des systèmes et les opérateurs pensent que les interblocages sont
probables, ils peuvent poser régulièrement des points de reprise (checkpoints)sur
les processus . Lorsqu’un interblocage se produit , il est aisé de déterminer les
ressources demandées . pour effectuer la reprise,il faut restaurer l’état du
processus avant l’acquisition de la ressource par le processus et sa préemption le
travail depuis le dernier point de reprise est perdu.
C. La reprise au moyen de la suppression des processus :
La méthodes la plus radicale et la plus simple de suppression d’un interblocage
consiste à tuer un ou plusieurs processus . il est possible de tuer un des processus
du cycle :-tuer des processus un par un jusqu’à cessation de l’interblocage.
Critères : priorité, temps de calcul déjà attribué, types et nombre de ressources
possédés,Une autre méthode consiste à tuer un processus qui n’est pas dans le
cycle de manière à libèrer ses ressources : La reprise n’est pas évidente.

B. La Prévention d’interblocage :
Interblocage possible d’un ensemble d’entités concurrentes, lorsque les 4 conditions sont
vérifiées en même temps.
Il suffit de rendre une des conditions nécessaires fausse durant toute exécution dusystème.
Si au moins une des quatre conditions ne sera jamais satisfaite, les interblocages seront alors
impossibles.
a) La condition d’exclusion mutuelle : En général impossible, mais une idée
simple consiste à n’attribuer une ressource que si absolument nécessaire.

b) La condition d’allocation dynamique et accumulation : Les processus


demandent toutes les ressources nécessaires à leur exécution.Allocation globale
à un instant Les processus demandent les ressources nécessaires à leur exécution
à un instant donné s’ils ne possèdent aucune ressource, puis ils libèrent les
ressources acquises.
Inconvénient :
Famine possible de certains processus

c) Condition de non-préemption :Difficile, Utilisé pour certaines ressources dont


l’état peut être facilement sauvegardé et restauré : pages mémoire, registres
Impossible pour certaines ressources : imprimantes,…

d) Condition d’attente circulaire : Allocation par classes ordonnées


- Classe =ensemble des instances d’une ressource
-Les classes sont ordonnées a priori
- demande et allocation dans l’ordre
Meilleure utilisation des ressources si l’ordre est bien choisi.

 Prévention dynamique : Chaque processus annonce son besoin maximum en


ressources.
Rôle de l’allocateur :
- vérifier avant de satisfaire une requête, qu’il pourra alors satisfaire toutes les requêtes
futures, l’état du système est dit fiable

Chapitre3 : interblocage Page 8


Module : système d’exploitation II

- dans le cas contraire, retarder l’allocation en bloquant momentanément le processus,


car il y a risque d’interblocage.
 Max=[maxij] maxij besoin maximum du processus Pi pour la ressource Rj
 B=[bij] bij=maxij - aij besoin de Pi pour atteindre son maximum à l’instant
considéré.
 Pas de risque d’interblocage :
Il existe une suite d’états sains t.q. tout processus peut obtenir son besoin
maximum et s’exécuter jusqu’à sa fin : état fiable
 Hypothèses
tout Pi , Max[i] ≤ X, A[i] ≤ Max[i], A[i] + B[i] ≤ Max[i]
 Suite fiable
S=suite de processus tout Pi dans S, B[i] ≤ D + Σ A[j] avec S(j)<S(i)
Si S contient tous les processus le système est dans un état fiable

Action de l’allocateur
-Ranger les processus dans un ordre tel que leur besoin maximum puisse être satisfait
s’ils s’exécutent dans cet ordre, état fiable.
Il y a risque d’interblocage, si on ne peut inclure au moins un processus dans la suite
de processus.
-Satisfaire une requête si partant d’un état fiable, cette allocation laisse le système dans
un état fiable sinon différer l’allocation.

Algorithme du banquier (Dijkstra) : détection d’un état fiable

Soient : T[1..m] les ressources potentiellement disponibles ,F[1..n] F[i]= vrai si Pi est dans
la suite fiable, faux sinon
1. initialisation T=D ressources disponibles, trouvé=vrai; F[i]=faux pour tout processus
2. tant que trouvé et il existe Pj t.q.F[j]==faux faire rechercher i tel que non F[i] et B[i]≤T;
si i n’existe pas alors trouvé=faux; sinon F[i]=vrai; T=T+A[i];finsi;fait;
3. si pour tout i, F[i]==vrai, alors pas d’interblocage l’état du système est fiable.
Exemple :
m = 3, n=5, X = (10,5,7) À un instant t, on a l’état suivant :

 Il existe P1: F=(faux,vrai,faux,faux,faux) T=(5,3,2)


 Choix de P3: F=(faux,vrai,faux,vrai,faux) T=(7,4,3)
 Choix de P4: F=(faux,vrai,faux,vrai,vrai) T=(7,4,5)
 Choix de P2: F=(faux,vrai,vrai,vrai,vrai) T=(10,4,7)

Chapitre3 : interblocage Page 9


Module : système d’exploitation II

 Il existe P0: F=(vrai,vrai,vrai,vrai,vrai) T=(10,5,7) alors L’état est fiable (sûr)

Algorithme du banquier (Dijkstra-Habermann)


- Partant d’un état fiable, satisfaire une requête d’un processus Pi NR[i] si l’état reste fiable.
Simuler l’allocation :
D = D - NR[i];
A[i] = A[i] + NR[i];
B[i] = B[i] - NR[i];
Appliquer l’algorithme de l’état fiable : si l’état reste fiable, alors satisfaire la requête
sinon différer l’allocation.

Chapitre3 : interblocage Page 10

Vous aimerez peut-être aussi