Télécharger la présentation
Publié parDoriane Ferre Modifié depuis plus de 11 années
1
GEF 435 Principes des systèmes d’exploitation
Interblocage: Détection et reprise (Tanenbaum 3.4)
2
Revue Quelles sont les quatre conditions pour l’interblocage?
Comment peut-on résoudre les interblocages? (quatre façons…) Four conditions: Mutual Exclusion Condition Hold and Wait condition No Preemption condition (can’t take resources away) Circular Wait condition (circular chain of two or more resources) To solve: Ostrich algorithm Detection and Recovery (today!) – Détection et reprise Avoidance by careful resource allocation – Evitement en allouant les ressources de façon prudente Prevention by removing one of the four conditions – Prévention en enlevant une des quatres conditions.
3
Synopsis Détection de l’interblocage
Une ressource de chaque type Plusieurs ressources de chaque type Reprise à partir de la détection d’un interblocage
4
Interblocages Pour cette solution du problème de l’interblocage, nous acceptons que les interblocages vont arriver mais on construit un système pour la détection de l’interblocage, et ceci veut dire que nous devons faire une reprise Est-ce que c’est pratique dans la vie réel?
5
Détection de l’interblocage
Considérez des systèmes avec une seule instance de chaque type de ressources Par exemple, une imprimante, un scanneur et un médium magnétique Les instances multiples de chaque type seront considérées plus tard dans ce cours Nous avons déjà utilisé les graphes dirigées pour voir facilement où une “boucle” existe, peut-on implémenter un algorithme pour faire la même chose?
6
Détection de l’interblocage
Regardons un ensemble d’allocations et d’attentes: Processus A tient R et veut S Processus B tient rien mais veut T Processus C tient rien mais veut S Processus D tient U et veut S et T Processus E tient T et veut V Processus F tient W et veut S Processus G tient V et veut U One of the students should draw this up on the blackboard
7
Détection de l’interblocage
Recall that each of the process and resource “spots” are known as nodes and the connectors between them are arcs.
8
Détection de l’interblocage
Comment peut-on implémenter un algorithme qui détecte un interblocage de la même façon que nos yeux? Crée une liste de nœuds (appelée L) et suit toute les arcs à partir de chaque nœud, ajoutant les nœuds à la liste quand ils sont rencontrés Si un nœud apparaît deux fois dans la liste, nous savons que nous avons suivit une boucle! Les détails sur la prochaine diapo, ne changez pas de poste!
9
Détection de l’interblocage
1) Pour chaque nœud, N, dans le graphe, faites ces étapes en commençant avec le nœud N: 2) Initialise L comme une liste vide et les arcs non marqués 3) Ajoute le nœud courrant à la fin de L et vérifie si N apparaît deux fois. Si oui, le graphe contient un cycle et l’algorithme termine 4) A partir de ce nœud, regarde si il y a des arcs sortants qui ne sont pas marqués. Si oui va à l’étape 5, sinon va à l’étape 6 5) Prend aléatoirement un arc qui n’est pas marqué et marque le. Ensuite suit le jusqu’au prochain nœud qui devient courrant et va à l’étape 3 6) L’algorithme est à un impasse. Enlève le nœud courrant de la liste, et retourne au nœud précédent (celui duquel tu proviens) et retourne à l’étape 4. Si c’est le nœud initial (N) le graphe ne contient pas ce cycles
10
Détection de l’interblocage
(On fait l’algorithme ici pas de free lunch) Détection de l’interblocage This slide is to be used in drawing how the algorithm actually functions. Use the one that is already on the board and have one of the students do it. Remember to have them keeping a running list such as L=[R,A,S] to demonstrate how L is filled and to mark the arcs as they go!
11
Détection de l’interblocage
Cette solution pour la détection des interblocages marche pour des instances uniques de ressources, mais que ce passe-t’il si nous avons des instances multiples? Une solution est basée sur les matrices/vecteurs et utilise quatre structures de données pour identifier les conditions d’interblocage m classes de ressource (ie: m=2, imprimante, scanner) Ei instances pour chaque classe de ressource (1i m) E est le vecteur des ressources existantes A est le vecteur des ressources disponibles Deux matrices: allocation courante (C) et demandes (R)
12
Détection de l’interblocage
Ressources en Existence (E1, E2, E3, ..., Em) Ressources Disponibles (A1, A2, A3, ..., Am) Périphérique apocalyptique Imprimante Scanneur Modem C11 C12 C13 ... C1m C21 C22 C23 C2m . Cn1 Cn2 Cn3 Cnm R11 R12 R13 ... R1m R21 R22 R23 R2m . Rn1 Rn2 Rn3 Rnm So, note that if we add up all of the device allocated from the matrix for a particular device (eg C11+C21+C31, Cn1) and the available resources (A1) then we have the total resources in existence (E1) The i-th row of each matrix shows how many of each resource class has been allocated/requested by each process Columns are for indicating where resources from each class have been allocated/requested Note that those are requests. The don’t represent the maximum resources that a process may ever need, but they are resources which the processes now need or they cannot continue. Matrice d’allocation courante Matrice de demande Allouée au processus 2 Requis par processus 1
13
Détection de l’interblocage
Comment utiliser ces structures de données pour détecter les interblocages? Comparaison de vecteurs. Définit AB qui veut dire que chaque élément dans A est moins que ou égal à l’élément correspondant dans B Mathématiquement, AB est vraie ssi AiBi pour 1im Commence par désigner chaque processus comme “non-marqué” Quand un processus est “marqué” cela indique qu’il est capable de compléter et n’est donc pas en interblocage (CE processus en particulier)
14
Détection de l’interblocage
Comment utiliser ces structures de données…? Maintenant on applique cet algorithme: 1) Cherche pour un processus non marqué, Pi, pour lequel la ième rangé de R est plus petite ou égale à A 2) Si un tel processus est trouvé, ajoute la ième rangé de C à A, marque le processus et retourne à l’étape 1 3) Si aucun processus comme cela existe, l’algorithme termine Tout processus non marqué(s) quand l’algorithme termine sont interbloqués
15
Détection de l’interblocage
Exemple: Est-ce qu’il y a un interblocage ici? Work this one out by using the pen (ctrl-P) Execute in order of with no deadlock in the end NOTE: Error in book, page It demonstrates how a minor variation in this causes a deadlock to occur. It says, “Suppose that process 2 needs a CD-ROM drive as well as the two tape drives and the plotter. None of the requests can be satisfied, so the entire system is deadlocked.” It should read “process 3” to make sense.
16
Reprise de l’interblocage
Maintenant nous pouvons détecter l’interblocage, comment pouvons nous reprendre un fonctionnement normal? Il n’y a pas de bon choix, juste un plus petit mal à partir d’un nombre de candidats Reprise par la préemption Reprise par le retour en arrière Reprise par l’élimination de processus (un ou plusieurs)
17
Reprise de l’interblocage
Reprise par la préemption Il peut être possible d’enlever une ressource d’un processus et la donner à un autre Ceci peut nécessiter l’intervention manuel ie: aller à l’imprimante et enlever les feuilles déjà imprimées pour ne pas mélanger les feuilles d’un autre processus Cette méthode est très dépendante du type de ressources – fréquemment difficile sinon impossible écrire à une base de données mais seulement la moitié de la job est faite...peut-on vraiment interrompe ça?
18
Reprise de l’interblocage
Reprisse par retour en arrière (rollback) Les processus sont marqué avec des points de reprise (checkpoints) périodiquement. Tout ce que l’on a besoin pour les repartir dans l’état exacte où ils sont est écrit dans un fichier (incluant les ressources assignées) Si un interblocage arrive, un état antécédent peut être restauré et certains processus retardés pour que les ressources ne soient pas demandés de la même façon et qu’un nouveau interblocage arrive Désavantage: Le temps et les ressources prisent pour sauver les états des processus Comment choisir l’intervalle des checkpoints
19
Reprise de l’interblocage
Reprise en éliminant des processus Pas élégant, efficace, mais potentiellement dommageable Il vaut mieux d’éliminer un processus dans le cycle si il ne dérangera pas les autres processus dans le cycle. Alternativement, une autre victime qui tient une ressource requise (qu’elle utilise et qu’elle ne planifie jamais lâcher n’est pas ‘techniquement’ dans le cycle) peut être éliminée Meilleur choix: un processus qui peut être ré-exécuté du début sans effets néfastes Pire choix: processus qui modifie une ressource statique tel qu’une base de données Best choice: if you’re just giving it some input data and it produces an output file, it can be done again, right? Worst choice: if the process is modifying the database by doing some incrementing then running it again will potentially add too much information to the database
20
Quiz Time! Questions?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.