Mémoire virtuelle Abdelouahed Gherbi Hiver 2014 1
Plan Introduction Pagination Pagination à la demande Algorithme de remplacement de pages Écroulement 2
Mémoire virtuelle Introduction Technique qui permet l exécution de processus qui ne sont pas complétement chargés en mémoire physique Avantage Les programmes peuvent être bien plus larges que la mémoire physique La mémoire virtuelle crée une abstraction de la mémoire principale qui consiste en un tableau de stockage extrêmement large Libère le programmeur de la limitation de la mémoire La mémoire virtuelle n est pas facile à implémenter et peut causer une dégradation substantielle de la performance si elle est mal utilisée 3
Pagination Pagination : Méthode de gestion de la mémoire Permet que l espace d adresses physiques d un processus d être non contigü (discontinu) La mémoire physique est divisée en blocs de taille fixes appelés cadres de pages La taille est une puissance de 2 entre 512 bytes et 16 MB L image mémoire d un programme (mémoire logique) est divisée en blocs de la même taille appelés pages Pour exécuter un programme de n pages, on a besoin de trouver n cadres libres pour charger les pages du programme Modèle de mémoire paginée [1] Utiliser une table de pages pour translater les adresses logiques en adresses physiques (mapping) La pagination élimine le problème de fragmentation externe mais pas celui de la fragmentation interne 4
Pagination Support matériel nécessaire pour la pagination [1] 5
Pagination Translation d adresse L adresse générée par la CPU (adresse logique) est divisée en : Numéro de page (p) utilisé comme index dans la table de page d un processus. Cette table de page contient l adresse de base de chaque cadre de page (numéro du cadre) contenant la page correspondante en mémoire physique Décalage dans la page (offset) (d) Le déplacement par rapport au début de la page Combinée avec le numéro du cadre (adresse de base du cadre) pour former l adresse physique envoyée à l unité de mémoire Pour un espace d adresses 2 m et une taille de page 2 n 6
Pagination Exemple Soit une machine avec une adresse virtuelle sur 16bits Numéro de page : 4 bits Décalage dans une page : 12 bits Une adresse logique (virtuelle) 8196 0010000000000100 en binaire 2004 en hexa La translation de l adresse virtuelle en adresse logique 7
Pagination Exercices 01 et 02 8
Implémentation de la table des pages Le système d exploitation doit allouer une table de pages pour chaque processus Un pointeur vers la table des pages d un processus est gardé dans le PCB L implémentation matérielle de la table de pages peut se faire de plusieurs façons Dans un ensemble dédié de registres de la CPU Très rapide Espace limite (pas adéquat pour les pages de grandes tailles) En mémoire centrale Plus d espace pour accommoder des grandes tables de pages Quel est le problème d après vous avec cette approche? 9
Implémentation de la table des pages Le système d exploitation doit allouer une table de pages pour chaque processus Un pointeur vers la table des pages d un processus est gardé dans le PCB L implémentation matérielle de la table de pages peut se faire de plusieurs façons Dans un ensemble dédié de registres de la CPU Très rapide Espace limite (pas adéquat pour les pages de grandes tailles) En mémoire centrale Plus d espace pour accommoder des grandes tables de pages Plus lente que les registres Pour un accès à un place i en mémoire, on besoin de deux accès mémoire: Un accès à la table de page et un accès pour à i une fois l adresse physique déterminée Solution? 10
Implémentation de la table des pages Le problème du double accès à la mémoire peut être résolu En utilisant une mémoire cache de recherche rapide Une petite mémoire associative qui permet de faire une recherche parallèle Appelée Translation look-aside buffers (TLB) Le TLB est utilisé comme suit : Le TLB contient seulement quelques entrées de la table de page Pour une adresse logique générée par la CPU Le numéro de page correspondant est présenté au TLB Si le numéro est trouvé (TLB hit) numéro de cadre immédiatement disponible Si le numéro de page n est pas trouvé (TLB miss) : La table de page en mémoire doit être utilisée Le TLB est mis à jour 11
Protection La protection de la mémoire avec la pagination est implémentée en associant des bits de protection avec chaque cadre Un bit définit si la page est en mode Read-Write, Read-Only, execute, etc. Un bit Valid-Invalid est attaché à chaque entrée de la table des pages valid indique que la page correspondante est dans l espace d adresses du processus et donc une page légale invalid indique que la page n est pas dans l espace du processus est don illégale Exemple : Un système avec une adresse logique de 14-bits et une taille de page 2KB 11 bits pour le déplacement 3 bits pour le numéro de pages : 8 pages au total Un programme de taille 10468 bytes (5 x 2048 + 228) utilise seulement 6 pages (page 0 à page 5) Toute adresse générée pat le CPU qui réfère aux pages 6 et 7 sont illégales Bit de protection Valide- Invalide dans la table de page [1] 12
Structure des tables de pages Les ordinateurs modernes supportent des espaces d adresses très larges (2 32 à 2 64 ) Les tables de pages sont donc très larges Exemple Un système avec des adresses logiques de 32-bits Taille de page : 4KB (12bits) Table de pages comporte 2 32 /2 12 = 2 20 =1M entrées Si chaque entrée est de 4 bytes Table de page de 4MB! Il faut partager une telle page en plusieurs parties Table de page elle même paginée Table de pages à deux niveaux Table de page à deux niveaux[1] 13
Structure des tables de pages Une adresse logique (sur une machine 32 bits avec une page de taille 1K ) est divisée en : Un numéro de page de 22 bits Un décalage dans la page de 10 bits Comme la table de pages est paginée, le numéro de page est aussi divisé en : Un index dans la table de page du premier niveau 12 bits Un décalage dans une page de la table de page 10 bits Donc une adresse logique est comme suit : p1 est un index dans la table du premier niveau (the outer page table) p2 est un décalage dans une page de la table de page Translation d adresses avec une table de pages à deux niveaux [1] 14
Pagination à la demande Ce n est pas nécessaire de charger un programme entièrement en mémoire Stratégie alternative : Charger une page en mémoire seulement quand c est nécessaire Moins d entrées/sorties Temps de réponse amélioré Plus de programmes en mémoire (meilleure utilisation de la CPU) Lorsqu une page est demandée, on utilise le bit de validité Référence valide : page en mémoire; on continue Référence invalide : page non présente en mémoire (défaut de page) Approche paresseuse de chargement de page en mémoire (lazzy swapper ou lazzy pager) Table de page avec certaines pages non chargées en mémoire [1] 15
Défaut de page Qu est ce qui arrive si un processus essaye d accéder à une page non présente en mémoire? L accès au page non présente en mémoire (invalide) cause un défaut de page Un déroutement (interruption logicielle) vers l OS Traitement du défaut de page par l OS 1. OS vérifie la cause du déroutement en consultant la table des pages : Référence valide : page non présente (défaut de page) 2. Trouver un cadre de page libre 3. Charger la page du disque vers le cadre 4. Mise à jour de la table des page 5. Mettre le bit de validation à valide 6. Redémarrer l instruction qui a causé le défaut de page 16
Exercice 03 et 04 Pagination à la demande 17
Remplacement de page Qu est ce qui arrive si l OS ne trouve pas un cadre libre dans la mémoire lorsqu un processus essaye d accéder à une page non présente en mémoire? 18
Remplacement de page Qu est ce qui arrive si l OS ne trouve pas un cadre libre dans la mémoire lorsqu un processus essaye d accéder à une page non présente en mémoire? Utiliser un algorithme de remplacement de page pour sélectionner un page victime Transférer la page victime de la mémoire physique vers le disque Transférer la page voulue du disque dans le cadre libre et mettre à jour la table des pages Est ce que la page victime doit absolument être sauvegardée sur le disque? 19
Remplacement de page Le problème de remplacement de page consiste à sélectionner un cadre dont la page sera retirée de la mémoire pour faire de la place à une autre page référencée par un processus Certaines cadres ne peuvent pas être sélectionnés comme victimes Pourquoi? Exemples? 20
Remplacement de page Le problème de remplacement de page consiste à sélectionner un cadre dont la page sera retirée de la mémoire pour faire de la place à une autre page référencée par un processus Certaines cadres ne peuvent pas être sélectionnés comme victimes Cadres réservés pour le noyau du OS Cadres contenant des tampons d E/S Comment sélectionner un cadre victime? Utiliser un algorithme de remplacement de page 21
Remplacement de page Critères d évaluation des algorithmes de remplacement de pages Il doit minimiser le nombre de défaut de pages Il doit être efficace (car il est souvent exécuté) Quelle page sélectionner? Page qui ne sera plus utilisée ou sera utilisée le plus tard possible? Page qui n est pas souvent utilisée? Page qui est en mémoire depuis un certain temps? 22
Remplacement de page On évalue un algorithme de remplacement de page en l exécutant sur une séquence particulière de références de pages (séquence de références) et on calcul le nombre de défaut de page pour la séquence Exemple : Dans les exemples qui suivent on utilise la séquence de références suivante : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 On s attend logiquement que le nombre de défaut de pages diminue avec l augmentation des cadres de pages 23
Remplacement de page Algorithme du remplacement de pages FIFO Algorithme de remplacement le plus simple La page la plus ancienne est celle est qui remplacée Simple à comprendre et à implémenter Performance de FIFO n est pas toujours bonne Exemple On considère notre séquence de référence : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 On exécute l algorithme de remplacement FIFO avec 3 cadres de pages L exécution de FIFO donne 15 défauts de pages pour cette séquence 24
Remplacement de page On considère la séquence : 1,2,3,4,1,2,5,1,2,3,4,5 On exécute l algorithme de remplacement FIFO sur cette séquence de références de pages Avec 3 cadres de mémoires Avec 4 cadres de mémoires Qu est ce qu on constate? 25
On considère la séquence : 1,2,3,4,1,2,5,1,2,3,4,5 Remplacement de page Exécution de FIFO avec 3 cadres On obtient 9 défaut de pages Exécution de FIFO avec 4 cadres On obtient 10 défaut de pages Anomalie de Belady 26
Remplacement de page L anomalie de Belady a motivé la recherche d un algorithme de remplacement optimal Algorithme qui donnerait le plus faible taux de défauts de pages Ne souffre pas de l anomalie de Belady Un tel algorithme existe Appelé OPT ou MIN «Consiste à remplacer la page qui ne sera pas utilisée pour la plus longue période de temps.»[1] En d autres termes qui sera utilisée le plus tard possible Cependant, l algorithme optimal est pratiquement impossible à implémenter. Pourquoi? Ca vous rappelles quelque chose? Il est utilisé pour des études de comparaisons des algorithmes de remplacement 27
Remplacement de page Algorithme de remplacement optimal On considère notre séquence de références : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 On utilise 3 cadres de pages On obtient : 9 défauts de pages Combien de défauts de pages on obtient avec l algorithme optimal pour la séquence 1,2,3,4,1,2,5,1,2,3,4,5 en utilisant 3 cadres de pages? 28
Remplacement de page Algorithme de remplacement du moins récemment utilisée LRU (Least recently used) Algorithme optimal est impossible à implémenter mais peut être approximer On utilise le passé récent comme approximation du future proche On remplace la page qui n aurait pas été employée pendant la plus longue période On considère notre séquence de référence : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 On utilise 3 cadres de pages On obtient : 12 défauts de pages 29
Remplacement de page Exercice 05 30
Écroulement Quand un processus n a pas assez de pages en mémoire, le taux de défaut de page est très élevé. Ceci conduit à : Faible utilisation de la CPU OS pense qu il doit augmenter le degré de multiprogrammation pour augmenter l utilisation de la CPU D autres processus sont ajoutés au système Écroulement (thrasing) : un processus est plus occupé à faire du swapping de pages que du traitement utile On peut limiter le risque d écroulement en surveillant le nombre de défauts de pages provoqués par un processus. Si un processus provoque trop de défauts de pages (au-dessus d une limite supérieure) on lui allouera plus de pages ; audessous d une limite inférieure, on lui en retirera. S il n y a plus de cadres disponibles et trop de défauts de pages, on devra suspendre un des processus. 31
Références [1] SILBERSCHATZ, A. et P.B. GALVIN, Operating System Concepts. 8 th Edition, Addison Wesley. 32