Académique Documents
Professionnel Documents
Culture Documents
Il est clair qu’en appliquant cette politique il n’y aura jamais de demande de ressource
no satisfaite, donc pas de deadlock. Néanmoins cette stratégie n’est pas optimale car
elle suppose le pire des cas : tous les processus font leurs demandes maximales (pour
une ou plusieurs ressources) en même temps (ce qui n’est pas nécessairement le cas).
Chapitre IV : Les problèmes de « deadlock »
Etat du système :
Une état du système est tout simplement la situation actuelle d’allocation de
ressources. Ainsi, l’état consiste en les deux vecteurs (R et D) et les deux matrices (B et
A).
Exemple 1 :
Soit l’état initial actuel d’un système (avec 4 processus et 3 types de ressources) :
La question est : est-ce que cet état est sûr ? Autrement dit : Est-il possible de
construire une séquence d’exécution au bout de laquelle les 4 processus terminent
leur exécution.
Si nous considérons le processus P1 qui a une seule unité de R1 et peut demander 2
autres (au maximum), il est clair qu’il ne peut pas continuer jusqu’à la fin de son
exécution.
Chapitre IV : Les problèmes de « deadlock »
Dans ce nouvel état nous avons annulé la ligne de P2 dans la matrice B puisqu’il
aurait terminé son exécution (donc il n’a plus besoin de ressources). Nous avons
également annulé la ligne de P2 dans la matrice A puisqu’à la fin de son exécution, P2
retourne toutes les ressources qui lui sont allouées.
Chapitre IV : Les problèmes de « deadlock »
A partir de ce nouvel état, il est clair que P1 peut terminer son exécution (le nombre de
ressources disponibles est suffisant pour satisfaire sa demande maximale). Nous
supposons donc que P1 termine son exécution. L’état suivant du système est :
Algorithme du banquier :
L’algorithme du banquier s’exprime donc somme suit : lorsqu’un processus fait une
demande de ressource, le système suppose que la demande est accordée et calcule le
nouvel état (après satisfaction de la demande). Si le nouvel état est un état sûr la
demande est accordée et le système met à jour son état, sinon la demande n’est pas
accordée et le processus en question est bloqué jusqu’à ce que sa demande puisse être
accordée.
Exemple 2 :
Soit l’état suivant du système de l’exemple ci-dessus (exemple 1) :
Supposons qu’à partir de cet état le processus P2 demande une unité de R1 et une
unité de R3. Est-ce que le système doit répondre favorablement à cette demande ?
Chapitre IV : Les problèmes de « deadlock »
Nous avons déjà démontré (exemple 1 ci-dessus) que cet état est un état sûr, donc
la demande de P2 est accordée et le système met à jour son état.
Chapitre IV : Les problèmes de « deadlock »
Est-ce qu’il s’agit d’un état sûr ? La réponse est « non ». En effet, chacun des
processus a au moins besoin d’une unité de R1 et il n’y a aucune de disponible. Il est
donc impossible de construire une séquence d’exécution au bout de laquelle tous les
processus se terminent normalement.
Résultat : La demande de P1 n’est pas accordée. Le système reste dans son état
initial et P1 est bloqué jusqu’à ce que sa demande puisse être satisfaite.
Chapitre IV : Les problèmes de « deadlock »
Remarques :
• Un état non sûr n’est pas un état de deadlock, mais il peut potentiellement conduire vers
un deadlock.
• Ce qui montre que cette stratégie ne prédit pas le deadlock de façon certaine, mais elle
anticipe les possibilités de deadlock et assure qu’aucune éventualité de deadlock ne se
présente.
• La stratégie suppose le pire puisqu’elle ignore la possibilité d’une transition d’un état
non sûr vers un état sûr. En effet, à partir d’un état non sûr, le système peut revenir à un
état sûr en cas de libération de ressources.
• L’application systématique de l’algorithme du banquier est très coûteuse car il s’agit dans
la réalité d’au moins quelques dizaines de processus et quelques dizaines de types de
ressources. La construction d’une séquence d’exécution est un processus combinatoire ce
qui consomme beaucoup de temps processeur.
Les stratégies vues jusqu’à maintenant essaient de faire en sorte qu’un deadlock ne se
produise jamais en imposant des restrictions. Avec les stratégies de détection les
ressources sont accordées aux processus à chaque fois que ceci est possible.
Périodiquement, le système exécute un algorithme qui lui permet de détecter si une
chaîne d’attente circulaire (donc un deadlock) s’est formée.
Le test de deadlock peut être fait à chaque nouvelle demande de ressources ou moins
fréquemment. Si le test se fait à chaque demande de ressources, on aura deux
avantages :
• Détecter un deadlock le plus tôt possible.
• L’algorithme, dans ce cas, sera relativement simple.
IV.5.2. Application
Soit l’état actuel d’un système :
Ressource R2
Détenir
Ressource R3