Systèmes d’exploitation

32
Systèmes d’exploitation Processus interblocage

description

Systèmes d’exploitation. Processus interblocage. Introduction. De nombreuses applications nécessitent un accès exclusif à plusieurs ressources (ex : impression d’un fichier depuis une disquette) - PowerPoint PPT Presentation

Transcript of Systèmes d’exploitation

Page 1: Systèmes d’exploitation

Systèmes d’exploitation

Processus interblocage

Page 2: Systèmes d’exploitation

Introduction

De nombreuses applications nécessitent un accès exclusif à plusieurs ressources (ex : impression d’un fichier depuis une disquette)PB : dans un système multiprogrammé, plusieurs processus peuvent désirer accéder aux mêmes ressources exclusivesEx : 2 processus qui veulent imprimer un fichier contenu sur une disquette

– Proc A requiert l’imprimante et l’obtient– Proc B monte la disquette– A essaye de monter la disquette, malheureusement B ne la libère pas et demande

l’imprimante– A ce stade les 2 processus sont bloqués et le resteront indéfiniment

Cette situation est appelée interblocage (deadlock)Les interblocages peuvent intervenir dans bien d’autres situations que l’accès à des périphériques d’E/SEx : l’accès à 2 enregistrements d’une BDLes interblocages peuvent donc se produire sur des ressources matérielles et logicielles

Page 3: Systèmes d’exploitation

Les ressources

Une ressource est un objet allouable par un seul processus à la foisElle peut être un périphérique matériel ou une information 2 types de ressources : préemptibles ou nonRessource préemptible = ressource qui peut être retirée sans risque au processus qui la détient (ex : le CPU)En général, les interblocages concernent les ressources non préemptibles (ex : imprimante)L’utilisation d’une ressource produit 3 événements :

1. Demande de la ressource2. Utilisation de la ressource3. Libération de la ressource

Nous considérons qu’un processus demandant une ressource déjà allouée est bloqué (ou en sommeil)

Page 4: Systèmes d’exploitation

Interblocages : définition

Un ensemble de processus est en interblocage si chaque processus attend un événement que seul un autre de

l’ensemble peut engendrer

Comme tous les processus attendent, aucun ne pourra produire l’événement pour réveiller un des autres processusLa plupart du temps, l’événement attendu par un processus est la libération d’une ressource détenue par un autreLe nombre de processus, le nombre de ressources et la nature des ressources n’importent pas.

Page 5: Systèmes d’exploitation

Conditions de survenued’un interblocage

Coffman et al. (1971) ont montré qu’il faut réunir 4 conditions pour provoquer un interblocage :

1. L’exclusion mutuelle : chaque ressource est soit attribuée, soit disponible

2. La détention et l’attente : les processus qui détiennent des ressources précédemment obtenues peuvent en demander des nouvelles

3. Pas de réquisition : les ressources obtenues par un processus ne peuvent lui être retirées contre son gré ; elles doivent être explicitement libérées par le processus qui les détient

4. L’attente circulaire : il doit y avoir un cycle d’au moins 2 processus chacun attendant une ressource détenue par un autre processus du cycle

Aucun interblocage possible si l’une de ces conditions n’est pas vérifiée

Page 6: Systèmes d’exploitation

Modélisation des interblocages

Holt en 1972 a montré comment modéliser ces 4 conditions à l’aide de graphes2 types de nœuds (des cercles pour les processus, des carrés pour les ressources)Un arc orienté d’une ressource vers un processus signifie que cette ressource est attribuée à ce processusUn arc orienté d’un processus vers une ressource signifie que le processus est bloqué en attente de cette ressourceUn cycle dans le graphe signale un interblocage

R

A S

UT

D

C

B

A détient R B demande SInterblocage

Page 7: Systèmes d’exploitation

Exemple d’interblocage

3 processus (A,B,C) et 3 ressources (R,S,T)

R S T

A B C

1. A demande R

2. B demande S

3. C demande T

4. A demande S

5. B demande T

6. C demande R CYCLE INTERBLOCAGE

Page 8: Systèmes d’exploitation

SE face aux interblocages

Le SE n’est pas tenu d’exécuter les processus dans un ordre particulierS’il constate que l’allocation d’une ressource peut conduire à un interblocage, il peut simplement suspendre le processus qui effectue la requête En général, il existe 4 stratégies pour traiter les interblocages :

1. Ignorer complètement le problème2. Les détecter et y remédier3. Les éviter dynamiquement en allouant les ressources avec

