Interblocages

publicité
Chapitre 3
Interblocages
3.1. Ressources
3.2. Introduction aux interblocages
3.3. La politique de l'autruche
3.4. Détection des interblocages et reprise
3.5. L'évitement des interblocages
3.6. La prévention des interblocages
3.7. Autres considérations
1
Ressources
• Exemples de ressources
–
–
–
–
imprimantes
lecteurs de rubans
fichiers
tables internes du système
• L'ordre dans lequel les ressources sont attribuées est
important
• Supposons qu'un processus possède une ressource A et
demande une ressource B
– au même moment un autre processus possède B et demande A
– les deux sont bloqués de façon permanente
2
Ressources (1)
• Un interblocage peut se produire lorsque…
– les processus se voient attribuer un accès exclusif à des
ressources.
• Ressources retirables (préemptibles)
– peuvent être retirées d'un processus sans effet négatif
– ex. mémoire
• Ressources non retirables (non préemptibles)
– peuvent causer des problèmes si retirées du processus
– ex. graveur de CD
• En général les interblocages impliquent des ressources
non retirables.
3
Ressources (2)
•
Séquence d'événements nécessaires pour
utiliser une ressource:
1. Solicitation de la ressource
2. Utilisation de la ressource
3. Libération de la ressource
•
Doit attendre si l'accès est refusé:
–
–
le processus peut alors être bloqué
ou un code d'erreur est retourné
4
Ressources (3)
Figure 3.1 : Utiliser un sémaphore pour protéger les ressources.
(a) Une ressource. (b) Deux ressources
typedef int semaphore;
semaphore resource_1;
void process_A(void){
down(&resource_1);
use_resource_1( );
up(&resource_1);
}
(a)
typedef int semaphore;
semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource_1);
down(&resource_2);
use_both_resources( );
up(&resource_2);
up(&resource_1);
}
(b)
5
Ressources (4)
Figure 3.2 : (a) Code exempt d’interblocage. (b) Code contenant un interblocage
potentiel
typedef int semaphore;
semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource_1);
down(&resource_2);
use_both_resources( );
up(&resource_2);
up(&resource_1);
}
}
void process_B(void) {
down(&resource_1);
down(&resource_2);
use_both_resources( );
up(&resource_2);
up(&resource_1);
}
(a)
semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource_1);
down(&resource_2);
use_both_resources( );
up(&resource_2);
up(&resource_1);
void proces_B(void) {
down(&resource_2);
down(&resource_1);
use_both_resources( );
up(&resource_1);
up(&resource_2);
}
(b)
6
Introduction aux interblocages
• Définition formelle:
Un ensemble de processus est en interblocage si chacun d'eux
attend un événement qui ne peut être provoqué que par un autre
processus de l'ensemble.
• L'événement attendu est habituellement la libération d'une
ressource
• Aucun de ces processus ne peut …
– s'exécuter
– libérer de ressources
– être réveillé
7
Les 4 conditions d'un interblocage
Condition d'exclusion mutuelle
1.
•
chaque ressource est soit attribuée à un seul processus, soit
disponible
Condition de détention et d'attente
2.
•
les processus ayant déjà obtenu des ressources peuvent en
demander des nouvelles.
Pas de réquisition
3.
•
les ressources déjà détenues ne peuvent être retirées de
force à un processus
Condition d'attente circulaire
4.
•
•
il doit y avoir un cycle d'au moins deux processus
chacun attend une ressource détenue par un autre processus
du cycle.
8
Modélisation des interblocages (1)
• Modélisation au moyen de graphes dirigés
– La ressource R est détenue par le processus A
– Le processus B attend après la ressource S
– Les processus C and D sont en interblocage
9
Modélisation des interblocages (2)
Ordonnancement provoquant un interblocage
10
Modélisation des interblocages (3)
Interblocage évité par un ordonnacement différent
11
Statégies de gestion des interblocages
1.
Ignorer les problèmes
2.
Les détecter et y remédier
3.
4.
Les éviter de manière dynamique en allouant
les ressourses avec précaution
Les prévenir en empêchant l'apparition d'une
des 4 conditions de leur existence.
12
La politique de l'autruche
• Ignorer le problème
• Raisonnable si
– les interblocages se produisent rarement
– le coût de la prévention est élevé
• UNIX et Windows utilisent cette approche
• Il existe un compromis entre
– ce qui est pratique
– ce qui est correct
13
Détection avec une seule ressource
de chaque type
• Noter la détention et la demande en ressource
• cycle = interblocage
14
Détection avec une seule ressource
de chaque type
1.
2.
3.
4.
5.
6.
Pour chaque noeud N faire ce qui suit
Initialiser L à une pile vide et désigner tous les arcs comme non
marqués
Empiler(N,L) et vérifiez s'il apparaît deux fois. Si oui, le graphe
contient un cycle et on termine.
Si N possède un arc sortant (N, M) non marqué alors goto 5,
sinon goto 6
Marquer l'arc (N,M), Empiler(M,L) et redéfinir N=M; Goto 3
Si Vide(L) alors on arête; sinon Dépiler(L) et N=Dessus(L);
Goto 3
15
Détection avec plusieurs ressources
de chaque type (1)
Structures de données utilisées par l'algorithme
16
Détection avec plusieurs ressources
de chaque type (2)
Ressources existantes
Ressources disponibles
Exemple de détection d'interblocage
17
Reprendre après un interblocage (1)
• Reprendre au moyen de la préemption
– Prendre une ressource d'un autre processus
– dépend de la nature de la ressource
• Reprendre au moyen du "rollback"
– enregistrer des points de reprise
– l'état du processus est sauvé pour être restauré
ultérieurement
– reprendre le processus si un interblocage se
produit
18
Reprendre après un interblocage (2)
• Reprendre au moyen de la suppression de
processus
–
–
–
–
rudimentaire mais simple
Suspendre un processus pour libérer ses ressources
les autres processus peuvent utiliser ses ressources
choisir un processus pouvant être redémarré depuis
le début (ex. compilation)
19
Évitement des interblocages
Trajectoires des ressources
Exemple: 2 processus
20
États sûr et non sûr
• On dit d'un état qu'il est sûr s'il n'est pas
bloqué et qu'il existe un ordonnancement
selon lequel chaque processus peut
s'exécuter jusqu'au bout,
• même si tous demandent d'un seul coup leur
nombre maximum de ressources.
21
États sûrs et non sûrs (1)
Démonstration que l'état de (a) est sûr
On suppose qu’il y a 10 ressources en tout.
22
États sûrs et non sûrs (2)
Démonstration que l'état de (b) n'est pas sûr
Si A demande et obtient une ressource supplémentaire (figure b)
alors on est dans un état non sur
23
L'algorithme du banquier pour une ressource unique
(Dijkstra 1965)
• 3 états d'allocation de ressource
– (a) sûr
– (b) sûr
– (c) non sûr
24
L'algorithme du banquier pour plusieurs
ressources
C
R
25
L'algorithme du banquier pour plusieurs
ressources
1.
2.
3.
•
•
Rechercher une rangée R dont les demandes de ressources non
satisfaites sont inférieur ou égales à A
Marquez le processus R comme achevé et ajouter toutes ses
ressources au vecteur A
Recommencer les étapes 1 et 2 jusqu'à ce que tous les
processus soient terminés (état sûr) où jusqu'à ce qu'un
interblocage se produise (état non sûr).
Si B demande un scanner, on peut lui accorder car l’état reste
sur
Si E en demande un aussi alors on ne peut pas lui accorder et
il devra patienter.
26
27
Prévention des interblocages
S'attaquer à la condition de l'exclusion mutuelle
• Certains périphériques (tel que l'imprimante) peuvent
être spoolés (traités en différé)
– seul le démon d'imprimante peut directement utiliser
l'imprimante
– cela élimine les interblocages
• Tous les périphériques ne peuvent être spoulés.
• Principe:
– éviter d'attribuer une ressource lorsque cela n'est pas
absolument nécessaire
– le plus petit nombre possible de processus peuvent
réclamer la ressource
28
S'attaquer à la condition de détention et d'attente
• Exige que les processus demandent toutes ses
ressources avant l'exécution
– le processus n'attend jamais après une ressource
• Problèmes
– peut ignorer le nombre de ressources qu'il aura besoin
(sinon on pourrait utiliser l’algorithme du banquier)
– les ressources ne sont pas utilisées de manière optimale
• Variation:
– un processus doit libérer toutes les ressources qu'il détient
– il obtient ensuite tout ce dont il a besoin en une seule fois
29
S'attaquer à la condition de non-préemption
• Cette option est difficilement réalisable
• Considérer un processus utilisant une
imprimante
–
–
–
–
au milieu de la tâche
réquisitionner l'imprimante
!!??
Solution dans ce cas: utiliser
le disque et le
démon d’impression
30
S'attaquer à la condition de l'attente circulaire (1)
•
Ressources ordonnées numériquement
•
Un processus peux demander plusieurs
ressources mais il doit respecter l’ordre
•
Dans l’exemple, si i<j alors
–
–
•
A peux demander i
B ne peux pas demander i sansd’abord
libérer j
Le problème est qu’il est difficile de
trouver un ordonnancement adéquat
31
Autres considération
Le verrouillage en deux phases
• Méthode utilisé pour des applications spécifiques:
– Exemple: Bases de données
• Première phase
– Le processus tente de verouiller plusieurs enregistrements (un à la
fois)
– Si un enregistrement est déjà verrouillé, il libère les verrous et
recommence.
– (aucun véritable travail est effectué)
• Lorsque la première phase se termine, on commence la
seconde
– effectuer les modifications
– libérer les verrous
• Similaire à demander toutes les ressources à la fois
• Cette solution n'est pas toujours possible
– Exemple: systèmes à temps réel
32
Les interblocages de communication
• Deux processus se bloquent mutuellement
– chacun attend que l'autre accomplisse une tâche
– Par exemple, A envoie à B un message qui se
perd. A attend la réponse de B et B attend le
message de A.
33
Les interblocages actifs
• Se produit, par exemple lorsque deux processus
utilise l’attente circulaire pour obtenir des
ressources.
– A obtient la ressource R1 et boucle pour obtenir R2
– B obtient R2 et boucle pour obtenir R1
– Les deux processus utilisent inutilement le processeur.
• Autre exemple. Supposons que la table des
processus contiennen 100 entrées
– 10 processus ont besoin d’en créer 12 chacun
– Ils en obtiennent chacun 9
– Les 10 processus boucleront sans fin
34
La privation des ressources
• Algorithme d'allocation des ressources
– peut être de servir les tâches les plus courtes en premier
• Fonctionne bien pour les petites tâches
• Peut affamer les longues tâches
– même si elles ne sont pas bloquées
• Solution:
– politique premier arrivé, premier servi
35
Téléchargement