Mémoire virtuelle
Transcription
Mémoire virtuelle
Mémoire Mise en œuvre d’un maillon de la chaîne d’implantation • substitution/inclusion : remplacer chaque occurence de l’objet abstrait (symbole/adresse logique) par sa correspondance concrète (adresse logique/adresse physique) ! simple, statique, efficace ! une table de traduction, indiquant la position des occurrences de chacun des objets substitués dans le code d’origine doit être conservée, si l’on veut pouvoir refaire l’étape • chaînage/indirection : conserver la liste des objets concrets, et remplacer chaque occurence de l’objet abstrait par une référence vers l’objet concret. ! plus souple, mais moins efficace Introduction : espaces d’adressages logique et physique Allocation contiguë Allocation fragmentée • Pagination • Segmentation) Mémoire virtuelle • Introduction • Pagination à la demande • Algorithmes de remplacement • Stratégies d’allocation de pages • Partage de pages • Couplage de fichiers dans un espace virtuel Exemples • BSD • Solaris (Linux-> TD) • Windows NT Annexe : gestion d'une mémoire hiérarchisée Mémoire -1- DIMA, Systèmes Centralisés (Ph. Mauran) 1) Introduction : espaces d’adressages logique et physique Etapes (possibles) de l'implantation d'un programme en mémoire Compilation Edition de liens Chargement module objet (relogeable) programme source Mémoire compilateur Exécution Liaison des « objets » du programme vers des adresses mémoire physiques • à la compilation : le compilateur fournit un code absolu, devant être installé à une adresse fixe • au chargement : le compilateur fournit un code relogeable, relatif à une adresse de base, pouvant être fixée au chargement • à l’exécution : le code produit peut utiliser des zones mémoire variant au cours de l’exécution binaire objet (relogeable) chargeur éditeur de liens autres modules bibliothèques système (statiques) Principe : (ré)interprétation des adresses à l’exécution. ! le processus travaille sur des adresses logiques/virtuelles, relatives à une adresse de base ! les adresses virtuelles émises par le processeur sont interprétées par une unité de gestion mémoire (MMU) et transformées en adresses physiques/réelles (par exemple en ajoutant le contenu d’un registre de relocalisation), avant d’être émises sur le bus d’adresses image mémoire binaire (chargée) [ + talons ] 0 bibliothèques dynamiques (dll/so/dylib) • Le chargement peut être dynamique ➝ gain de place mémoire : les procédures sont stockées sur disque au format binaire relogeable, et chargées en mémoire à leur premier appel ! partage et mise à jour automatique du code (" identifier les versions) + (452) Processeur adresse physique (A10B452) A10B000 A10B452 A10B000 registre de relocalisation MMU (Memory Management Unit) Mémoire physique (RAM) ➝ si le programme est déplacé lors de l’exécution, il suffit d’actualiser le registre de relocalisation ➝ l’interprétation des adresses virtuelles facilite aussi la protection de la mémoire ! les procédures à lier dynamiquement sont représentées par un talon qui gère la liaison et se remplace par la procédure effective au premier appel. Mémoire adresse virtuelle 452 Mémoire virtuelle (espace d’adressage abstrait) • L'édition de liens peut être dynamique (bibliothèques) DIMA, Systèmes Centralisés (Ph. Mauran) -3- DIMA, Systèmes Centralisés (Ph. Mauran) -2- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -4- nb magique a.out en-tête a.out Exemple : espace d’adressage virtuel d’un processus UNIX Interface du service de gestion mémoire : (niveau haut) ➝ malloc/free (stdlib.h) fichier binaire exécutable (niveau bas) ➝ manipulation de brk : (format a.out) Données statiques initialisées Partitions variables #include <unistd.h> int brk (const void *ptr) fixe la valeur de brk void * sbrk (int increment) - ajoute increment - renvoie la valeur précédente de brk segment de texte (code) • Une partition, de la taille exactement nécessaire au processus est allouée au chargement ➝ pas de fragmentation interne • En fin d'exécution, l'espace occupé est libéré ❶ 0K Entrée/table processus zone rouge Privé utilisateur Pile appels système 500K 100K 500K P2 640 K Privé système Mémoire 500K P2 P3 940 K 940 K 940 K 1024 K 1024 K 1024 K Limites de l’allocation contiguë Solution simple : allouer à chaque processus un bloc (distinct) de mémoire, pouvant contenir son image mémoire Partitions fixes (OS 360 MFT) -7- • zones de taille fixe : manque de souplesse (peu de partitions, prédéfinies) • zones de taille variable : fragmentation externe ! recompactage : simple, mais coûteux en temps ! traitement algorithmique: gérer les zones libres (recherche; fusion de zones libres voisines) • La mémoire est divisée en zones de taille fixe (partitions). • Une file d'attente est associée à chaque partition - lourd/complexe en général • Quand une tâche est lancée, le SX lui alloue la plus petite partition pouvant la contenir (best fit) * table d’occupation de la mémoire (fusion rapide, recherche lente, empreinte mémoire) Avantage Permet un va et vient efficace (coexistence de processus prêts) Système pg 1 pg 2 pg 3 pg 4 Partition C * listes de zones libres, classées par tailles (recherche acceptable, fusion lente) Problème : fragmentation interne En général un processus utilisera seulement une partie de la mémoire allouée - possible lorsque l’ensemble des tailles demandées est régulier (puissances de 2) ou fixe (l’émiettement peut alors être évité) Exemples : VM 370 (IBM) ; gestion des structures de données noyau BSD, Linux (cf infra) Intérêt • de disposer d’un mécanisme efficace d'allocation non contiguë… ce type de mécanisme est généralement associé à une évaluation des adresses à l’exécution Variante File d'entrée unique (➝ réimplantation (allocation dynamique)) Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) • Première zone possible (First-fit) ➝ implanter P5 à l’adresse 100K Mémoire But : partage physique de la mémoire entre processus 1024 K • Plus petite zone possible («meilleur ajustement» ou Best-fit) ➝ implanter P5 à l’adresse 940K DIMA, Systèmes Centralisés (Ph. Mauran) Conclusion (provisoire) 640 K P2 P3 2)Allocation de mémoire contiguë Partition B • Plus grande zone disponible (Worst-fit) ➝ implanter P5 à l’adresse 100K 640 K -5- DIMA, Systèmes Centralisés (Ph. Mauran) Partition A Exemple : en ❷, P5 arrive, de taille 60K P4 Problème : fragmentation externe (émiettement) L’espace libre est important, mais divisé en nombreux fragments de petite taille inutilisables Exemple : en ❸, que faire si P5 arrive, de taille 150K ? ➝ (Re)compactage : regrouper les zones libres en un seul bloc (" réimplantation, ralentissement) (peut faire l'objet de va-et-vient) 528 K Politiques d’allocation de l'espace libre 100K 640 K P3 Image mémoire du processus 0K 128 K ❸ SX 400K SDD Processus Données statiques Partagé Pile 0K P1 0 Tas ❷ SX 100K point de rupture (brk) segment de texte (code) 0K SX • d’éviter la fragmentation externe (zones fixes) -6- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -8- 3) Allocation fragmentée Réalisation de la table des pages En général, une table des pages par processus. a) Pagination (Allocation dynamique et fragmentée de zones fixes) Idée : fractionner l’image mémoire d’un processus (et gérer la correspondance entre ces fragments et leur implantation en mémoire physique) ➝ mécanisme accélérateur : registre associatif p c c Table des pages mémoire physique Mémoire pi cj c • contiennent les dernières références à la mémoire (LRU) : principe de localité • recherche en parallèle • en cas d'échec dans la recherche associative ! On consulte la table complète (en mémoire) ! On met le registre associatif à jour, avec la nouvelle référence • mécanisme coûteux ➝ peu d’entrées (12-4096) Pertinence de l’heuristique LRU (mesures sur des applications typiques) : 80% de succès avec 16 entrées, 98% avec 32 (80486), 99% avec 512, 99,99% avec 4096 p mémoire virtuelle Difficulté • La taille de la table des pages est importante (espace de 4Go, pages de 4K ➝ 106 pages) • ➝ coût prohibitif d’une réalisation par des registres • réalisation en RAM : temps d'accès doublé Pages et cases • La mémoire virtuelle est découpée en pages • La mémoire physique est découpée en cases • Cases et pages ont une taille P fixée et identique Evaluation de l'adresse virtuelle (Av ) Av = (n° de page,déplacement dans la page) = (p,d), avec p = Av div P et d = Av mod P (efficace avec P= 2k) adresse adresse p paginée physique p d c d Le contexte du processus contient alors une référence vers celle-ci. -9- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -11- DIMA, Systèmes Centralisés (Ph. Mauran) Exemple b) Segmentation (Allocation dynamique et fragmentée de zones variables) mémoire virtuelle page 1 Table des pages page 2 page 3 page 4 page 5 2 6 3 1 5 mémoire physique Mémoire vue comme un ensemble de zones (segments) • de longueurs variables • sans ordre relatif case 1 case 2 case 3 case 4 case 5 case 6 case 7 Principe Un segment regroupe des éléments homogènes (du point de vue de leur utilisation) ➝ contrôles et protection fins : Pour chaque segment - contrôle des accès (opérations spécifiques aux objets du segment) Avantages - contrôle de l'adressage Exemple : si le segment est un tableau d'objets, on conserve sa dimension • pas de fragmentation externe • fragmentation interne : 1/2 page par processus, en moyenne ➝ ne pas choisir des pages trop volumineuses (généralement 2K-8K) • adressage indirect ➝ (voir section suivante) possibilité de - partager une page - contrôler l’accès à une page Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -10- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -12- 4) Mémoire virtuelle Mise en œuvre adresse segmentée : (id. de segment, déplacement dans le segment) Problème : implanter un espace logique plus grand que l’espace physique Mécanisme : table des segments Solution directe : recouvrements (« overlays ») seg limite UC < (seg,depl) Principe : distinguer les parties d’un programme qui n'ont jamais à être simultanément en mémoire base oui Exemple : initialisation et reste du programme ➝ de telles parties peuvent se recouvrir, c.-à-d. être implantées à la même adresse ➝ l’espace mémoire nécessaire au programme est réduit d'autant Représentation du découpage : arbre de recouvrement A B C E D Mémoire centrale + déroutement : erreur d'adressage non Mise en œuvre de la table des segments A Mêmes mécanismes que table des pages : table en mémoire, registres associatifs C D Remarques Fragmentation externe • A un instant donné, un seul chemin de l'arbre est présent en mémoire • Segmentation implicite • Inconvénients ! Gestion explicite ! Ad hoc ➝ limité Le mécanisme de réimplantation dynamique facilite le recompactage, qui reste coûteux. Partage de segments Référence en mémoire physique commune à deux tables de segments ➝ mise en commun de données, utilitaires, programmes Mémoire B E -13- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -15- DIMA, Systèmes Centralisés (Ph. Mauran) Va-et-vient (multiplexage temporel de la mémoire) c) Segmentation paginée But : conserver l'abstraction donnée par la segmentation, et éviter la fragmentation externe Système Idée : paginer les segments Principe • une table des segments pour chaque processus • une table des pages pour chaque segment Exemples : Multics, 680x0 Tables des segments longueur processus 0 (64 entrées) image pg 2 modes d'accès ❷ référence table des pages Table des pages pour un segment (16 entrées maximum) Pour changer l'occupant de la mémoire centrale : ❶ Sauvegarde, en mémoire secondaire, de l'image mémoire de l'occupant actuel ❷ Restauration, à partir de la mémoire secondaire, de l'image mémoire du programme élu Avantage simple • 16 tables, pour 16 processsus (maximum) • Chaque table de segments contient 64 entrées • Chaque table de pages contient 16 entrées Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) Programme 1 Une copie de l’image mémoire de chaque processus est conservée en mémoire secondaire … processus 15 (64 entrées) ❶ image pg 1 Inconvénient l'UC est inactive durant le va-et-vient ➝ anticipation ➝ partitions -14- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -16- Mécanisme de remplacement a) Intégration du va-et-vient et de la pagination Va-et-vient « page à page » si la liste des cases libres est vide Idée : appliquer aux pages le principe du va-et-vient ➝ il suffit d'ajouter à chaque entrée de la table des pages un indicateur de présence en mémoire Motivation : principe de localité (le passé récent est une bonne image du futur proche) bloc b2 bloc b1 ➝ l'ensemble des pages utilisées par un processsus est petit et plutôt stable ➝ va-et-vient limité Sauver la ❷ page victime Principe de fonctionnement mémoire virtuelle page 1 page 2 … page i … page n c fonction topographique page chargée case 1 … case j ❹ mémoire physique bloc case invalide … page non chargée ❶ case c défaut de page (va-et-vient) Référence victime Remarques 10 b1 ? c 01 b2 c ? Mémoire physique ❺ mettre à jour l'entrée correspondant à la page élue correspondant ❸ invaliderà lal'entrée page victime Table des pages • L'emploi de zones fixes simplifie le placement : toutes les cases se valent • La fonction topographique est généralement implantée sous la forme d’une table des pages Mémoire Remarque : le nombre d'E/S causées par un défaut de page est doublé -17- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -19- DIMA, Systèmes Centralisés (Ph. Mauran) b) Mise en œuvre de la pagination avec défaut de page Mécanisme de défaut de page • repérer les cases libres ou libérables ➝ liste des cases libres • ajout d’une colonne (invalide) à la table des pages, indiquant pour chaque page si elle est chargée en mémoire • connaître l'adresse de chaque page en mémoire secondaire Cas usuel : les blocs (disque) sont de la même taille que les pages ➝ ajout d’une colonne (“bloc”) à la table des pages [# table de couplage (n° page, n° bloc)] Mécanisme de chargement Traitant de défaut de page bloc b Déroutement ❸ ❷ invalide 1 b ? ª Restaurer le contexte; Réexécuter l'instruction Mémoire mémoire associative p d Table des pages pi p succès c cj échec invalide modifié mode d'accès ❹ • invalide : bit de présence (faux si page en mémoire) bloc case p 0 ❺ Référence adresse virtuelle bloc case p d ❶ Organisation classique : table de pages en mémoire + mémoire associative Lire la page sur disque Charger la page adresse virtuelle DIMA, Systèmes Centralisés (Ph. Mauran) Charger la page élue c défaut de page si 1 Mettre la table à jour adresse physique c d Table des pages virtuelles • modifié (“dirty bit”) : indique si une écriture a été effectuée sur la page (utilisé pour le remplacement) • mode d'accès : opérations autorisées / la page (utilisé pour la protection) Liste des cases libres -18- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -20- c) Gestion de la mémoire virtuelle Gestion d'un vaste espace virtuel Problème : taille potentielle de la table des pages Motivation Solution1 : liste inverse de pages (liste de cases) Liste par case : < id de processus, n° de page > • liste des cases réduite ➝ accès séquentiel • sinon, accès calculé (fonction de dispersion) • usage courant d'une mémoire associative Temps d'accès effectif à la mémoire : TAE = (1-p) x TAM + p x TDP avec : p : probabilité d'un défaut de page; Solution 2 : pagination hiérarchique (hyperpages) Idée : paginer la table des pages • la table des pages est découpée en hyperpages • la table des hyperpages (THP) permet de ne désigner que les parties de la table des pages effectivement utilisées ➝ un compteur “nombre de pages désignées” est associé à chaque entrée de la THP • une adresse virtuelle devient : (n°hyperpage, n°page, déplacement) Remarques • Mémoire associative nécessaire • Pas de défaut de page pour la table des hyperpages ! Exemple : VM 370 ➝ pages : 2 ou 4K ; hyperpages 64 octets ou 1K • Ce principe peut être réitéré ➝ hiérarchie d’hyperpages (Linux : 3 niveaux prévus) Mémoire TAM : temps d'accès mémoire TDP : temps d'accès, en cas de défaut de page (gestion de l'IT + va et vient) Ordres de grandeur : TAM # 100 ns TDP # 1 ms + 2*8ms # 17 ms D'où : TAE # 100 + 16 900 p Pour obtenir une dégradation des performances $ 10% de TAM, on doit avoir : 100 + 16 900 p $ 110 Soit : p $ 1 / 1690 -21- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -23- DIMA, Systèmes Centralisés (Ph. Mauran) Pagination à 2 niveaux (S. Krakowiak, principes des systèmes d’exploitation (Dunod), p362) Comment améliorer les performances de la mémoire virtuelle ? Peaufiner le mécanisme • éviter les lectures/écritures disque superflues ! bit d'utilisation (dirty bit) : indique si la page victime a été modifiée (auquel cas elle doit effectivement être recopiée) ! pool de pages libres et sales (utiliséees auparavant) ncase ➝ on mémorise le numéro des pages qui sont libérées ➝ (localité) une chance de plus d'éviter le va-et-vient lors d'un défaut de page • anticiper ! pool de pages libres : évite d'attendre que la victime ait été sauvegardée Fraction de la table des pages référencée par nhyp ! préchargement de pages : souvent possible et efficace (localité/ensemble de travail) ! restitution volontaire de page : intéressant, si automatique (compilateur) Choisir la bonne victime ➝ algorithmes de remplacement (§ d) Ecarter les processus causant trop de défauts de pages ➝ Stratégies d’allocation basées sur un modèle de comportement des processus (§ e) Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -22- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -24- d) Choix des pages victimes : algorithmes de remplacement Mise en œuvre approchée de LRU utilisent un bit de référence (0 initialement, mis à 1 lors de l'accès) associé à chaque page Critères d’évaluation du comportement d’un processus/algorithme Représentation « économique » du compteur de date logique • c(m,%) : nombre de chargements de pages causés par % ! % : suite de références (numéros de pages virtuelles demandées par le processus), Mot contenant l'historique des valeurs des bits de référence sur une période de temps : ! m : taille de la mémoire allouée au processus, en pages • le bit de gauche est le bit de référence courant • le mot est décalé vers la droite, à intervalles réguliers c(m,%) • la plus petite valeur correspond à l’accès le moins récent Allure prévisible de c(m,%) m Remarque : certaines stratégies de remplacement présentent des « anomalies » Exemple (Belady) : - Pour % = 1,2,3,4,1,2,5,1,2,3,4,5 on a : c(3,%) < c(4,%) (|%| : longueur de la suite de références) Mémoire 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 Algorithme de la deuxième chance • La victime est recherchée en parcourant la table des pages de manière circulaire • L’entrée courante de la table des page a un bit de référence valant ! 1 ➝ bit remis à 0 ; la page est placée en queue de file ! 0 ➝ c'est la victime - gestion FIFO des requêtes de remplacement c (m,%) • taux de défaut de pages F = -----------------% 0 -25- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire Approximation de la solution optimale : LRU Conclusion Algorithme optimal Comparaison des différents algorithmes F Remplacer la page dont la prochaine référence est la plus éloignée dans le temps ➝ évaluer a priori la chaîne de référence alé ➝ irréalisable en général ato Ordre chronologique de chargement (LRU , Least Recently Used) LRU op ire FIFO al tim Idée : le principe de localité est une approximation de la stratégie “optimale” (le passé récent est une bonne image du futur proche) 0 ➝ la victime sera la page qui n'a pas été utilisée depuis le plus longtemps m M0 Point marquant Remarques Présence d'un point M0 à partir duquel F croît très vite : • LRU ne présente pas l'anomalie de Belady • avant ce seuil, les performances s'améliorent nettement avec m • La mise en œuvre directe de LRU est coûteuse (activée à chaque référence) ! gérer une « pile » : liste doublement chaînée, avec pointeurs de tête et de queue. Fonctionnement : à chaque nouvelle référence, on place la page référencée en tête de pile. ! numéroter les références successives ➝ associer un compteur (date logique) à chaque page Difficultés : débordement du compteur, arithmétique Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -27- DIMA, Systèmes Centralisés (Ph. Mauran) • après ce seuil, augmenter m est peu rentable Moralité La nature de l’algorithme compte moins que la taille de la mémoire allouée aux processus -26- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -28- Illustration empirique : écroulement du système (“trashing”) e) Stratégies d'allocation Il est essentiel d’accorder à chaque processus un espace suffisant à ses besoins. Modèle de comportement d'un programme : ensemble de travail [Denning] Deux propriétés de localité : • spaciale : les références se concentrent sur un nombre réduit de pages • temporelle : sur une (courte) période d'observation, l'ensemble des pages utilisées est stable Phénomène observé ➝ notion d'ensemble de travail (“working set”) : UC ensemble des pages référencées par un processus, sur une période de temps nombre de pages accédées T1 T3 T2 WS 1 WS2 T4 WS3 écroulement taux d' utilisation disque WS4 n 0 n+1 nombre de processus Explication Dès qu'un processus dispose de moins de mémoire que son ensemble de travail ➝ il engendre des défauts de pages nombreux et fréquents 0 Ti : transition entre deux ensembles de travail WSj : ensemble de travail temps ➝ s’il n’existe plus de cases libres, retrait de pages aux autres processus qui, à leur tour, ne disposent plus de leur ensemble de travail… Les ensembles de travail ont une certaine stabilité, se succèdent, et diffèrent les uns des autres Mémoire ➝ boule de neige -29- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -31- DIMA, Systèmes Centralisés (Ph. Mauran) Illustration expérimentale [Hatfield 1972 — IBM Syst. Journal] Algorithmes basés sur le modèle de comportement Idée : prévenir l'écroulement en contrôlant le degré de multiprogrammation (maintenu en dessous de la valeur critique) Algorithme de l'ensemble de travail (WS) • l'ensemble de travail de chaque processus est mémorisé/évalué à tout instant • en cas de défaut de page ! on remplace une page qui n'est dans aucun ensemble de travail ! s'il n'y en a pas, on réquisitionne les pages détenues par le processus le moins prioritaire (qui est suspendu) ➝ à tout instant, tout processus actif dispose des pages de son ensemble de travail Exemple VMS (VAX) : estimation de l'ensemble de travail par relevé périodique des bits de référence Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -30- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -32- « Optimisation » du « partage » en écriture : copie sur écriture Algorithme du taux de défaut de page par processus (PFF, page fault frequency) Idée : le taux de défauts de page est un indicateur de la disponiblité de l’espace de travailt F il faut • allouer plus de cases à P • ou suspendre P max(P) • 2 processus travaillent à partir d’une même page • les accès à la page sont : ! lire ! écrire • on souhaite éviter la duplication de la copie d’origine, tant qu’aucune écriture n’est effectuée ➝ partager la page d’origine en lecture, et ne réaliser la duplication qu’à la première écriture (les pages différentes deviennent alors privées) mémoire virtuelle mémoire mémoire virtuelle physique processus A processus B min(P) on peut retirer des cases àP page modifiée page originale m Exemple : VM 370 Remarques • PFF est plus aisé à réaliser que WS Exemple : mécanisme UNIX de création de processus • duplication de l’image du processus père (créateur) • en général le processus fils (créé) commence par charger une nouvelle image mémoire ➝ la duplication effective de l’image mémoire du processus père est superflue • PFF peut se superposer à une stratégie de remplacement globale Conclusion Paramètre essentiel : degré de multiprogrammation Mémoire -33- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -35- DIMA, Systèmes Centralisés (Ph. Mauran) f) Partage de pages entre applications g) Intégration des fichiers dans l’espace virtuel Principe Référencer une même case mémoire à partir de pages distinctes de processus distincts mémoire virtuelle mémoire mémoire virtuelle physique processus A processus B Idée • Les images binaires de code exécutables sont couplées en mémoire virtuelle. • Le même mécanisme peut servir à coupler les fichiers de données dans l’espace virtuel Réalisation • fixer 1 adresse d’implantation en mémoire virtuelle pour l’image mémoire associée au fichier ➝ couplage (mapping) du fichier en mémoire virtuelle • accès au fichier & accès à l’image mémoire • transferts réalisés via le mécanisme de défaut de page Protection • Contrôle du mode d'accès Pour chaque entrée de la table des pages, ajouter des indicateurs précisant le mode d'accès (lecture, écriture, ajout, exécution…) • Contrôle de l'accès (la page est elle adressable ?) ! indicateur spécifique (bit d'« invalidité ») Mémoire Remarques • le couplage remplace l’ouverture • possibilité de partager un fichier (partage géré par le service de mémoire virtuelle, cf TD) Systèmes proposant ce mécanisme Multics (1965 !) (réalisation systématique des E/S par couplage des fichiers), Appolo Domain, OS/2, Windows NT, Mach, Linux. ! valeur limite associée à la table des pages DIMA, Systèmes Centralisés (Ph. Mauran) Intérêt • permet d’accéder au fichier par de simples lectures/écritures en mémoire centrale. • la mémoire virtuelle gère les transferts plus efficacement (pas de passage par les tampons) -34- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -36- 5) Exemples b) Solaris Gestion de la mémoire virtuelle : segmentation paginée Desc. de processus Descripteur de l’espace virtuel a) Gestion mémoire sous UNIX 4.x BSD Va et vient • le va et vient est appliqué, mais dans des cas peu fréquents (prévention de l'écroulement, processus inactifs) : les processus sont suspendus par le processus scheduler Liste de segments ordonnée par adresse virtuelle croissante code donnée base base pile lg lg base lg ! lorsque la charge est élevée Descripteurs segvn_data ! et que la mémoire libre est en dessous d'un seuil minimum (lotsfree # 1/64mémoire totale), durant trop longtemps vnode *vp anon_map *amp vp amp vnode (*) anon_map • le scheduler suspend alors (et répète jusqu’à avoir plus de lotsfree mémoire libre) (*) certaines pages du segment sont devenues anonymes vp amp anon_map Listes de pages réelles allouées (contenu initial) ! le processus inactif depuis le plus longtemps, parmi ceux inactifs depuis plus de 20s ! le plus gros processus inactif depuis le plus longtemps Table des pages anonymes • la gestion « courante » de la mémoire est basée sur la pagination pages présentes .......... Listes de pages réelles allouées (anonymes) pages sauvegrdées ..... Espace de swap disque Mémoire -37- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -39- DIMA, Systèmes Centralisés (Ph. Mauran) Pagination • Pagination à 2 niveaux • La taille des pages est indépendante du matériel (' 512 octets) • Les pages peuvent être verrouillées (non éjectables) (attente d’E/S, va-et-vient) • Les pages d'un processus sont généralement préchargées (et mises dans la liste des pages libres, étant marquées récupérables) • une table des cases est gérée (liste inverse) • cette table est parcourue circulairement, lorsqu'il faut libérer de la place (proc. pagedaemon) ! les cases déjà libres ou verrouillées ne sont pas touchées ! sinon, si le processus auquel la case est allouée a suffisamment d'espace mémoire - la page est éventuellement sauvée sur disque (bit « modifié ») - la case est marquée comme libre mais récupérable (libre et « sale ») ➝ va et vient réduit - la page correspondante est marquée comme invalide • pagedaemon est réveillé ! lorsque le processus scheduler en a besoin ! quand le nombre de cases libres est au dessous d'un seuil (lotsfree) (1/64 mémoire totale) • pagedaemon utilise moins de 10% du temps de l'UC. Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) ..... Mémoire réelle paginée Gestion de la mémoire noyau : allocation de plages (slabs) Principe • une plage (slab) est une suite de cases contiguës • un cache est composé d’une ou plusieurs plages • chaque structure de données (SdD)du noyau (descripteurs de processus, de fichiers…) est associée à un cache, qui contiendra les instances (objets) de cette SdD • lorsqu’un cache est créé, il est peuplé d’un nombre déterminé d’objets marqués comme libres • les objets d’un cache sont alloués et marqués utilisés au fur et à mesure des besoins objets caches plages (RAM) • une demande d’allocation est servie en cherchant d’abord une plage partiellement remplie, puis une plage vide • si toutes les plages sont pleines, une nouvelle plage est créée et associée au cache Avantages • pas de fragmentation : ensemble de tailles prédéterminé (structures du noyau), extension dynamique des plages, allocation aux plages par pages de taille unique • efficacité : de l’allocation (objets libres pré-créés) et de la libération (indicateur libre/utilisé) ➝ adapté au besoins du noyau pour lequel ces opérations sont fréquentes -38- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -40- Réservation/libération d’une région et (dé)couplage de pages c) Windows NT Structure LPVOID VirtualAlloc ( • Mémoire à deux niveaux : segmentation et pagination • Découpage logique : ! Intelx86 : 1024 segments de 1024 pages de 4K ! Digital Alpha : 256 segments de 2048 pages de 8K • Adresses virtuelles sur 32 bits " 4G octets adressables Page Directory Page Table // adresse de base DWORD dwSize, // taille en octets DWORD flAllocationType, // type d’opération DWORD flProtect, // attributs de protection ); Virtual Page Number Page Directory LPVOID lpAddress, Byte Index LPVOID VirtualFree ( Page Tables @ pr LPVOID lpAddress, // adresse de base DWORD dwSize, // taille en octets DWORD dwFreeType, // type d’opération ); Target Page n° pr avec : • flAllocationType = {MEM_RESERVE, MEM_COMMIT, MEM_RESET} Page directory = table des segments, implantée à une adresse fixe Mémoire • dwFreeType= {MEM_RELEASE, MEM_DECOMMIT} -41- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -43- DIMA, Systèmes Centralisés (Ph. Mauran) Règles de couplage Couplage de fichiers • Une zone interdite : 0x0 à 0xFFFF (64Ko de début, référencée par les pointeurs "nuls" ) Etapes • La zone programme applicatif : 0x1000 à 0x7FFEFFFF (2G - 128K) 1 - Créer ou ouvrir le fichier : CreateFile, OpenFile ; • Une zone interdite : 0x7FFF0000 à 0x7FFFFFFF (64Ko) 2 - Définir le couplage du fichier : CreateFileMapping ; 3 - Associer une région au fichier : MapViewOfFile. • La zone noyau : 0x80000000 à 0xFFFFFFFF (2G) Primitives Programmation du couplage HANDLE CreateFileMapping ( Couplage en deux étapes HANDLE hFile, // le fichier • La réservation/libération d’un espace d’adressage (région) ; LPSECURITY ATTRIBUTE lpFileMappingAttributes, • Le couplage/découplage proprement dit d’un contenu. DWORD flProtect, // attributs de protection DWORD dwMaximumSizeHigh, // forts poids DWORD dwMaximumSizeLow, // faibles poids Primitives • VirtualAlloc/VirtualFree : réservation/libération (et (dé)couplage de pages) LPCTSTR lpName ); • VirtualLock/VirtualUnlock : (dé)verrouillage en mémoire centrale ; avec : flProtect = {PAGE_READONLY,PAGE_READWRITE,PAGE_WRITECOPY} • CreateFileMapping/MapViewOfFile/UnmapViewOfFile : définition/couplage/découplage de fichiers Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) (PAGE_WRITECOPY : voir FILE_MAP_COPY) -42- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -44- Gestion d'une antémémoire (cache entre processeur et mémoire centrale) Réserver/Libérer une région en mémoire virtuelle LPVOID MapViewOfFile ( HANDLE hFileMappingObject, // l’objet couplage DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, // forts poids DWORD dwFileOffsetLow, // faibles poids DWORD dwNumberOfBytesToMap ); UC mémoire centrale cache Temps d’accès mémoire : Tm = t0 + m.t1 ( t0 temps d'accès au cache, t1 temps d'accès à la mémoire centrale, m taux de défaut d'information) Deux points de vue, suivant la taille du cache : BOOL UnmapViewOfFile(LPCVOID lpBaseAddress ); avec : dwDesiredAccess = {FILE_MAP_WRITE,FILE_MAP_READ,FILE_MAP_COPY} • accélérateur de mémoire centrale (0,1$m$0,5), avec peu de mémoire cache • mémoire cache «virtuelle» (m # 0.01) avec 1 mémoire cache plus importante (# 16 à 256 Ko) Exemples • t0=100ns, t1=1000ns, m=0.01 alors Tm=110ns • t0= 50ns, t1=200ns, m=0.2 alors Tm=90ns Mémoire -45- DIMA, Systèmes Centralisés (Ph. Mauran) Mémoire -47- DIMA, Systèmes Centralisés (Ph. Mauran) Annexe : gestion d'une mémoire hiérarchisée Fonctionnement (niveau matériel) : • toutes les informations à lire passent d'abord dans le cache Notion de cache - Hiérarchie de mémoires • l'écriture se fait dans le cache avec recopie vers la mémoire centrale Caractéristiques de la pagination avec défaut de page • la mémoire cache est découpée en blocs (p. ex. 64 octets) Deux niveaux de mémoire • le cache garde les N derniers blocs référencés grâce à une pile d'adresses de blocs (LRU) info adMC • un niveau rapide, mais coûteux et restreint (haut) a 010 1 référence au a 010 2 référence au a 010 3 b 479 2 bloc 479 b 479 0 bloc 315 b 479 1 c 900 0 c 900 1 c 900 2 d 052 3 d 052 3 e 315 0 • un niveau lent, mais économique et de grande capacité (bas) Si on réussit à amener dans le niveau haut les informations dont la fréquence / la probabilité d'utilisation sont les plus grandes (localité : ensemble de travail/LRU), on obtient une mémoire • comparable au niveau haut pour les temps d'accès défaut d'information • comparable au niveau bas pour les capacités profondeur dans la pile LRU On dit que le niveau haut (mémoire centrale) joue un rôle de cache pour le niveau bas (mémoire secondaire). Les idées développées dans le cadre de la pagination peuvent être utilisées pour la hiérarchie des différentes mémoires existantes : UC ↔ registres ↔ cache ↔ mémoire centrale ↔ disques Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -46- Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -48- Les colonnes du cache Pour minimiser le nombre de comparateurs nécessaires, • on divise la mémoire centrale en colonnes correspondant à une partition de la mémoire, espérée équiprobable. • Chaque colonne est divisée en rangées. Une rangée d’une colonne a la taille d’un bloc. • De même, le cache est divisé en colonnes, puis en rangées. Chaque colonne du cache joue le rôle de cache pour une colonne de la mémoire. Analyse d’une adresse b k d 9 5 6 b: numéro de rangée dans la colonne k (ici 512 blocs) k : numéro de colonne (32 colonnes) d : déplacement dans le bloc (64 octets) Exemple Avec un cache de 8 Ko, il y aura 8 K / (64*32) = 4 blocs par colonne dans le cache, donc 4 comparateurs (au lieu de 128) (128=8 K/64) Si ce cache correspond à une mémoire de 1 Mo, celle-ci comportera 512 rangées par colonne Mémoire DIMA, Systèmes Centralisés (Ph. Mauran) -49-