Mémoire
Transcription
Mémoire
Chapitre 5 Gestion de la mémoire Jean Privat Université du Québec à Montréal INF3172 — Principes des systèmes d’exploitation Automne 2016 Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 1 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 2 / 42 Rôles du SE (rappel) Gestion Gestion Gestion Gestion des processus de la mémoire des fichiers des entrées-sorties Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 3 / 42 Objectifs Comprendre Comment la mémoire est gérée par le SE (et le matériel) Les algorithmes liés à la gestion de la mémoire (utilisables dans d’autre contextes) Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 4 / 42 Mémoire La bonne mémoire est rapide est grande est bon marché est non volatile mais elle n’existe pas (encore) En attendant Hiérarchie de mémoire caches, ram, disques Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 5 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 6 / 42 Gestionnaire de mémoire Une composante du SE dédiée Le gestionnaire de la mémoire Son rôle : gérer la ressource mémoire Entre processus Entre processus et SE Son outil principal : le processeur Chaque processeur édicte ses propres règles Et ça facilite pas les choses Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 7 / 42 Rôles du gestionnaire de la mémoire Allocation Trouver où loger un nouveau processus Satisfaire ses demandes de mémoire supplémentaire Libérer l’espace des processus terminés Le tout sans gaspiller Protection Ne pas laisser un processus accéder ou corrompre la mémoire qui n’est pas à lui Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 8 / 42 Mémoire et programmes Un programme est constitué d’adresses Données (ex. lecture d’une variable globale) Instructions (ex. appel de fonction) Qui décide de la valeur de ces adresses ? Le compilateur et l’éditeur de liens Le choix est-il immuable ? Non, sinon adieu multi-programmation Un mécanisme est nécessaire pour translater les adresses Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 9 / 42 Relogement (ou relocation) Principe Un processus doit pouvoir être situé n’importe où en mémoire (voire changer de place) Adresses virtuelles (ou relative) Le compilateur et éditeur de liens déterminent les adresses à partir de 0 Adresses réelles Un mécanisme matériel permet de passer de l’adresse relative à l’adresse réelle De nombreux mécanismes différents existent Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 10 / 42 base/limit Coté processeur Un registre processeur particulier : base Accessible en mode noyau uniquement Le MMU (Memory Managment Unit) fait adresse absolue = adresse relative + base Coté SE Adresse base connue pour chaque processus Base est correctement positionné lors des changement de contexte Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 11 / 42 base/limit - protection Coté processeur Un registre privilégié en plus : limit Le MMU fait si adresse relative>limit alors erreur (interruption) sinon adresse absolue = adresse relative + base Coté SE limit dans la table des processus veiller aux changement de contextes si interruption alors envoyer SIGSEGV au processus fautif Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 12 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 13 / 42 Problèmes d’allocation Problème On a un espace mémoire On a des demande d’allocation et de déallocation Comment faire ça au mieux ? Applications Gestion de la mémoire par le SE Gestion de l’espace disque par le SE Gestion du tas par les processus Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 14 / 42 Allocation contiguë des processus Chaque processus a un bloc de mémoire Les blocs sont alloués et déalloués au fur et à mesure Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 15 / 42 Allocation contiguë - Problèmes Problèmes en vrac Où allouer ? Comment gérer l’espace libre ? Comment réduire la fragmentation ? Que faire quand l’espace est plein ? Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 16 / 42 Gestion de la mémoire libre Impondérable Des structures de données pour gérer la mémoire libre Ces structures sont en mémoire Deux approches Table de bits Liste chaînée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 17 / 42 Table de bit Principe Un bit représente un bloc mémoire 0 = bloc libre ; 1 = bloc occupé Problèmes Recherche segment libre lent Fragmentation interne Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 18 / 42 Liste chaînée Principe Liste des segments libres et occupés Problèmes Plus compliqué Taille non bornée des données de gestion Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 19 / 42 Fragmentation Définition De l’espace libre mais pas utilisable Fragmentation externe Les morceaux libres sont trop petits bien que la place totale libre est suffisante Solution : recompactage Fragmentation interne L’unité allocation est le bloc Or tout bloc entamé est considéré comme utilisé Donc plus d’octets que nécessaires sont alloués Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 20 / 42 Politiques d’allocation Problème Comment choisit quelle zone libre à utiliser Approches Première zone libre (first fit) Zone libre suivante (next fit) Meilleure zone libre (best fit) Meilleur zone résiduelle (worst fit) Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 21 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 22 / 42 Pagination Idée Découper l’espace mémoire réel en unités de taille fixe Les pages réelles (ou cadres) Découper l’espace d’adressage des processus en unités de même taille Les pages virtuelles Associer dynamiquement les pages virtuelles et les pages réelle (MMU) Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 23 / 42 Pagination - Exemple Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 24 / 42 Pagination — MMU et SE Au niveau MMU Une adresse virtuelle est décomposée en Numéro de page Adresse dans la page (décalage ou offset) L’association se fait par la table des pages Au niveau SE Une table des pages par processus Mettre à jour la table MMU lors des changement de contextes Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 25 / 42 Table des pages Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 26 / 42 Table des pages Où est la table ? Registres ? Non, la table est trop grande ! Un gros bloc en mémoire ? Où est ce bloc ? Il faut aussi que le SE garde une table par processus (et que le changement de contexte ait un coup raisonnable) Solution (une parmi d’autres) Registre privilégié pour l’adresse de la table Tables d’indirection en RAM Cache en MMU : Translation Lookaside Buffer Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 27 / 42 Pagination à deux niveaux Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 28 / 42 TLB et caches Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 29 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 30 / 42 Mémoire virtuelle Aller plus loin Pouvoir offrir à chaque processus une mémoire plus grande que celle disponible Idée Utiliser le disque comme mémoire supplémentaire Partition d’échange ou swap Raisonnement Un processus n’a pas forcément besoin d’être entièrement en mémoire principale Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 31 / 42 Mémoire virtuelle et pagination Une page virtuelle peut être soit en mémoire (page réelle) ou sur le disque Lorsque la page est sur le disque, on la charge en RAM au besoin Lorsque la RAM est pleine, on migre des pages vers le disque Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 32 / 42 Mémoire virtuelle — MMU et SE Coté MMU Un champ dans la table d’indirection des pages indique si la page est en RAM ou pas Si on accède à une page hors RAM, une interruption défaut de page est lancée Coté SE Le swap doit être géré en plus du reste Un défaut de page implique le chargement de la page en mémoire Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 33 / 42 Défaut de page Lors d’une interruption ’défaut de page’ Processus passé à bloqué Page manquante est localisée Demande chargement page manquante Possiblement, déchargement d’une autre page L’ordonnanceur est appelé Lorsque la page manquante est chargée Tables des pages mises à jour Processus demandeur est passe à prêt L’ordonnanceur est appelé Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 34 / 42 Politique de gestion des pages Quelle pages migrer en swap ? Problème bien étudié et bien généralisable Idées de base Idéal : Les pages non utilisées dans un futur proche migrent en swap Approximation : Les pages non utilisées récemment migrent en swap Approximation pire : Les pages anciennes migrent en swap Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 35 / 42 Algo naïf : FIFO Principe Un file des pages Les pages vieilles migrent en swap Problème : Anomalie de Belady 1,2,3,4,1,2,5,1,2,3,4,5 avec 3 et 4 cases Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 36 / 42 Algo de l’horloge ou de la seconde chance Comme l’algo naïf mais Un bit marque les page utilisés (MMU) Parcours circulaire des pages candidates Si son bit = 1, on le passe à 0 Si son bit = 0, on migre la page en swap Exemple 1,2,3,4,1,2,5,1,2,3,4,5 avec 3 et 4 cases Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 37 / 42 Plan 1 Mémoire, SE et processus 2 Problèmes d’allocation 3 Pagination 4 Mémoire virtuelle 5 Pagination avancée Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 38 / 42 Pagination et protection Champs dans la page des pages Page invalide Lecture seule ou lecture/écriture Exécution ou non En cas de contrevenance Le processeur informe le SE par une interruption matérielle Le SE informe le processus fautif par un signal Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 39 / 42 Partage de pages Idée Un même cadre peut être associé à plusieurs dans plusieurs processus Applications Partage du code Partage des données en lecture seule Partage des bibliothèques Communication par mémoire partagée Implémentation des threads Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 40 / 42 Tables des inodes en mémoire Idée Les caches des fichiers peuvent êtres rendus visibles aux processus Applications Projection des fichiers en mémoire (mmap) Exécutables et bibliothèques Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 41 / 42 Copy-on-write Idée Deux pages différentes mais contenant les mêmes octets peuvent être associées à un même cadre Si l’une des deux pages diffère, on duplique le cadre Application fork() efficace Implémentation Un cadre partagé est mit en lecture-seule Une écriture par un processus est interceptée par le SE qui duplique alors le cadre Jean Privat (UQAM) 05 — Memoire INF3172 — Automne 2016 42 / 42