Systèmes d’Exploitation - ENSIN6U3 Gestion des ressources Leonardo Brenner 1 1 Jean-Luc Massat 2 [email protected] 2 [email protected] Aix-Marseille Université Faculté des Sciences Table de matière 1 Ressources Définition des ressources Allocation de ressources 2 Interblocages Traitement des interblocages Ignorer les problèmes Prévention des interblocages Évitement des interblocages Détection des interblocages Guérison des interblocages Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 2 / 27 Ressources Table de matière 1 Ressources Définition des ressources Allocation de ressources 2 Interblocages Traitement des interblocages Ignorer les problèmes Prévention des interblocages Évitement des interblocages Détection des interblocages Guérison des interblocages Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 3 / 27 Ressources Définition des ressources Définition des ressources Définition d’une ressource Une ressource est un objet utilisable par une tâche. Elle est caractérisée par : l’existence d’un mode d’emploi ; un état (libre ou allouée) ; l’existence d’un allocateur que répond aux requêtes. Type de ressources On distingue les ressources : banalisées : qui ont des occurrences multiples (imprimantes, canaux d’E/S) ; réquisitionnables : CPU, mémoire ; physiques ou logicielles ; partageables ou réentrantes : pour le code d’un programme. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 4 / 27 Ressources Définition des ressources Utilisation des ressources Étapes d’utilisation Demande : représente l’étape de demande d’une ressource. Si la demande ne peut pas être satisfaite, on la met en attente ; Utilisation : le processus peut utiliser la ressource ; Libération : le processus libère la ressource demandée et allouée. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 5 / 27 Ressources Allocation de ressources Objectif de l’allocation de ressources Objectif Les allocateurs de ressources doivent : être équitables (en respectant les priorités) ; éviter la privation (attente sans fin d’une ressource) ; éviter l’apparition d’un interblocage ; éviter une congestion en veillant à : identifier une demande excessive de ressources ; ne pas accepter de demandes quand le système est en surcharge. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 6 / 27 Ressources Allocation de ressources Le graphe d’allocation de ressources Graphe d’allocation L’état des ressources est décrit au moyen d’un graphe de l’allocation de ressources. Un processus Pi et une ressource Rj ayant 3 occurrences sont décrits par : Pi Rj Demandes d’allocation Les demandes d’allocation et les ressources allouées sont décrits par : R1 (a) P1 R2 (b) Leonardo Brenner , Jean-Luc Massat (AMU) P1 Systèmes d’Exploitation P1 réclame une ressource de type R1 Une ressource de type R2 a été allouée à P1 7 / 27 Interblocages Table de matière 1 Ressources Définition des ressources Allocation de ressources 2 Interblocages Traitement des interblocages Ignorer les problèmes Prévention des interblocages Évitement des interblocages Détection des interblocages Guérison des interblocages Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 8 / 27 Interblocages Les interblocages Définition - Interblocage Attente indéfinie pour un ou plusieurs processus d’une ou plusieurs ressources détenues par des processus en attente de ressources. Conditions d’apparition Exclusion mutuelle : les ressources ne sont pas partageables ; Détention et attente : chaque processus utilise simultanément plusieurs ressources ; Pas de préemption : les ressources ne sont pas réquisitionnables ; Attente circulaire : il existe un ensemble de processus (p0 , ..., pn ) tel que : pi attend pi+1 pour 0 ≤ i < n, pn attend p0 . Les 3 premières conditions n’impliquent pas nécessairement une interblocage, car l’attente circulaire pourrait ne pas se réaliser. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 9 / 27 Interblocages Un exemple d’interblocage Deux processus en interblocage Un interblocage représenté par un graphe d’allocation des ressources : La ressource 1 est détenue par le processus A ressource 1 Le processus B réclame la ressource 1 processus A processus B Le processus A réclame la ressource 2 ressource 2 La ressource 2 est détenue par le processus B Pa (1) (3) Leonardo Brenner , Jean-Luc Massat (AMU) Pb .. . prendre R1 .. . (2) prendre R2 .. . prendre R2 .. . (4) prendre R1 Systèmes d’Exploitation 10 / 27 Interblocages Traitement des interblocages Traitement des interblocages Comment traiter les interblocages Ignorer les problèmes : politique de l’autruche ; La prévention : On impose des règles strictes qui évitent l’apparition d’un interblocage ; L’évitement : On surveille l’apparition d’un interblocage en imposant des contraintes moins strictes ; La détection : Un algorithme à la charge de détecter les interblocages ; La guérison : Suppression éventuelle de l’un des processus. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 11 / 27 Interblocages Ignorer les problèmes Ignorer les problèmes Politique de l’autruche Cette stratégie consiste à ignorer complètement les possibilités d’interblocages. C’est à les utilisateurs de coder correctement leurs applications et de surveiller à la bonne exécution. Critiques + Solution adoptée par la plupart des systèmes d’exploitation courants ; + Très rapide et légère, il n’y a rien à implémenter ; - Aucune garantie sur le bon fonctionnement du système. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 12 / 27 Interblocages Prévention des interblocages Prévention des interblocages (1/5) Annonce des demandes Annoncer les demandes de ressources nécessaires avant de démarrer un processus. Le processus ne démarre que si tous les ressources demandées sont disponibles. Critiques + solution parfaite ; - très mauvaise utilisation des ressources ; - programmes difficiles à écrire (on ne connaît pas les ressources en avance) ; - risque de famine. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 13 / 27 Interblocages Prévention des interblocages Prévention des interblocages (2/5) Libération et re-allocation des ressources À chaque demande d’allocation d’une ressource supplémentaire, il faut libérer toutes les ressources détenues et les redemander en y ajoutant la ressource supplémentaire. Critiques - très mauvaise utilisation des ressources (perte au milieu de l’utilisation) ; Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 14 / 27 Interblocages Prévention des interblocages Prévention des interblocages (3/5) Virtualisation de ressources Diminuer le nombre de ressources qui ne peuvent pas être réquisitionnées. interdire l’accès direct à la ressource, remplacer la ressource réelle par une ressource virtuelle. Exemple de virtualisation de ressources processeur −→ processus ; mémoire −→ mémoire virtuelle ; imprimante −→ queue d’impression ; écran −→ double-buffer, display ; machine −→ machine virtuelle. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 15 / 27 Interblocages Prévention des interblocages Prévention des interblocages (4/5) Ressources réquisitionnables Pour supprimer la contrainte de non réquisition. On peut utiliser le protocole suivant : un processus détenant certaines ressources en demande une autre si la ressource peut être allouée immédiatement, alors le processus continue avec la ressource demandée ; sinon, toutes les ressources actuellement allouées au processus sont réquisitionnées. Critiques - Lenteur - Risque de famine Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 16 / 27 Interblocages Prévention des interblocages Prévention des interblocages (5/5) Classement des ressources Classer les ressources suivant un ordre, et respecter cet ordre lors des demandes de ressources. Critiques + La condition d’attente circulaire est impossible donc pas d’interblocage possible ; - Cet ordre doit respecter une certaine logique, ... mais laquelle ? - La contrainte est très lourde ; - La portabilité des applications est médiocre ; - Que faire quand on ajoute une nouvelle ressource ? Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 17 / 27 Interblocages Évitement des interblocages Évitement des interblocages Politique d’évitement : Prudence On évite les interblocages en adoptant un comportement prudent. La méthode la plus connu est l’algorithme des banquiers. Principe Cet algorithme consiste à examiner chaque nouvelle requête pour voir si elle conduit à un état sain. Si c’est la cas, la ressource est allouée, sinon la requête est mise en attente. le S.E. connaît les demandes maximales ; les allocations/libérations sont libres. État sain Un système est dans un état sain s’il existe une séquence saine. Une séquence de processus P1 , ..., Pn est une séquence saine pour l’état d’allocation courant si, pour chaque Pi , les requêtes des ressources de Pi peuvent être satisfaites par les ressources disponibles, plus les ressources détenues par tous les Pj , avec j < i. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 18 / 27 Interblocages Évitement des interblocages L’algorithme des banquiers (1/3) Principe de fonctionnement Les processus sont comme des clients qui désirent emprunter de l’argent (ressources) à la banque ; Un banquier ne devrait pas prêter de l’argent s’il ne peut pas satisfaire les besoins de tous ses clients ; À tous moment, la quantité d’argent prêtée par la banque ne peut pas dépasser la quantité maximale d’argent de la banque ; Pour décider si le prêt doit être accordé, l’algorithme du banquier teste si cette allocation conduira le système dans un état sain. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 19 / 27 Interblocages Évitement des interblocages L’algorithme des banquiers (2/3) Structures de données M : nombre de classes de ressources ; N : nombre de processus ; dispoj pour j ∈ {1, ..., M} ; maxi,j pour i ∈ {1, ..., N}, j ∈ {1, ..., M} ; alloci,j pour i ∈ {1, ..., N}, j ∈ {1, ..., M}. Conditions d’exécution Un processus Pi peut s’exécuter ssi ∀j ∈ {1, ..., M}, (maxi,j − alloci,j ) ≤ dispoj Un ordre d’exécution Pk1 , ..., Pkn est dit sain ssi les processus peuvent s’exécuter dans cet ordre les uns après les autres. Si,dans un système d’allocation de ressources, il existe un ordre d’exécution sain, alors il n’y a pas d’interblocages. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 20 / 27 Interblocages Évitement des interblocages L’algorithme des banquiers (3/3) Algorithme d’allocations Algorithme d’allocation de Rj à Pi : 1 2 3 4 dispoj > 0 ? les annonces sont-elles respectées ? si Rj est allouée à Pi , l’état est-il sain ? si la réponse est négative, suspendre le processus Pi . Critiques + Seule les requêtes laissant le système dans un état sain sont honorées ; - Présuppose le nombre de ressources invariant ; - Il faut connaître le nombre maximale de ressources que le processus aura besoin. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 21 / 27 Interblocages Détection des interblocages Détection des interblocages Principe Le système ne cherche pas à empêcher les interblocages ; À pour but de détecter les attentes circulaires ; Coût exploitation non négligeable. Différents types de vérification À chaque modification du graphe suite à une demande d’une ressource ; Périodiquement ; Faible utilisation du processeur. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 22 / 27 Interblocages Détection des interblocages Détection des interblocages Détection par graphe d’allocation Nous devons montrer qu’il n’y a pas d’attente circulaire. Pour cela : Un processus peut se terminer sans attendre les autres ; D’autres processus pourrons se terminer après avoir récupérer les ressources libérés par les précédents. Nous supposons l’existence des 3 premières conditions : Exclusion mutuelle, Détention et attente et Pas de préemption. Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 23 / 27 Interblocages Détection des interblocages Détection des interblocages Exemple de détection par graphe d’allocation P8 P7 P8 P7 R6 R6 P9 Réduction par P9 P9 R7 R7 Réduction par P7 P8 P7 P8 P7 R6 R6 P9 Réduction par P8 R7 Leonardo Brenner , Jean-Luc Massat (AMU) P9 R7 Systèmes d’Exploitation 24 / 27 Interblocages Détection des interblocages Détection des interblocages Exemple détection par graphe d’allocation R1 R1 R2 R2 R5 R5 P1 P2 P3 P4 P5 P1 P2 P3 P4 R4 R4 R3 R3 R1 R1 R2 R2 R5 P1 P2 P3 P1 P2 P3 R4 R3 Leonardo Brenner , Jean-Luc Massat (AMU) R3 Systèmes d’Exploitation 25 / 27 Interblocages Détection des interblocages Détection des interblocages Constatations S’il n’y a pas de cycles dans le graphe d’allocation, aucun interblocage peut exister ; Les cycles dans le graphe d’allocation de ressources ne représente pas nécessairement une attente circulaire ; S’il y a de cycles : S’il y a seulement une ressource par type, il y a forcement interblocage ; Si plusieurs ressources par type, il y a possibilité d’interblocage. Est-ce qu’il y a un processus qui peut se terminer ? Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 26 / 27 Interblocages Guérison des interblocages Guérison des interblocages Comment guérir des interblocages Retirer temporairement une ressources à un processus ; Restaurer un état antérieur du système ; Supprimer un ou plusieurs processus. Problèmes Quel processus supprimer ? ou retirer les ressources ? Comment revenir à un état sain ? Leonardo Brenner , Jean-Luc Massat (AMU) Systèmes d’Exploitation 27 / 27