Je dois
avouer que je pouvais lire celle-ci et la suivre pas à pas, mais
d'une manière ou d'une autre, je n'ai jamais réellement éprouvé
que je la saisissais véritablement.
Gregory J. Chaitin, souvenirs d'enfance relatifs à la
démonstration de l'incomplétude des axiomatiques faite par
Kurt Gödel.
La mémoire virtuelle (notée MV dans la suite) est un mécanisme de gestion de mémoire. Ce mécanisme est constitué de deux parties :
Pourquoi installer une mémoire virtuelle.
![]() |
la mémoire centrale est le cache d'une mémoire au moins aussi vaste, logée sur le disque. |
![]() |
Un motif essentiel à cela,
la capacité du disque est considérablement plus grande que
celle de la mémoire centrale. Une partie du disque, visible par
le système de fichiers comme un fichier, est gérée
intérieurement par le système d'exploitation comme s'il s'agissait
de la mémoire centrale. Seules les parties immédiatement
indispensables à l'exécution par le processeur sont placées
en mémoire centrale câblée. La mémoire centrale
est le cache de cette mémoire virtuelle.Mettons en correspondance
les deux doublets «mémoire centrale et son cache» d'une
part et «mémoire virtuelle et mémoire centrale»
d'autre part
En termes de ressemblances
:
Mémoire centrale et son cache (L2) | Mémoire virtuelle et mémoire centrale |
mémoire centrale | partie ou fichier du disque |
cache | mémoire centrale |
ligne du cache | page ou segment |
échec en accès | défaut de page ou de segment |
plusieurs
politiques de remplacement
mises en œuvre par câblage |
une
politique de remplacement: le moins récemment utilisé
mise en œuvre par programme |
plusieurs protocoles d'écriture après modification | un seul protocole d'écriture : écriture différée séparée |
En termes de dissemblances :
Cache | Mémoire virtuelle |
Sa fonction est d'augmenter le débit du processeur | Sa fonction est de rendre plus aisée la manipulation de programmes grands ou nombreux. |
La fréquence du défaut peut être moyenne à grande | La fréquence du défaut doit être petite |
Le traitement du défaut est fait en mémoire | Le traitement du défaut est fait par accès au disque. |
La zone réservée
sur le disque porte des noms divers : échange (swap) selon une terminologie
ancienne, fichier de pagination (paging file). La gestion de cette zone
est parfois statique comme dans Windows 3.1. Elle est le plus souvent dynamique
comme dans de Windows 95 si on laisse le système la gérer.
Le lecteur en sera convaincu quand sous Windows 95, il passera en mode
dos et tapera dir. D'un moment à un autre et sans intervention de
l'opérateur ou d'un programme actif, la mémoire annoncée
libre sur le disque varie de plusieurs Mo au gré des déchargements
différés. Dans Windows 98 encore, on peut consulter le répertoire
Windows où se trouve ce fichier caché nommé win386.swp
et faire l'expérience suivante :
.mettre l'ordinateur sous tension;
.lancer l'explorateur;
.relever la taille de win386.swp;
.décharger un programme
résident s'il y en a;
.relever que la taille de win386.swp
a diminué;
.charger un logiciel;
.relever l'augmentation de taille
de win386.swp, etc.
![]() |
la mémoire câblée que l'on continue à nommer centrale est alors son cache. |
![]() |
Caractéristiques usuelles
de la mémoire virtuelle.
Paramètre | Valeur(s) |
Taille du bloc | 4 ko à 64 ko |
Temps d'accès à la mémoire câblée en cas de réussite | 40 à 100 cycles d'horloge |
Coût
total de l'échec en mémoire câblée
coût en temps d'accès coût en temps de transfert |
700 000
à 6 000 000 de cycles
350 000 à 4 000 000 de cycles 350 000 à 2 000 000 de cycles |
Taux
d'échec variable selon
la taille de la mémoire câblée et le nombre de logiciels lancés |
0,00001% à 0,001% |
Pourquoi ne pas installer une mémoire virtuelle.
les machines utilisées pour le temps réel et les très grands ordinateurs scientifiques Cray sont deux exceptions notables à l'utilisation généralisée de la mémoire virtuelle.
Le processeur a une capacité d'adressage de 2n mots, couramment n>40. La mémoire câblée est de 2p mots, couramment p<30. La mise en place d'une mémoire virtuelle (MV) ne concerne pas la seule mémoire câblée mais la totalité adressable. En ce sens on se rapproche de l'attribut du ruban de la machine de Turing, potentiellement infini ou encore aussi long que nécessaire. Le système d'exploitation réservera sur disque une zone de mémoire virtuelle (MV) d'au plus 2n mots, très probablement beaucoup moins, au fur et à mesure du besoin.
Mémoire virtuelle par pagination
La mémoire est paginée. On veille à ce que la taille de la page soit en quelque façon compatible avec la taille des unités du disque : secteurs et granules.
Mémoire virtuelle par segmentation
Cette technique n'a plus cours. La mémoire est segmentée. Chaque segment a un descripteur, Chaque processus peut avoir plusieurs segments construits par la compilation. La segmentation fonctionne à l'ordinaire. L'outil supplémentaire est une table des groupes des descripteurs de segments effectivement logés en mémoire centrale. Cette table est analogue à la table des tables de pages. Les segments sont logés sur disque et écrits en mémoire centrale en fonction des nécessités, leurs descripteurs sont alors chargés dans les registres.
Mémoire virtuelle mixte
La limite imposée à la longueur des segments dans la mémoire virtuelle segmentée disparaît. En effet, un segment n'aura plus à être chargé en un seul bloc en mémoire centrale. Il suffit d'y loger au moins une de ses pages.
Dans les trois cas, le fonctionnement type consiste, à l'appel du programme à le lire en tant sur le disque en tant que fichier et à l'écrire immédiatement en tant que segment ou zone paginée dans le fichier de mémoire virtuelle. Le segment de code ou sa première partie, ou sa première page est ensuite appelée en mémoire centrale pour exécution.
Ce fonctionnement est en partie observable comme suit. Appelez pour la première fois un programme volumineux, notez le temps mis pour qu'il soit à disposition. Fermez le et rappelez le. Il sera beaucoup plus rapidement disponible car déjà en MV.
Observations :
Mémoire Virtuelle par |
|
|
Mots par adresse | un | deux : segment + adresse |
Visible par le programmeur | jamais | possible |
Politique de remplacement | simple
(les pages ont toutes la même taille) |
complexe
(les segments ont des tailles quelconques) |
Mémoire inutilisée | portions de pages | intervalles entre segments |
Échanges avec le disque | on peut ajuster la taille de la page | les petits segments sont pénalisants |
Note :
La présence et la gestion
d'un cache de mémoire ne sont visibles ni par le programmeur
ni par le système d'exploitation,
La présence et la gestion
de la mémoire virtuelle sont normalement invisibles du programmeur,
elles sont prises en charge par le système d'exploitation.
Exemple de gestion de mémoire
dans trois systèmes successifs :
Le
8086 déjà aurait pu fonctionner en mémoire virtuelle
par sa segmentation. La taille de 1 Mo adressable n'était pas vraiment
suffisante pour cela vis-à-vis des 512 Ko de mémoire câblée
fréquente et de plus le système d'exploitation MSDOS de Microsoft
en était incapable. Néanmoins on a installé quelques
versions réduites d'Unix sur ces machines.
Exemple du processeur DEC Alpha 21064 .
Les adresses de ce processeur sont sur 64 bits. Il a été conçu explicitement pour la gestion de la mémoire virtuelle.
Les autres bits d'adresse sont des adresses d'entrées dans des tables :
Sur les écritures.
Les pages ou segments modifiés en mémoire câblée sont écrits par le protocole d'écriture différée dans la zone MV. À son tour celle-ci sera déchargée par des écritures différées sur le disque dans le système de fichiers. Ceci est fait en général de façon périodique ou à la fin du processus. Les écritures systématiques à l'extinction de la machine expliquent le temps passé qui s'écoule entre l'ordre d'arrêt et l'extinction.
Sur le repérage à l'intérieur de la zone MV.
L'organisation interne et la gestion de cette zone est à la charge exclusive du système d'exploitation. Lors du chargement de la zone MV, une table des pages (ou une table des segments) est construite qui ne concerne pas la mémoire centrale mais uniquement le chargement sur disque. La technique est la même que pour la mémoire centrale. Les outils, table des pages ou table des segments repèrent les positions des items dans la zone MV qui est considérée comme un fichier par le gestionnaire du disque.
Sur la mémoire virtuelle et le cache du disque en mémoire centrale.
Dans Windows 9x et ME la MV et
le cache du disque en mémoire centrale (à ne pas confondre
avec le cache câblé sur le contrôleur associé
au disque) sont parfaitement distincts. Le gestionnaire de MV décide
des pages copiées en mémoire centrale alors que le pilote
du cache détermine quelles portions des fichiers du disque, quels
qu'ils soient sont placées dans ce cache pour éviter des
accès au disque. Ici la main gauche ignore ce que fait la main droite.
Il peut en résulter de mauvaises performances.
4.4.5 Conclusion
Les caches et la mémoire virtuelle :
La technique du fichier couplé ou fichier dit «mappé» applique la mémoire virtuelle aux fichiers eux-mêmes et plus seulement aux programmes et à leurs zones de données. Le fichier (de données) est considéré comme étant dans l'espace d'adressage virtuel bien sûr. L'accès à un fichier ne relève plus des opérations classiques d'ouverture, lecture, écriture et fermeture. Les opérations sont faites directement sur les éléments du fichier sans entrée ou sortie explicite. Le disque est alors dans toute sa partie utilisée une seule mémoire virtuelle.
Cette technique a été créée dans Multics. Elle a été reprise dans plusieurs Unix et dans Windows NT. Plusieurs systèmes d'exploitation la mettent en œuvre mais elle n'est pas généralisée comme l'est la mémoire virtuelle.
Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 4
Plus grand svp ! Organisation et gestion de la mémoire
Année 2002-2003