Vous êtes sur la page 1sur 15

ENSI 2012/2013 S.E & Prog Conc M.

Nasri

DEADLOCK

1
Plan du cours

2
Exemples Introductifs (1)

3
EXEMPLES INTRODUCTIFS (2)

4
CONDITIONS D’INTERBLOCAGE

5
MODELISATION D’INTERBLOCAGE

6
SOLUTION À L’INTERBLOCAGE

7
PRÉVENTION DU BLOCAGE

Dans cet exemple l’ordre est croissant.

Condition Approche

Exclusion mutuelle  Utiliser des ressources partageables.


Tenir et Attendre  Demander toutes les ressources initialement .
Pas de réquisition  Enlever des ressources (exiger de libérer avant de demander).
Attenre circulaire  Ordonner les ressources.
8
ÉVITEMENT DU BLOCAGE
Ne serait t’il pas mieux si, avec une allocation de ressources prudente,
nous pourrions empêcher les interblocages?
Ceci s’appel l’Évitement des interblocages (Deadlock Avoidance)

Pour éviter les interblocages, il est important de ne pas s’avancer vers


un état non sécuritaire .
Un état est dit sécuritaire si il n’est pas en interblocage et qu’il
existe un ordre d’ordonnancement dans lequel chaque processus
peut exécuter jusqu’à la fin, même si tout les processus
demanderaient immédiatement toutes les ressources dont ils ont
besoin pour finir leurs travaux.

9
ÉVITEMENT DU BLOCAGE
 Si tout les processus demandent leurs maximum de ressources, est-ce que l’état de
départ est sécuritaire?

 Soit A,B et C 3 processus.

 La colonne HAS correspond au nombre d’instance de la ressource déjà utilisée.

 La colonne MAX correspond au nombre d’instance de la ressource Max qu’un processus


aura besoin pour terminer son exécution.

 Free : nombre d’instance libre de la ressource.

Parce que tout les processus pouvaient exécuter


jusqu’à la fin, l’état initial était sécuritaire!
ÉVITEMENT DU BLOCAGE
 Et si le processus A a demandé une ressource simple
en premier et qu’il l’a obtenu?

Parce que pas tout les processus ne peuvent


pas compléter, l’état vers lequel on est allé était
non sécuritaire!!!
C’est ce déplacement vers un état non
sécuritaire que nous devons détecter...
ÉVITEMENT DU BLOCAGE

 Algorithmes du banquier:
 Quand un client fait une demande d’argent, l’algorithme vérifie si
la demande mènerait à un état non sécuritaire, si oui, la
demande est refusée
 La détermination est comme nous avons vue précédemment
ÉVITEMENT DU BLOCAGE
 L’algorithme du banquier fonctionne pour une ressource avec des instances multiples.
Mais que faisons-nous pour les ressources multiples?

 L’algorithme peut être généralisé en utilisant des structures de données suivantes :

 Un vecteur des ressources existantes (VectExist), disponibles (VectDisp) et


actuellement utilisées (VectUtilisé).

 Une matrice de ressources assignées à chaque processus (MatAssign).

 Une matrice de ressources Max Demandés pour finaliser le travail (MatBesoin).

 Algorithme du banquier pour les ressources multiples:

1) Trouver une rangé dans, MatBesoin, pour laquelle les ressources requises (ie: maximum
potentiel) est plus petit ou égale au vecteur VectDisp. Si cette rangé n’existe pas, le
système est non sécuritaire parce que si tout les processus demanderaient leurs
maximum de ressources, aucun ne pourrait terminer.

2) Assumez que le processus de la rangé choisi demande toutes les ressources dont il a
besoin pour terminer. Marquez ce processus comme terminé et ajoutez les ressources
13
au vecteur VectDisp.
ÉVITEMENT DU BLOCAGE : EXEMPLE
 Est-ce que cet état est sécuritaire?
 Etant donné : MatAssign, MatBesoin et le vecteur VectExist.

VectExist(6,3,4,2)

MatAssing MatBesoin

 VectUtilisé est calculé par la somme de chaque colonne de MatAssign, VectUtilisé(5,3,2,2).


 VectDispo = VectExist- VectUtilisé = (1,0,2,0).
Dans ce cas, et on se référant à la matrice MatBesoin, l’unique Processus qu’on peut satisfaire est
le D. Ce qui donne VectDispo = (2,1,2,1) car D une fois exécuté il va libérer ces ressources.
14
Ensuite , c’est le tour du proc A ou E.
CONCLUSION

15

Vous aimerez peut-être aussi