Mémoire virtuelle Abdelouahed Gherbi Hiver 2014 LOG 710 Hiver2014 1 Plan • • • • • Introduction Pagination Pagination à la demande Algorithme de remplacement de pages Écroulement LOG 710 Hiver2014 2 Introduction • Mémoire virtuelle – 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 LOG 710 Hiver2014 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 • 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 LOG 710 Hiver2014 Modèle de mémoire paginée [1] 4 Pagination • Support matériel nécessaire pour la pagination [1] LOG 710 Hiver2014 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 2m et une taille de page 2n LOG 710 Hiver2014 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 LOG 710 Hiver2014 7 Pagination • Exercices 01 et 02 LOG 710 Hiver2014 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? LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 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 LOG 710 Hiver2014 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 LOG 710 Hiver2014 Bit de protection ValideInvalide dans la table de page [1] 12 Structure des tables de pages • Les ordinateurs modernes supportent des espaces d’adresses très larges (232 à 264) • 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 232/212 = 220=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 LOG 710 Hiver2014 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] LOG 710 Hiver2014 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) LOG 710 Hiver2014 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 : – 2. 3. 4. 5. 6. Référence valide : page non présente (défaut de page) Trouver un cadre de page libre Charger la page du disque vers le cadre Mise à jour de la table des page Mettre le bit de validation à valide Redémarrer l’instruction qui a causé le défaut de page LOG 710 Hiver2014 16 Pagination à la demande • Exercice 03 et 04 LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 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? LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 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 LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 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 LOG 710 Hiver2014 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 LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 25 Remplacement de page • On considère la séquence : – 1,2,3,4,1,2,5,1,2,3,4,5 • 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 LOG 710 Hiver2014 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 LOG 710 Hiver2014 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 ? LOG 710 Hiver2014 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 LOG 710 Hiver2014 29 Remplacement de page • Exercice 05 LOG 710 Hiver2014 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. LOG 710 Hiver2014 31 Références [1] SILBERSCHATZ, A. et P.B. GALVIN, Operating System Concepts. 8th Edition, Addison Wesley. LOG 710 Hiver2014 32