Gestion mémoire
Transcription
Gestion mémoire
Problématique La Pagination La segmentation Gestion mémoire Etienne Lozes ENS Cachan Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Les mémoires Trois facteurs majeurs : la capacité le coût le temps d’accès Quelques exemples de mémoires : les registres, le cache mémoire, la mémoire vive (RAM), clé USB, le cache disque, le disque dur. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Rôle du gestionaire mémoire Quand intervient-t-il ? création d’un processus activation/désactivation d’un processus supression d’un processus Que fait-il ? partage la mémoire disponible entre les processus ⇒ protection. cartographie la mémoire alloue/désalloue de la mémoire dynamiquement pour les besoin d’un processus assure la cohérence de la mémoire optimise l’utilisation de la mémoire Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Mémoire étendue : le va-et-vient (ou SWAP) Principe : On dispose d’un segment mémoire ”mobile”, chargé en mémoire vive par le système quand il est nécessaire, remis sur disque sinon. Deux solutions : une copie de sûreté sur disque ou pas. Le problème des entrées-sortie : quand un processus emet une requête, il donne l’adresse en mémoire physique où il souhaite recevoir le résultat. Deux solution : soit c’est un tampon en mémoire système (inamovible), soit la mémoire d’un processus en attente d’E/S est déclarée inamovible. Question Pourquoi la solution avec copie de sûreté, bien qu’offrant moins de mémoire étendue, peut-elle être plus efficace ? Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation La mémoire vue par le processus... et en vrai Vue du processus un segment : En vrai PILE PILE 0..777 TAS CODE PARTITION SWAP RAM TAS 0..FF 777...FFF cache CODE FFF7...FFFF Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Les premiers systèmes : la place du système en mémoire Monoprogrammation système en mémoire RAM ou dans le BIOS : OS en ROM Programme utilisateur Programme utilisateur OS en RAM Gestionnaires periph. en ROM Programme utilisateur OS en RAM Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Les premiers systèmes : multiprogrammation à partitions fixes (MFT) Ordonnancement sur une ou plusieurs files Partitition 1 tâches en attente Partition 2 Partition 3 Partition 4 Partition 5 OS Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Translation d’adresse et protection Comment le processus va-t-il lire/écrire au bon endroit ? A la charge du système : traduire toutes les adresses. Première approche (dépassée, cf. OS/MFT) : La translation est faite au chargement du programme. Deuxième approche Les registres base et limite : chaque adresse est recalculée par le microprocesseur. Question Comparer ces deux approches en terme d’efficacité et de sûreté. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Partitions de tailles arbitraires Problème de la cartographie deux approches : table de bits ou liste de blocs 1 bloc (octet,mot, etc.) blocs occupés table de bit 101100111000 liste chaînée B F B F B B F Lien avec allocation mémoire pour un programme (malloc). Questions 1 Comparer ces deux approches. 2 Comment se fait la mise à jour de la liste des blocs ? Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation La recherche d’un segment libre Comment garer sa voiture en pensant aux autres ? Deux (fausses) bonnes idées : best fit et worst fit. ⇒ sur simulation, beaucoup de fragmentation interne Marche mieux : first fit, next fit. Avec plusieurs listes de blocs, selon leurs tailles : quick fit, on cherche dans la liste de taille adaptée à la demande. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation La fragmentation et le GC La fragmentation : de nombreuses petites zones libres inexpoitables car non contigües. Défragmentation : opération délicate, il faut remettre à jour tous les liens. Le Garbage Collector : désalloue les cellules qui ne peuvent plus être utilisée Analyse d’accessibilité. Algorithme mark and sweep. Stop and copy : le garbage collector defragmenteur : On recopie toutes les cellules utilisées en les plaçant de façon contiguë. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Problématique Que faire si un programme a besoin de plus de mémoire que celle disponible en mémoire vive ? En pratique, un programme a besoin de certaines portions de la mémoire à certaines phases de son exécution. Les recouvrements (overlay) : solution aujourd’hui dépassée, consistait pour le programmeur à définir les diverses phases du programme et les portions mémoires associées à chacune (cf. Turbo Pascal). Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Mémoire virtuelle et pagination 60k-64k X 56k-60k X 52k-56k X 48k-52k 7 44k-48k X 40k-44k 5 36k-40k X 32k-36k X 28k-32k X 24k-28k 3 page virtuelle 32k-36k cadre de page 24k-28k 20k-24k 4 20k-24k 16k-20k X 16k-20k 8k-16k 6 8k-16k 4k-8k 1 4k-8k 0k-4k 2 0k-4k MEMOIRE VIRTUELLE MEMOIRE VIVE Etienne Lozes Table des pages : consultée par la Memory Management Unit (MMU) pour faire la traduction d’adresse. Si page non chargée : défaut de page. Interruption de processus et déroutement système. Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique La table des pages en pratique La traduction d’adresse. On lit les bits de poids fort de l’adresse virtuelle (le numéro de page), et on le remplace par le numéro de cadre correspondant. Dimension de la table des pages NBPages = taille(MemVirtuelle) taille(page) On veut taille(MemVirtuelle) grande et taille(page) petite. Exemple : adressage 32 bits, taille(MemVirtuelle)= 4Go, taille(page)= 4ko, on a 220 pages ! Autre point : chaque processus a sa propre table des pages. Morale : La table des pages prend beaucoup de place en mémoire, et ne peut être stockée au niveau de la MMU. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Mémoire associative : Translation Lookaside Buffer En pratique, on réutilise souvent les mêmes pages pendant un certain temps ⇒ utilisons un cache !. Le TLB est un petit cache de la table des pages, comportant en gros entre 8 et 64 entrées de la table des pages. A chaque instruction, la MMU parcours tout le TLB pour faire la conversion d’adresse. En cas de défaut de TLB : soit c’est le matériel qui met à jour si il connait l’adresse de la table des pages, soit il alerte le système qui fait ce qu’il faut Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Contenu de la table des pages Un exemple d’entrée dans la table des pages référencé protection numéro du cadre de pag cache inhibé modifié (dirty bit) présent/absent N.B : pas l’adresse de la copie en swap (info réservée au système) Bit de cache : si résultat d’E/S attendu doit y être sauvé, sinon inutile. Application de la pagination : pages partagées, ”copy on write” pour le fork. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Autres cartographies But : réduire la taille de la table des pages table des pages multi-niveaux (une table de tables) table des pages inverses (une entrée par cadre de page) ⇒ recherche + longue, mais on compte sur le TLB. Méthode utilisée pour les adressages 64 bits. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Et si on changeait la taille des pages ? Comment évaluer la bonne taille p à prendre pour une page ? Même si facilités matérielles, le système peut faire son propre choix. Le coût de la fragmentation interne En moyenne, la dernière page d’un segment est remplie à moitié. On perd donc p2 octets par segment. Le coût de la table des pages Si chaque processus utilise en moyenne un espace s, il utilise ps entrées dans la table des pages. Si e est la taille de chaque entrée, on a une perte de ps e Choix de l’optimal On cherche donc à minimiser la perte ≈ L’optimum est √ p = 2se Etienne Lozes Gestion mémoire p 2 + ps e. Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Et les défauts de page ? Comment choisir quelle page sera remplacée par celle demandée ? Le remplacement de page optimal : c’est celui qui ralentit le moins le système. Il y a plusieurs causes de ralentissement et donc plusieurs critères qui guident le choix. La page remplacée sera-t-elle utilisée à nouveau ? Si oui, on aimerait que ce soit le plus tard possible. Mais comment savoir quelle page sera consultée le plus tard ? La page remplacée doit-elle être recopiée sur disque ? Si elle n’a pas été modifiée, ce n’est pas la peine. Problèmatique plus générale que la pagination : c’est la même chose quand on gère n’importe quel cache (cache disque, cache mémoire, cache web,etc). Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Importance de la page remplacée Une intuition trompeuse : ”Avec davantage de mémoire vive, j’aurais moins de défauts de page”. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Importance de la page remplacée Une intuition trompeuse : ”Avec davantage de mémoire vive, j’aurais moins de défauts de page”. L’anomalie de Belady pour le FIFO. Un processus utilise 5 pages virtuelles dans l’ordre suivant : 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4 Exercice Comparer le nombre de défauts de pages avec 3 cadres de pages, puis avec 4, pour une politique de remplacement FIFO (c’est la page la plus anciennement chargée qui est sélectionnée). Où est l’erreur ? Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Importance de la page remplacée Une intuition trompeuse : ”Avec davantage de mémoire vive, j’aurais moins de défauts de page”. L’anomalie de Belady pour le FIFO. Un processus utilise 5 pages virtuelles dans l’ordre suivant : 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4 Exercice Comparer le nombre de défauts de pages avec 3 cadres de pages, puis avec 4, pour une politique de remplacement FIFO (c’est la page la plus anciennement chargée qui est sélectionnée). Où est l’erreur ? Solution : 9 défauts de pages avec 3 cadres, 10 avec 4. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Importance de la page remplacée Une intuition trompeuse : ”Avec davantage de mémoire vive, j’aurais moins de défauts de page”. L’anomalie de Belady pour le FIFO. Un processus utilise 5 pages virtuelles dans l’ordre suivant : 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4 Exercice Comparer le nombre de défauts de pages avec 3 cadres de pages, puis avec 4, pour une politique de remplacement FIFO (c’est la page la plus anciennement chargée qui est sélectionnée). Où est l’erreur ? Solution : 9 défauts de pages avec 3 cadres, 10 avec 4. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algos Not Recently Used (NRU) et seconde chance Un heuristique très sensée : Ce qui a été utilisé récemment sera utilisé prochainement. Bits R et M d’une page : R=1 si la page a été consultée depuis la dernière remise à 0. M=1 si la page a été modifiée depuis le chargement. Algo NRU : remise à 0 des R périodique, (R = 1, M = 1) sera choisi, sinon (R = 0, M = 1), sinon (R = 1, M = 0), et sinon (R = 0, M = 0). Algo de la seconde chance : Algo FIFO (cf Belady), mais avant de sortir une page, on teste R. Si c’est 1, on remet à 0 et on remet en fond de file. Si aucune page avec R = 0, on applique FIFO. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algorithme Least Recently Used (LRU) Un heuristique très sensée : Ce qui a été utilisé récemment sera utilisé prochainement. Algo LRU : On sort la page utilisée le moins récemment. Différentes implémentations : on maintient la date de dernière utilisation de chaque page, et on liste toutes les pages chargées quand il y a un défaut de page pour sélectionner la moins récente. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algorithme Least Recently Used (LRU) Un heuristique très sensée : Ce qui a été utilisé récemment sera utilisé prochainement. Algo LRU : On sort la page utilisée le moins récemment. Différentes implémentations : on maintient la date de dernière utilisation de chaque page, et on liste toutes les pages chargées quand il y a un défaut de page pour sélectionner la moins récente. Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algorithme Least Recently Used (LRU) Un heuristique très sensée : Ce qui a été utilisé récemment sera utilisé prochainement. Algo LRU : On sort la page utilisée le moins récemment. Différentes implémentations : on maintient la date de dernière utilisation de chaque page, et on liste toutes les pages chargées quand il y a un défaut de page pour sélectionner la moins récente. ⇒ LENT ! on maintient le classement. Une astuce au niveau matériel. ancienneté = nbre noirs sur colonne page référencée 1 2 3 Etienne Lozes 4 3 Gestion mémoire 1 Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algorithme Least Recently Used (LRU) Un heuristique très sensée : Ce qui a été utilisé récemment sera utilisé prochainement. Algo LRU : On sort la page utilisée le moins récemment. Différentes implémentations : on maintient la date de dernière utilisation de chaque page, et on liste toutes les pages chargées quand il y a un défaut de page pour sélectionner la moins récente. ⇒ LENT ! on maintient le classement. Une astuce au niveau matériel. ⇒ COUTEUX ! ancienneté = nbre noirs sur colonne page référencée 1 2 3 4 3 1 Approximation en adaptant NRU : les bits de vieillissement R contient n bits, Rt+1 = 12 Rt + 2n δused . Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Algorithme Least Recently Used (LRU) Remarque : LRU ne souffre pas de l’anomalie de Belady (algo dit ”de pile”). Algo LRU : On sort la page utilisée le moins récemment. Différentes implémentations : on maintient la date de dernière utilisation de chaque page, et on liste toutes les pages chargées quand il y a un défaut de page pour sélectionner la moins récente. ⇒ LENT ! on maintient le classement. Une astuce au niveau matériel. ⇒ COUTEUX ! ancienneté = nbre noirs sur colonne page référencée 1 2 3 4 3 1 Approximation en adaptant NRU : les bits de vieillissement R contient n bits, Rt+1 = 12 Rt + 2n δused . Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Le remplacement de pages en pratique LRU idéal mais lourd à implémenter. une notion commode : l’espace de travail (WS), ie les k dernières pages référencées. On maintient cette information, quand on commute un processus, on peut rétablir tout son espace de travail. Une bonne approximation de WS : les pages référencées dans les τ dernières (nano)secondes. Implémentation : WSClock L’algo de la seconde chance avec prise en compte du temps de dernière utilisation Etienne Lozes bit de saleté temps de dernière utilisation M 6265 1 5968 0 Gestion mémoire M 5873 0 bit R 7368 1 M 6743 1 Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique L’implémentation d’encore plus près Le démon de pagination Copier des pages sales en tâche de fond. Pour le WSClock, on a deux aiguilles, une en tête pour le démon, une qui suit pour sélectionner la page à remplacer. Savoir quelle page fait défaut au début d’un défaut de page Au mieux, le matériel stocke l’adresse non traitée par la MMU dans un registre. Au pire, le système doit relire l’instruction fautive et trouver tout seul... Reprendre l’instruction après remplacement de page. Plus ou moins facile suivant le cpu. Problème avec certains cpus : le pc peut être incrémenté entre le début de lecture de l’instruction et le défaut de page, les instructions peuvent être de longueurs variables, etc. move 1000 6 1002 2 pc au moment du défaut de page 1004 comment savoir que 6 n’est pas le code d’une instruction ? Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Problématique Remplacement de page Dans la pratique Les choix du concepteur Quel algorithme de remplacement ? Echelle du remplacement de page Local au processus ou global ? si un processus fait un défaut de page, je remplace sa plus vieille page ou la plus vieille page de tous les processus ? Demand paging ou préchargement ? Le tout noyau ou l’intelligence en espace utilisateur ? un gestionnaire de défauts de page, calcule la page, dialogue avec la MMU, reprend l’instruction un pager implémente l’algo de remplacement de page. Pager en mode utilisateur ? Efficacité vs clarté et sûreté du code... Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation L’idée de segmentation Les limites du segment unique par processus pile thr1 pile thr2 tas code un programme multithread en vrai ... tas pile thr 2 pile thr 1 code segment 1 segment 2 segment 3 segment 4 ... et comment on voudrait l'avoir! plus généralement, intéresse tout programme qui a plusieurs zones dynamiques à gérer. La mémoire segmentée : adresse = numéro de segment + décalage Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation La mémoire segmentée La mémoire segmentée : adresse = numéro de segment + décalage code Proc 1 libre systeme librairie partagée Les gains Facilité de compilation (édition de liens). Facilité de partage mémoire. Facilité de protection. tas proc 2 pile proc 1 libre code proc 3 Les défauts La fragmentation externe. Ralentissement ? Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Segmentation avec pagination : le Pentium 12k 0 28k P1 8 k 0 12k 0 12k 28k 0 P2 8 k 0 20k 0 LDT ou GDT 0 12k table des pages 20k 0 0 P3 segments globaux (GDT) 20k 0 0 8k 0 12k segments locaux (LDT) Mémoire virtuelle paginée 0 Mémoire virtuelle linéaire de P2 16K segments / proc, chaque segment contenant jusqu’à 1Go de mots de 32 bits. Etienne Lozes Mémoire physique segments typés (code ou données) mécanismes de protectiont Gestion mémoire Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code Exemple : P2 fait un ”call 172.” 1 . on consulte le registre CS (code segment, DS pour les données) : contient le sélecteur de segment courant pour les données Sélecteur de segment Etienne Lozes 13 bits Index Gestion mémoire 1 G / L 2 DPL Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code . Exemple : P2 fait un ”call 172.” 1 2 on consulte le registre CS (code segment, DS pour les données) : contient le sélecteur de segment courant pour les données Sélecteur de segment 13 bits 1 G / L Index 2 DPL Descripteur de segment si bit G/L à 1, le segment est global, on consulte la table des segments globaux, sinon la table propre à P2. ⇒ descripteur de segment (64 bits) : Etienne Lozes base 24-31 G limite 16-19 P DPL S base 0-15 limite 0-15 32 bits Gestion mémoire type base 16-23 Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code Exemple : P2 fait un ”call 172.” 3 . on interprète limite (20 bits) en fonction de la granularité (G=0,octets,G=1, pages), Sélecteur de segment 13 bits 1 G / L Index 2 DPL Descripteur de segment base 24-31 G limite 16-19 P DPL S base 0-15 limite 0-15 32 bits Etienne Lozes Gestion mémoire type base 16-23 Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code Exemple : P2 fait un ”call 172.” 3 4 . on interprète limite (20 bits) en fonction de la granularité (G=0,octets,G=1, pages), Sélecteur de segment on vérifie 172<base-limite, le niveau de privilège (DPL), le type, la présence (P) Descripteur de segment 13 bits Index base 24-31 G limite 16-19 P DPL S base 0-15 Gestion mémoire type limite 0-15 32 bits Etienne Lozes 1 G / L 2 DPL base 16-23 Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code Exemple : P2 fait un ”call 172.” Niveaux de privilèges 3 on interprète limite (20 bits) en fonction de la granularité (G=0,octets,G=1, pages), 4 on vérifie 172<base-limite, le niveau de privilège (DPL), le type, la présence (P) ou anneaux de protection. 0 = noyau 1= appels systèmes 2=bibliothèques partagées 3=programmes utilisateurs Porte d’appel si on appelle du code un niveau inférieur, déplacement doit être 0 ; pour les données, on doit rester à son niveau (ou au-dessus). Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Exemple : conversion d’adresse pour du code Exemple : P2 fait un ”call 172.” 6 Niveaux de privilèges si la pagination n’est pas activée (bit de contrôle global), on a une adresse physique 32 bits, si elle est activée, on passe aux tables des pages (vu l’espace virtuel, 2 niveaux de page) ou anneaux de protection. 0 = noyau 1= appels systèmes 2=bibliothèques partagées 3=programmes utilisateurs Porte d’appel si on appelle du code un niveau inférieur, déplacement doit être 0 ; pour les données, on doit rester à son niveau (ou au-dessus). Etienne Lozes Gestion mémoire Problématique La Pagination La segmentation Pentium : sur le papier et en pratique Pourquoi on est content exploit d’être compatible 80/86 plein de possibilités : segmentation pure, pagination pure, segmentation avec pagination mécanisme de portes d’appel ”sensé” La mauvaise nouvelle Aucun système n’utilise la segmentation ! Il n’y a pas de vérification de non recouvrement des segments Chutes de performances si segmentation activée autres raisons ?.... Etienne Lozes Gestion mémoire