Page d'accueil encyclopedie-enligne.com en page d'accueil
Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées

Mémoire virtuelle


La mémoire virtuelle est une fonctionalité d'un ordinateur qui permet au système d'exploitation d'accéder à une mémoire temporaire de taille supérieure à celle disponible en transférant au vol, de façon transparente, une partie sur celle de stockage.

Malgré la disparité énorme de vitesses entre mémoire centrale et mémoire disque (un facteur typique est 10 000), le procédé donne parfois de bons résultats en multiprogrammation, mais son efficacité diminue très vite à mesure que les écarts de vitesse entre RAM et disque augmentent. Certains utilisateurs l'inhibent aujourd'hui (2004).

Sommaire

Principe

Un programme imaginaire

Imaginons un programme fictif qui s'exécute de façon entièrement linéiare, sans boucles ni branchements. Si t est le temps d'exécution moyen d'une instruction (mettons 1µs), et T le temps nécessaire pour lire une piste depuis le disque (mettons 10ms), alors il n'est pas indispensable d'avoir plus de deux fois N = T/t instructions en mémoire à la fois, car pendant qu'on exécute les N premières, on a parfaitement le temps de chercher les N suivantes. Ce sera notre première notion de page.

Le cas réel

Un programme réel va comporter bien entendu des branchements en amont qui auront tendance à augmenter N, mais aussi des boucles qui vont le ralentir bien davantage, car une boucle est en général exécutée plusieurs fois. On peut donc statistiquement réduire la taille de page sans trop d'inconvénient. Cette taille est de 4K sur un processeur à architecture i386.

On nomme par convention working set la taille dans laquelle va être plus ou moins confiné le programme pendant la durée typique d'un appel disque - et parfois la courbe de cette taille en fonction de cette durée. Le '"working set change évidemment pour chaque type de programme.

La taille de page sur les i386 a été fixée à 4K parce que les working sets des programmes de l'époque étaient voisins de cette puissance de 2. Le choix serait sans doute différent à la lumière de mesures effectuées avec des programmes d'aujourd'hui.

Un antécédent : la mémoire topographique

(à développer)

Pagination

La mémoire est découpée logiquement en pages par le MMU ou memory management unit - qui peut être interne ou externe au processeur. Cela ne demande aucune modification physique de la mémoire elle-même; juste le fait d'interposer un MMU entre le processeur (qui adresse par exemple 4 Go) et la mémoire réelle, qui ne comporte par exemple que 1 Go ou 768 Mo). Il n'est pas nécessaire que les tailles soient des puissances de 2, hormis avec certains allocateurs mémoires très performants et spécialisés (buddy system).

Les premiers systèmes de pagination ont été installés sur des mainframes de moins de 256 Ko, dans les années 1960; le procédé, parce qu'il était peu onéreux et assouplissait beaucoup les contraintes mémoire, a été généralisé dans les années 1970, et supporté en standard sur les microprocesseurs) à partir du 80386 d'Intel et du (68020 ?) de Motorola.

Les constructeurs d'ordinateurs scientifiques à hautes performances comme Control Data, Amdahl ou Cray avaient moins intérêt à implémenter la mémoire virtuelle, car la moindre page défaillante se traduit par un délai permettant d'exécuter plusieurs centaines de milliers d'instructions. Or un rythme typique de défauts de page est de 200 par seconde en multiprogrammation.

Pour bien comprendre la pagination, voir aussi chip select.

Segmentation

Fonction d'association d'une cadre de page RAM à une page disque

Comme il existe davantage de pages que de cadres de page, le MMU doit disposer :

  1. d'un dispositif associant la page à un cadre
  2. d'un dispositif permettant se davoir si le care est déjà occupé par une autre page
  3. d'un dispositif permettant de savoir si cette page a été modifiée (pour en envoyer le contenu sur disque le cadre de page doit être utilisé)
  4. d'un dispositif permettant de savoir si une page est en mémoire centrale ou non. L'idéal serait que le programme lui-même puisse en avoir connaissance, mais on préfère souvent masquer à celui-ci ce genre de détails pour gagner en indépendance et en transparence, même au prix d'une perte (élevée) en efficacité.

Allocation naïve

La fonction la plus simple permettant d'associer une page à un cadre de page dans serait de ne garder que les bits de poids faible : ainsi s'il y a 100 (hexadécimal, soit 256) cadres de page, et que l'espace d'adressage en couvre 1000 (4096), considérer les 12 derniers bits de toute adresse comme celle de son cadre de page.

Avantages :

Inconvénients :

Ce type d'adressage rustique est utilisé pour les antémémoires centrales (caches), où la vitesse brute est indispensable. Le délai associé à l'appel ou à l'envoi d'une page sur disque permet de faire bien plus efficace au moyen de dispositifs plus souples et moins dépendants de l'adressage lui-même.

Allocation par tables ou par chaînage

Algorithmes de remplacement

First in, first out (cas d'école)

Last in, first out (cas d'école)

Par comportement et activité

Une page possède deux aspects :

Les pages se répartissent alors en quatre catégories :

  1. mauvais comportement, mauvaise activité
  2. bon comportement, mauvaise activité
  3. mauvais comportement, bonne activité
  4. bon comportement, bonne activité

C'est dans cette ordre aussi qu'elles seront candidates à d'enventuels remplacement. On peut remarquer que c'est le même genre de priorité qui est utilisé pour remplacer les employés dans les entreprises.

LRU ou least recently used


Intérêt, pour la performance, des registres associatifs

Le phénomène d'effondrement (trashing)

Conserver ou inhiber la mémoire virtuelle ?

Les écarts de temps d'accès entre disque et mémoire sont devenus tels que la rentabilité de la mémoire virtuelle pose aujourd'hui problème. En effet, il est rare que le défaut de page constaté soit unique : ces défauts vont arriver le plus souvent en série, contribuant au phénomène de trashing et dégradant ainsi les performances de l'ordinateur d'un facteur 20 et plus. Un simple doublement de la mémoire peut éviter ce trashing et fournir des performances d'apparence vingt fois meilleures. Est-il encore nécessaire de conserver une mémoire virtuelle dans ces conditions ? Les systèmes modernes permettent en tout cas de l'inhiber à la demande.

Au-delà de la mémoire virtuelle

L'organisation classique de la mémoire virtuelle se veut générale et ne fait pas intervenir les caractéristiques d'accès aux données.

D'autres mécanismes ont été envisagés :

VIrtualisation des programmes

Virtualisation des données

Pile

Liste

Hashs

Tas



This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia