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

Suite N°3...
 

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.

4.4 LA MÉMOIRE VIRTUELLE
 

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 :

C'est au titre de la première partie que la MV nous intéresse. Le développement de la seconde n'a pas sa place dans nos notes de cours.
 4.4.1 Le pourquoi.

Pourquoi installer une mémoire virtuelle.

Par les moyens mis en œuvre, pagination, segmentation ou les deux, on : 4.4.2 Ce que c'est.
 La première mémoire virtuelle était celle de l'Atlas déjà plusieurs fois cité. Parmi les différentes façons de dire ce que c'est, nous avons choisi la présentation par les caches bien que cette présentation soit anachronique puisque les caches de 1965 sont apparus après la mémoire virtuelle de 1958.
 
En fonctionnement de 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.
Une fois installée, la mémoire virtuelle EST la mémoire principale

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.

        L'estimation faite sur les Cray est que :
        le mécanisme de calcul et de transformation des adresses consomme 40 à 100 cycles;
        le défaut de présence fait consommer 700 000 à 6 000 000 de cycles;
        le taux d'échec est de 0,00001% à 0,001;
        dans le meilleur cas, la consommation est 40+0,00001%*700,000 = 40.07 cycles;
        dans le pire des cas, la consommation est 40+0,001%*6,000,000 = 100 cycles.4.4.3 Le comment

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 
Pagination
Segmentation
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.

        21 bits qui ne participent pas au mécanisme de mémoire virtuelle. Ils sont utilisés
        par et pour le système d'exploitation et répartis en            2 bits d'indication de l'émetteur : le système ou un utilisateur et pour chacun la
            destination : la pile ou non,
            19 autres bits dont l'usage ne nous concerne pas.

        Les autres bits d'adresse sont des adresses d'entrées dans des tables :

Les tables sont hiérarchisées comme suit : L'adresse totale est ainsi de 45 bits : 2 bits d'indication de l'émetteur + 10 + 10 + 10 + 13, adressant en théorie 32768 Giga. Toutefois, le circuit intégré n'a que 34 broches d'adresses correspondant à 16 Giga.
Notes complémentaires

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 :

On a vu plus haut les avantages des caches, ceux de la mémoire virtuelle sont apportés par trois caractéristiques :         le programme reste cohérent;
        la multiprogrammation devient raisonnable;
        les structures continues comme une pile n'occupent que l'espace nécessaire et peuvent être agrandies.         les processus sont protégés les uns par rapport aux autres;
        des pages différentes peuvent avoir des attributs différents;
        le noyau du système est protégé contre les utilisateurs.         on peut allouer la même page à plusieurs utilisateurs, mémoire partagée.

4.5 LE FICHIER COUPLÉ

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.

Questionnaire

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