1 interblocages chapitre 3 3.1. ressources 3.2. introduction aux interblocages 3.3. la politique de...

35
1 Interblocages Chapitre 3 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

Upload: audric-leduc

Post on 04-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

1

Interblocages

Chapitre 3

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

Page 2: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

2

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

Page 3: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

3

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.

Page 4: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

4

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é

Page 5: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

5

Ressources (3)

Figure 3.1 : Utiliser un sémaphore pour protéger les ressources. (a) Une ressource. (b) Deux ressources

typedef int semaphore;  typedef int semaphore;semaphore resource_1;  semaphore resource_1; semaphore resource_2;void process_A(void){ void process_A(void) { down(&resource_1);  down(&resource_1); use_resource_1( );  down(&resource_2); up(&resource_1);  use_both_resources( );} up(&resource_2); up(&resource_1); } (a) (b)

Page 6: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

6

Ressources (4)Figure 3.2 : (a) Code exempt d’interblocage. (b) Code contenant un interblocage potentiel

typedef int semaphore; semaphore resource_1;  semaphore resource_1; semaphore resource_2;  semaphore resource_2; void process_A(void) { void process_A(void) { down(&resource_1);  down(&resource_1); down(&resource_2);  down(&resource_2); use_both_resources( );  use_both_resources( ); up(&resource_2);  up(&resource_2); up(&resource_1);  up(&resource_1);} } void process_B(void) { void proces_B(void) { down(&resource_1);  down(&resource_2); down(&resource_2);  down(&resource_1); use_both_resources( );  use_both_resources( ); up(&resource_2);  up(&resource_1); up(&resource_1);  up(&resource_2);} } (a) (b)

Page 7: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

7

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é

Page 8: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

8

Les 4 conditions d'un interblocage

1. Condition d'exclusion mutuelle• chaque ressource est soit attribuée à un seul processus, soit

disponible

2. Condition de détention et d'attente• les processus ayant déjà obtenu des ressources peuvent en

demander des nouvelles.

3. Pas de réquisition• les ressources déjà détenues ne peuvent être retirées de

force à un processus

4. Condition d'attente circulaire• il doit y avoir un cycle d'au moins deux processus• chacun attend une ressource détenue par un autre processus

du cycle.

Page 9: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

9

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

Page 10: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

10Ordonnancement provoquant un interblocage

Modélisation des interblocages (2)

Page 11: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

11

Modélisation des interblocages (3)

Interblocage évité par un ordonnacement différent

Page 12: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

12

Statégies de gestion des interblocages

1. Ignorer les problèmes

2. Les détecter et y remédier

3. Les éviter de manière dynamique en allouant les ressourses avec précaution

4. Les prévenir en empêchant l'apparition d'une des 4 conditions de leur existence.

Page 13: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

13

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

Page 14: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

14

Détection avec une seule ressource de chaque type

• Noter la détention et la demande en ressource• cycle = interblocage

Page 15: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

15

Détection avec une seule ressource de chaque type

1. Pour chaque noeud N faire ce qui suit2. Initialiser L à une pile vide et désigner tous les arcs comme non

marqués3. Empiler(N,L) et vérifiez s'il apparaît deux fois. Si oui, le graphe

contient un cycle et on termine.4. Si N possède un arc sortant (N, M) non marqué alors goto 5,

sinon goto 65. Marquer l'arc (N,M), Empiler(M,L) et redéfinir N=M; Goto 36. Si Vide(L) alors on arête; sinon Dépiler(L) et N=Dessus(L);

Goto 3

Page 16: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

16

Détection avec plusieurs ressources de chaque type (1)

Structures de données utilisées par l'algorithme

Page 17: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

17

Détection avec plusieurs ressources de chaque type (2)

Exemple de détection d'interblocage

Ressources existantes Ressources disponibles

Page 18: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

18

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

Page 19: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

19

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)

Page 20: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

20

Évitement des interblocagesTrajectoires des ressources

Exemple: 2 processus

Page 21: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

21

É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.

Page 22: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

22

É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.

Page 23: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

23

É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

Page 24: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

24

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

Page 25: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

25

L'algorithme du banquier pour plusieurs ressources

C R

Page 26: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

26

L'algorithme du banquier pour plusieurs ressources

1. Rechercher une rangée R dont les demandes de ressources non satisfaites sont inférieur ou égales à A

2. Marquez le processus R comme achevé et ajouter toutes ses ressources au vecteur A

3. 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.

Page 27: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

27

Page 28: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

28

Prévention des interblocagesS'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

Page 29: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

29

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

Page 30: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

30

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

Page 31: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

31

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

Page 32: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

32

Autres considérationLe 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

Page 33: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

33

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.

Page 34: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

34

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

Page 35: 1 Interblocages Chapitre 3 3.1. Ressources 3.2. Introduction aux interblocages 3.3. La politique de l'autruche 3.4. Détection des interblocages et reprise

35

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