| 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 | ||||||
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 |
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.
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.
(à développer)
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.
Comme il existe davantage de pages que de cadres de page, le MMU doit disposer :
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.
Une page possède deux aspects :
Les pages se répartissent alors en quatre catégories :
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.
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.
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 :