précaution4. Les prévenir en empêchant l’apparition d’une des 4 conditions

Page 9: Systèmes d’exploitation

La politique de l’autruche

Approche la + simple : mettre la tête dans le sable en prétendant qu’il n’a aucun problèmePour les matheux : comportement inacceptablePour les ingénieurs : cherchent à connaître la fréquence du phénomène et le nombre de fois où le système s’arrête pour d’autres raisons ! UNIX ne détecte pas les interblocages

Ex : Table des processus (100 places), 10 programmes s’exécutent et créent chacun 12 fils table pleine lorsque les 10 processus originaux auront chacun créé 9 fils, chacun des processus effectuant une boucle infinie en essayant de créer un nouveau processus : il y a interblocage !PB : le prix à payer pour éliminer les interblocages est élevé !Trouver un compromis entre commodité et exactitude et tenter de déterminer lequel de ces facteurs est le plus important pour quelle catégorie d’utilisateursDifficile de trouver des solutions générales !

Un problème mais où çà ?

Page 10: Systèmes d’exploitation

Détection et reprise

Deuxième technique : la détection et la reprise

Le système ne cherche pas à empêcher les

interblocages

Il les laisse se produire, puis tente de les détecter et

d’y remédier à posteriori

Page 11: Systèmes d’exploitation

Détection avec une seule ressource d’un type donné

Cas le plus simple : il n’existe qu’une seule ressource d’un certain typeDans ce cas, la recherche de cycle dans le graphe d’allocation des ressources est suffisantUn algo simple de recherche de cycle :

1. Pour chaque nœud N du graphe :2. Initialiser L à vide et démarquer les arcs3. Si NL alors cycle, sinon ajouter N à L4. S’il existe des arcs non marqués partants de N goto 5,

sinon goto 65. Prendre un arc et le marquer,

atteindre le nœud destination et goto 36. Revenir au nœud précédent et goto 4

Page 12: Systèmes d’exploitation

Détection avec plusieurs ressources d’un type donné (1)

Soit, n le nombre de processus P i

Soit m, le nombre de catégorie de ressources E i ; Ei=2 => 2 ressources de ce typeE est le vecteur de ressources existantesA un instant donné, certaines ressources sont utilisées,soit A le vecteur des ressources disponibles2 matrices : C (matrice des allocations courantes) et R (matrice des demandes)

– Cij représente le nombre d’instances de la catégorie j détenues par Pi

– Rij représente le nombre d’instances de la catégorie j demandées par Pi

Propriété : (une ressource est soit allouée, soit libre)Ex :

jj

n

i

ij EAC 1

E=(4 2 3 1) A=(2 1 0 0)

0210

1002

0100

0012

0101

1002

C= R=

Page 13: Systèmes d’exploitation

Détection avec plusieurs ressources d’un type donné (2)

L’algo de détection des interblocages consistent à effectuer une comparaison de vecteurs2 vecteurs V et W : VW ssi i Vi Wi

Idée : marquer les processus qui peuvent se terminer et qui ne sont pas en interblocage

1. Rechercher Pi non marqué dont Ri A2. Si ce processus existe : A=A+Ci, marquer Pi et goto 1

3. Sinon fin de l’algo

Tout processus non marqué est en interblocageExemple :

E=(4 2 3 1) A=(2 1 0 0)0210

1002

0100

0012

0101

1002

C= R=

Page 14: Systèmes d’exploitation

Quand détecter les interblocages ?

Première possibilité : à chaque demande de ressource– Détection rapide

– Coûteux en temps CPU

Deuxième possibilité : tous les k minutes ou lorsque l’utilisation du CPU

est inférieure à un certain seuil

La prise en compte de l’utilisation du CPU est intéressante, car les

processus en interblocage ne s’exécutant pas, le CPU est souvent libre

Reste une question : que faire lorsque l’on a détecté un interblocage ?– Il faut permettre au système de se rétablir et de poursuivre son exécution

– Plusieurs méthodes existent, aucune n’est vraiment satisfaisante !

Page 15: Systèmes d’exploitation

Reprise au moyen de la préemption

Retirer temporairement une ressource à un processus pour l’attribuer à un autreDans de nombreux cas, une intervention manuelle est nécessaireEx : impression : récupérer les feuilles déjà imprimer, suspendre le processus, laisser un autre imprimer, replacer les feuilles et permettre au processus de reprendre son impressionLa possibilité de retirer une ressource à un processus pour l’attribuer à un autre avant de le restituer au premier (sans qu’il ne s’en rende compte) dépend beaucoup de la nature de la ressourceLe choix du processus à suspendre dépend des ressources qui peuvent être le plus facilement retiréesCe type de reprise est souvent difficile, voire impossible

Page 16: Systèmes d’exploitation

La reprise au moyen du rollback

Si les concepteurs du système pensent que les interblocages sont probables, ils peuvent poser régulièrement des points de reprise (checkpoints) sur les processusL’état des processus est sauvegardé dans un fichier, pourra être restauré ultérieurementLe checkpoint contient l’état l’image mémoire du processus ansi que les ressources attribuées à ce processusUn nouveau checkpoint ne doit pas remplacer le précédentLorsqu’un interblocage survient, il faut déterminer la ressource incriminée et restaurer le processus dans un état antérieur à l’acquisition de la ressourceTout le travail effectué depuis ce point de reprise est perdu

Page 17: Systèmes d’exploitation

La reprise au moyen de la suppression des processus

Méthode la plus radicale et la plus simple : tuer un ou plusieurs processus !Possibilité de tuer un processus du cycle, avec un peu de chance, les autres pourront poursuivre ; cette opération peut être répétée jusqu’à ce que le cycle soit rompuAutre possibilité, tuer un processus qui n’est pas dans le cycle de manière à libérer ses ressources ; le processus est choisi en fonction des ressources qu’il détient et qui sont demandées par un des processus du cycleIl est préférable de tuer un processus qui peut être entièrement réexécuté sans effets secondaires (ex : une compilation à l’inverse d’un m.a.j. de BD)

Page 18: Systèmes d’exploitation

L’évitement des interblocages

Idée : le système ne peut-il pas attribuer une ressource que s’il est sûr que celle-ci ne provoquera pas d’interblocage ?

Un tel algo existe mais il implique la nécessité de connaître à l’avance certaines informations

Dans cette partie, nous allons étudier le moyen d’éviter les interblocages grâce à une allocation prudente des ressources.

Page 19: Systèmes d’exploitation

La trajectoire des ressources

Principaux algos d’évitement sont basés sur le concept d’état sûrReprésentation graphique du concept :

inaccessibleSûre

Sûre

Sûre

SûreSûre

Non sûre

A

B

I1 I2 I3 I4Imprimante

DAT

I8

I7

I6

I5DAT

Imprimante

p q

rs

t

u(les 2 processussont terminés)

Région où les processus demandent l’imprimante

Région où les processus demandent le DAT

Page 20: Systèmes d’exploitation

Les états sûrs et non sûrs

Un état est dit sûr, s’il n’existe pas d’interblocage et s’il existe un moyen de satisfaire toutes les requêtes en attente, en exécutant les processus dans un certain ordreEx : 10 instances d’une ressource uniquecolonne 1: processus, colonne 2 : allouée, colonne 3 : Max demande

Libre : 3

72C

42B

93AEtat sûr

Libre : 1

72C

44B

93A

Libre : 5

72C

-0B

93A

Libre : 0

77C

-0B

93A

Libre : 7

-0C

-0B

93A

Libre : 2

72C

42B

94AEtat

non sûr

Un état non sûr ne conduit pas nécessairement à un interblocage.

La entre un état sûr et non sûr est que à partir d’un état sûr, le système peut garantir que tous les processus termiront leur exécution (garantie non assurée pour un état non sûr)

Page 21: Systèmes d’exploitation

L’algorithme du banquier pour une ressource unique

Djikstra (65) a proposé un algorithme d’ordonnancement, l’algorithme du banquier, qui permet d’éviter les interblocagesIl s’inspire de la manière dont un banquier accorde des prêts à ses clientsL’algo du banquier consiste à examiner chaque nouvelle requête pour voir si elle conduit à un état sûr. Si c’est le cas, la ressource demandée est allouée, sinon la requête est mise en attente.Pour voir si l’état est sûr, le banquier (l’ordonnanceur) vérifie si le nombre de ressources non allouées permet de satisfaire le client (le processus) le plus près de son maximumSi ce nombre est suffisant, l’algorithme suppose que les ressources de ce client sons restituées, puis il vérifie qu’il peut satisfaire le client qui est maintenant le plus prêt de son maximum, etc.Si tous les prêts (les ressources) peuvent être remboursées (restituées), l’état initial est déclaré sûr.

Page 22: Systèmes d’exploitation

L’algorithme du banquier pour plusieurs ressources (1)

L’algo précédent peut être généralisé pour gérer des ressources multiples2 matrices (ressources attribuées C et ressources encore demandées R) et 3 vecteurs (E les ressources existantes, A les ressources disponibles et P les ressources détenues [P=E-A])Algo qui détermine si un état est sûr :

1. Trouver une rangée Ri de R, telle que Ri A. Si aucune rangée, il y a interblocage2. Supposer que Pi obtienne toutes les ressources qu’il demande et se termine.

Indiquer que ce processus est achevé et ajouter ses ressources à A3. Répéter 1. et 2. jusqu’à ce que tous les processus soient marquées comme

terminés, l’état initial dans ce cas est sûr, ou jusqu’à ce qu’il y ait un interblocage, ce ui indique que l’état initial est non sûr.

Si plusieurs processus vérifient les conditions de 1., on peut prendre n’importe lequel d’entre eux puisque le nombre de ressources disponibles augmentera, ou au pire des cas, restera invariant

Page 23: Systèmes d’exploitation

L’algorithme du banquier pour plusieurs ressources (2)

Exemple : P2 demande l’imprimante, cette requête peut être satisfaire puisque P4 peut se terminer, puis P1 ou P5 et enfin les autres ; donc l’état résultant est sûrP5 demande maintenant l’imprimante, si on lui accorde A=(1000) ce qui conduit à un interblocage, P5 doit donc être suspendueCet algo, en théorie est excellent, mais en pratique peu utile, les processus connaissant rarement à l’avance le nombre et le type de ressources dont ils auront besoinDe +, le nbre de ressources n’est pas fixe, mais varie en fonction du nbre d’utilisateursEnfin, des ressources peuvent disparaître brutalement (ex : panne)Dans, la pratique peu de systèmes mettent en œuvre l’algo du banquier

0000P5

1011P4

0111P3

0010P2

1103P1

cdRLPRDATCD

0112P5

0100P4

0013P3

2110P2

0011P1

cdRLPRDATCD

C=

E=(6342) P=(5322) A=(1020)

R=

Page 24: Systèmes d’exploitation

La prévention des interblocages

Évitement des interblocages impossible car nécessite des informations relatives à des requêtes futures qui ne sont pas connuesSeul moyen d’interdire les interblocages empêcher l’apparition d’une des conditions de Coffman et al.– La condition d’exclusion mutuelle– La condition de détention et d’attente– La condition de non-réquisition– La condition d’attente circulaire

Page 25: Systèmes d’exploitation

La condition d’exclusion mutuelle

Si aucune ressource n’est attribuée de manière exclusive, on n’aura jamais d’interblocageCependant impossible de permettre à 2 processus d’imprimer en même tempsIdée : le spoule d’impression

– permet à plusieurs processus de générer des résultats simultanément– le démon d’impression est le seul processus qui accède à l’imprimante– ce démon ne demande aucune autre ressource, le problème de l’interblocage est résolu

Problèmes : – cette technique ne peut s’appliquer à tous les périphériques (ex : la table des processus)– concurrence des accès au disque lors du spoule peut conduire à un interblocage

Ex : 2 processus ont épuisé l’espace disponible pour le spoule et aucun des deux n’a terminé => interblocage au niveau disqueMauvaise solutionNéanmoins, il y a une idée qui peut être fréquemment mis en œuvre :

– Éviter d’allouer une ressource si cela n’est pas absolument nécessaire– S’assurer qu’il y a le moins de processus possible qui peuvent la demander

Page 26: Systèmes d’exploitation

La condition de détention et d’attente

On peut éliminer les interblocages, si l’on arrive à empêcher les processus qui détiennent déjà des ressources d’attendre pour en acquérir de nouvellesPou cela, on peut imposer aux processus de demander les ressources dont ils ont besoin avant de commencer à s’exécuter :

– Si les ressources sont dispo, elles lui sont attribuées et le processus peut terminer son exécution

– Sinon (au moins une ressource n’est pas dispo), aucune ressource ne lui est allouée, le processus attend la libération de toutes les ressources dont il a besoin

Malheureusement, beaucoup de processus ne connaissent pas à l’avance les ressources dont ils ont besoin (sinon algo du banquier et plus de problème !)Par ailleurs, les ressources ne sont pas attribuées de manière optimale (ex : un processus fait un calcul pendant une heure et l’imprime => il monopolise l’imprimante pendant une heure pour imprimer une ligne !)Néanmoins quelques systèmes à traitement par lots utilisent cette méthodeApproche légèrement différente : imposer aux processus qui demandent une (ou plusieurs) nouvelle(s) ressource(s) de libérer celles qu’ils détiennent.Ils tentent ensuite d’obtenir toutes les ressources demandées en une seule fois

Page 27: Systèmes d’exploitation

La condition de non-réquisition

Difficile de « jouer » sur cette condition !Comment retirer l’imprimante à un processus qui est

en train d’imprimer ? Ras le bol, cela fait 2

heures que tu imprimes !!!

Mais je n’ai pas fini, espèce de

SUPPRIMER

LES RESSOURCES

Page 28: Systèmes d’exploitation

La condition d’attente circulaire

Première approche : limiter à 1 le nombre de ressources détenues pas un processus à un instant donnéSolution inacceptable : ex : impression d’un fichier se trouvant sur bande magnétiqueAutre solution, numéroter toutes les ressources et appliquer la règle suivante :

– Les processus peuvent demander toutes les ressources qu’ils souhaitent à condition que les numéros des ressources demandées soient croissants

Cette règle empêche les interblocagesPreuve pour 2 processus :

– Interblocage si A possède la ressource i, demande j et B possède j et demande i– Si i>j, A ne pourra pas demander j (violation de la règle)– Si i<j, B ne pourra pas demander i (violation de la règle)

Le même raisonnement s’applique à un nombre quelconque de processusVariante : ne peut demander une ressource que si son numéro est supérieur à celui de la plus haute ressource qu’il détient (au lieu d’imposer un ordre croissant)Le classement numérique élimine l’interblocage, mais il existe des cas où il ne peut pas satisfaire tous les processus

Page 29: Systèmes d’exploitation

Prévention des interblocagesSynthèse

Condition Méthode

Exclusion mutuelle Spoule

Détention et attente Demander toutes les ressources à l’avance

Pas de réquisition Supprimer les ressources

Attente circulaire Ordonner numériquement les ressources

Page 30: Systèmes d’exploitation

Le verrouillage à 2 phases

Évitement et prévention pas efficace dans le cas généralCependant pour des applications spécifiques, il existe des algo générauxEx : dans de nombreuses BD, on pose des verrous sur les enregistrements avant la maj => risque d’interblocage non négligeableSolution le verrouillage à 2 phases :– Dans la première phase, le processus tente de verrouiller tous les

enregistrements dont il a besoin l’un après l’autre– S’il réussit, il entre en 2ème phase, effectue les maj et retire les verrous– Sinon (un enregistrement était déjà verrouillé), le processus retire tous les

verrous et recommence entièrement depuis la première phase

Méthode relativement similaire à celle consistant à demander toutes les ressources à l’avance

Page 31: Systèmes d’exploitation

Les interblocages non liés aux ressources

Des interblocages peuvent se produire dans des situations indépendantes des ressourcesEx : 2 processus peuvent être en interblocage chacun attendant que l’autre effectue une certaine actionCeci arrive souvent avec les sémaphores Ex :

Proc A Proc BP(mutex1) P(mutex2)P(mutex2) P(mutex1)… …

Ou avec des signaux ou tout autre méthode de synchronisationEx :

Proc A Proc Bpause(); pause();kill(B,SIGHUP); kill(A,SIGHUP);… …

Page 32: Systèmes d’exploitation

La famineLa famine (starvation) est un problème lié aux interblocagesDans un système dynamique, les demandes de ressources arrivent à tout instant, il faut décider à qui attribuer une ressource et à quel moment le faire => certains processus peuvent alors ne jamais obtenir de ressource sans être en interblocage !Ex : allocation d’une imprimante

– Plusieurs processus demandent en même temps l’imprimante– Auquel faut-il l’allouer ?– Politique adoptable : à celui qui a le plus petit fichier à imprimer, cette approche augmente

le nbre de clients heureux et semble équitable– PB : un proc P veut imprimer un énorme fichier et avant que l’imprimante se libère des

processus avec des petits fichiers arrivent => P meurt de faim (il est différé indéfiniment, tout en n’étant pas bloqué !)

La famine peut être évitée en utilisant une politique d’allocation des ressources : premier-arrivé, premier-servi (first-come, first-serve)Cette méthode donne la ressource au processus qui attend depuis le plus longtempsAu cours du tps, tout processus sera à un instant donné le plus vieux et obtiendra la ressource