Présentation
En anglaisRÉSUMÉ
Cet article décrit les principes et les implémentations de la mémoire virtuelle. Cette dernière offre à l'utilisateur un espace mémoire le plus grand possible, et ce sans devoir se préoccuper de la taille et de la nature des mémoires physiques réellement disponibles. L'exécution de ses programmes est protégée contre l'interaction avec d'autres programmes. L'espace mémoire virtuel est soit structuré en segments de différentes manières, soit à plat. Dans les deux cas, l'implémentation de la mémoire virtuelle est réalisée par le découpage de l'espace virtuel en pages et des mécanismes de traduction d'adresses virtuelles en adresses physiques.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleABSTRACT
This article describes the principles and implementations of virtual memories. The virtual memory provides the user with a huge memory space without having to worry about the size and nature of the physical memories actually implemented. Its programs are protected against interaction with other programs. The virtual memory can be decomposed into segments or ?flat?. In both cases, the virtual space is decomposed into fixed size pages and mechanisms are used to translate virtual addresses into physical addresses.
Auteur(s)
-
Daniel ETIEMBLE : Ingénieur INSA Lyon - Professeur à l'Université Paris Sud
-
François ANCEAU : Ingénieur INPG Grenoble - Professeur CNAM Émérite
INTRODUCTION
Cet article décrit les principes et les implémentations de la mémoire virtuelle, qui est le niveau de la hiérarchie mémoire compris entre la mémoire principale et les mémoires secondaires (disques magnétiques).
La mémoire virtuelle joue un double rôle. D'une part, elle fournit à l'utilisateur un espace mémoire quasi illimité, sans avoir à se préoccuper de la taille et de la nature (DRAM ou disques) des mémoires physiques réellement implémentées, tout en étant protégé contre les interactions volontaires ou involontaires d'autres programmes, que ce soient les siens ou ceux d'autres utilisateurs. D'autre part, elle réalise, par matériel et par logiciel sous contrôle du système d'exploitation, les transferts nécessaires entre la mémoire principale et les mémoires secondaires lorsque le code ou les données nécessaires ne sont pas dans la mémoire principale.
L'espace mémoire virtuel peut être structuré ou non. La structuration se réalise de différentes manières : segmentation en assembleur, segmentation comme extension d'adresse ou segmentation des machines-systèmes. Sans structuration, l'espace est dit « à plat ». Depuis les processeurs 32 bits, l'espace virtuel, segmenté ou non, est découpé en pages de taille fixe. Les systèmes à plat paginés sont d'abord présentés, avec les techniques de traduction d'adresses (tables des pages directes, tables des pages inverses utilisant le hachage, TLB pour accélérer les traductions) et de protection au niveau des pages. Les différents algorithmes de remplacement sont expliqués. Ensuite, les systèmes avec segmentation et pagination, caractéristiques des machines-systèmes sont présentés d'abord dans le cas général, puis illustrés dans le cas des architectures IA-32, qui utilisent une approche très pure de la segmentation paginée.
La manière dont les systèmes d'exploitation les plus connus implémentent la mémoire virtuelle est ensuite abordée. Multics utilisait la segmentation paginée. VAX-VMS au contraire utilisait une mémoire virtuelle à plat pour laquelle la notion de segments correspondait à des super-pages utilisées comme extension de l'espace d'adressage. Les systèmes Windows sont significatifs de l'évolution des mémoires virtuelles. De la version initiale Windows 1 à Windows Millenium, les systèmes successifs ont utilisé la segmentation paginée implantée dans les différents processeurs IA-32. Cependant, la version Windows NT développée en parallèle à partir de 1993 utilisait un système à plat, prévu pour être portable avec micronoyaux et HAL (couche d'adaptation au matériel), notamment sur les processeurs RISC qui n'utilisent pas la segmentation. Millenium a été le dernier représentant de la gamme utilisant la segmentation. Les versions 64 bits depuis Windows XP utilisent le mode à plat. Linux utilise le mode à plat.
L'histoire des mémoires virtuelles est celle de la naissance, de la vie et de la mort de la segmentation. Elle a disparu dans les versions 64 bits, remplacée par l'adressage à plat.
MOTS-CLÉS
mémoire virtuelle mémoire physique adresse virtuelle adresse logique segmentation pagination traduction d'adresse table des pages TLB algorithmes de remplacement Informatique systèmes d'exploitation
KEYWORDS
virtual memory | physical memory | virtual address | logical address | segmentation | pagination | address translation | page table | TLB | replacement algorithms | Computer | operating systems
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
3. Mémoire virtuelle paginée
3.1 Principe
La manière la plus simple d'organiser la correspondance entre la mémoire physique et la mémoire secondaire est de les décomposer en unités de taille fixe, appelés pages. La taille des pages est généralement fixée à 4 ko, bien que les systèmes d'exploitation permettent des pages de plus grande taille. Avec ce découpage en pages de taille fixe, la figure 6 montre comment un processus, avec ses différentes composantes (code, données, tas et pile) occupe un certain nombre de pages, contigües ou non, dans l'espace virtuel, la pile et le tas évoluant au cours de l'exécution du processus. Chacune de ces pages virtuelles est logée dans une page physique de la mémoire principale avec une correspondance individuelle du numéro de page logique vers un numéro de page physique. Ainsi deux pages logiques consécutives en mémoire virtuelle ne se retrouvent pas de manière consécutive en mémoire physique.
Certaines pages logiques peuvent être communes à plusieurs processus pour éviter la duplication de pages identiques (code noyau, bibliothèques, etc.). Le partage de code entre processus permet ainsi :
-
le partage de données et la communication entre processus ;
-
le partage de code. Les fonctions des bibliothèques ne sont chargées qu'une seule fois.
Cette mise en commun de pages logiques est étendue au cas des machines virtuelles. Cela permet d'éviter les doublons et de faciliter la communication entre ces machines.
La pagination est un mécanisme invisible à l'utilisateur qui ne voit qu'une mémoire virtuelle de grande taille, mais elle est visible pour le programmeur système qui doit installer et piloter une grande partie de ces mécanismes.
HAUT DE PAGE3.2 Comparaison entre hiérarchie de caches et mémoire virtuelle
Comme les caches réalisent des transferts automatiques entre deux niveaux successifs de caches (ou cache et mémoire principale), la mémoire virtuelle réalise des transferts automatiques entre la mémoire principale et le disque. Dans le tableau 2, nous montrons les différences existant entre les deux mécanismes pour les différents éléments de ces mécanismes.
Certaines caractéristiques du tableau ...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Mémoire virtuelle paginée
BIBLIOGRAPHIE
-
(1) - FOTHERINGHAM (J.) - Dynamic storage allocation in the Atlas including an automatic use of a backing store. - Comm. of theM, vol. 4, p. 435-436, oct. 1961.
-
(2) - CARR (R.W.), HENNESSY (J.L.) - WSClock – A simple and effective algorithm for virtual memory management. - Proceeding of the 8th ACM Symposium on Operating Systems principles, p. 87-95 (1981).
-
(3) - TANENBAUM (A.S.) - Modern operating systems. - Second edition, Prentice Hall (2001).
-
(4) - BENSOUSSAN (A.), CLINGEN (C.T.), DALEY (R.C.) - The multics virtual memory : concepts and design. - Comm. Of the ACM, vol. 15, p. 308-318, mai 1972.
-
(5) - JACOB (B.), MUDGE (T.) - Virtual memory in contemporary microprocessors. - IEEE Micro, p. 60-75, juill.-août 1998.
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive