Académique Documents
Professionnel Documents
Culture Documents
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 1/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
Une partie importante des solutions aux problèmes soulevés consiste à utiliser la mémoire secondaire (disques, mémoire Flash, etc.) pour
combler les besoins en mémoire des processus.
Cette mémoire secondaire est plus lente, mais elle est très importante dans les systèmes modernes.
Le va-et-vient est mis en œuvre lorsque tous les processus ne peuvent tenir simultanément en mémoire. On doit alors en déplacer
temporairement certains sur une mémoire provisoire, en général, une partie réservée du disque (swap file, ou fichier d’échange).
Sur le disque, la zone de va-et-vient d’un processus peut être allouée à la demande dans la zone de va-et-vient générale (swap file). Quand un
processus est déchargé de la mémoire centrale, on lui recherche une place. Les places de va-et-vient sont gérées de la même manière que la
mémoire centrale. La zone de va-et-vient d’un processus peut aussi être allouée une fois pour toute au début de l’exécution. Lors du
déchargement, le processus est sûr d’avoir une zone d’attente libre sur le disque.
Le va-et-vient simple a pour inconvénient de laisser l’unité centrale inactive pendant les transferts de processus entre la mémoire principale et la
mémoire de stockage. Même avec des traitements limités par l’unité centrale et un quantum de temps plutôt long, le temps pris pour le va-et-
vient reste le facteur prépondérant.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 2/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
Le système de va-et-vient, s’il permet de pallier le manque de mémoire nécessaire à plusieurs utilisateurs, n’autorise cependant pas l’exécution
de programmes de taille supérieure à celle de la mémoire centrale. Les stratégies qui suivent solutionnent ces problèmes.
3.4 Fragmentation
Un autre problème qui surgit lors du va-et-vient est l’apparition de « trous » dans la mémoire secondaire, un phénomène que l’on appelle
fragmentation externe. En quelque sorte, cela peut constituer un gaspillage de mémoire : si les « trous » qui restent sont trop petits pour
accommoder un processus, on ne peut lui faire de la place sans d’abord faire un va-et-vient. Dans la dernière étape de la figure ci-dessous, on a
660K de mémoire libres, mais un processus de 600K ne peut tourner, car la mémoire à laquelle il a accès n’est pas contiguë. Il existe bien des
solutions à ceci, mais elles sont relativement coûteuses.
Progression de l’utilisation de la mémoire.
Des « trous » se forment petit à petit, c’est le
phénomène de la fragmentation.
3.5 Conclusion
Les deux techniques d’utilisation de la mémoire secondaire
présentées plus haut sont relativement anciennes. Elles étaient
utilisées sous DOS et Windows 3.1 (ci-contre), par exemple.
Les principaux inconvénients sont, comme on l’a dit plus haut :
1. temps de transfert entre la mémoire principale et
secondaire
2. impossibilité d’exécuter un programme de taille
supérieure à celle de la mémoire centrale
3. problèmes de fragmentation
Les utilisations modernes de la mémoire secondaire et de la
swap file se font dans le cadre de la mémoire virtuelle, que nous
voyons ensuite.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 3/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
Considérons un ensemble de programmes s’exécutant « simultanément » sur un ordinateur quelconque. La mémoire totale requise par
l’ensemble des programmes peut être bien plus grande que la quantité de mémoire physique disponible sur la machine, mais seule une fraction
de cette mémoire est utilisée de manière active à chaque instant donné. La mémoire principale n’a donc besoin de contenir que les parties
actives des programmes. Une autre motivation est de permettre aux programmes de dépasser la taille de la mémoire physique, ce qui n’est pas
possible dans le mécanisme du va-et-vient.
La mémoire virtuelle permet d’exécuter des programmes dont la taille excède la taille de la mémoire réelle.
L’implantation de la mémoire virtuelle gère automatiquement deux niveaux de hiérarchie de mémoire, la mémoire physique (RAM) et la
mémoire secondaire (le disque). La mémoire physique de nos appareils, même équipés de 1,2, 4 Go, demeure limitée pour être en mesure de
supporter nos exigences et celles du système d’opération en matière de mémoire de travail.
On distingue deux saveurs de mémoire virtuelle, en général :
1. La mémoire virtuelle par pagination (la plus utilisée)
2. La mémoire virtuelle par segmentation
Voyons-les, tout en gardant à l’esprit la distinction entre adresses réelles et adresses virtuelles que nous avons vue plus tôt.
Rappel
Le processeur génère les adresses virtuelles, transformées par le MMU en adresses
physiques, qui désignent des emplacements dans la mémoire physique.
On a ainsi l’espace d’adressage virtuel (visible par les processus) et l’espace d’adressage
physique (visible par le MMU).
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 4/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
On conserve la correspondance entre les pages et les cadres de pages dans une table
appelée table des pages (« page table »).
Dans la plupart des OS modernes, la mémoire virtuelle et la mémoire physique sont
divisées logiquement en pages de quelques kilo-octets (1, 2 ou 4 ko généralement). Dans
la plupart des ordinateurs, la dimension de la page est fixée à 4 k.
La correspondance de taille est donc parfaite puisque la mémoire virtuelle et la mémoire
physique ont des pages de dimension identique.
La mémoire virtuelle permet donc de faire tourner un processus qui demande plus de mémoire (60 Ko, à gauche dans la figure) que
disponible dans la mémoire physique (28 Ko, à droite dans la figure).
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 5/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
Évolution de la taille du fichier d’échange dans le gestionnaire de tâches
Comme la taille de la plage d’adresse virtuelle (typiquement, avec 32
bits, 232) est plus grande que celle de la mémoire physique (par
exemple : 230 pour 1 Go de mémoire physique), il arrive souvent qu’on
ait un défaut de page. La page virtuelle est absente de la mémoire
physique et ne correspond pas encore à une adresse physique, mais elle
se trouve sur disque. Il faudra alors la charger et la placer dans la
mémoire physique pour être exécutée.
En raison du coût extrêmement élevé d’un défaut de page (plusieurs
centaines de milliers de cycles de processeur), les concepteurs
souhaitent toujours réduire le nombre de défauts en optimisant le
placement des pages.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 6/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
La mémoire virtuelle paginée et sa table des pages viennent donc solutionner en partie les problèmes de coexistence de plusieurs processus
(multiprogrammation) : chaque processus a sa propre table des pages, et donc la mémoire physique contient des cadres de pages appartenant à
plusieurs processus distincts.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 7/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
En effet, lorsqu’une traduction d’un numéro de page virtuelle est utilisée, il est probable qu’elle soit à nouveau nécessaire dans un futur proche,
car les références aux mots de cette page ont des propriétés de localité aussi bien temporelle que spatiale.
Le TLB correspond à ce petit morceau de papier que nous utilisons souvent pour noter l’emplacement d’un ensemble de livres que nous avons
recherchés dans le fichier ; plutôt que de sans cesse parcourir tout le fichier, nous notons l’emplacement de plusieurs livres et utilisons le bout de
papier comme s’il s’agissait d’un cache.
Un TLB est un cache qui ne détient que des correspondances de tables des pages. Chaque entrée d’étiquette dans le TLB détient une partie du
numéro de page virtuelle, et chaque entrée de données du TLB détient un numéro de page physique.
NT avec 16 megs de mémoire vive; beaucoup de défauts de pages NT avec 64 megs de mémoire vive; moins de défauts de pages
Il est possible de diminuer les effets de ce comportement soit en rajoutant des ressources matérielles (ajouter de la mémoire), diminuer le taux de
multiprogrammation, ou modifier la priorité des processus.
6 La segmentation
Alors que la pagination propose un espace d’adressage plat et indifférencié, (offert par les processeurs RISQ ex : Sun), la segmentation partage
les processus en segments bien spécifiques. On peut ainsi avoir des segments pour des procédures, pour la table de symboles, pour le programme
principal, etc. Ces segments peuvent être relogeables et avoir pour origine un registre de base propre au segment.
Chaque objet logique sera désigné par un segment. Dans un segment l’adressage se fera à l’aide d’un déplacement. Le couple (segment,
déplacement) sera traduit en adresse mémoire par le biais d’une table de segments contenant deux champs, limite et base. La base est l’adresse
de début du segment, et limite la dernière adresse du même segment.
Segmentation : l’adresse virtuelle issue du processeur à la forme
(segment, déplacement). Elle est traduite en adresse physique par le
biais d’une table de segments. Un test est effectué pour vérifier que
l’adresse est bien dans l’intervalle du segment.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 8/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
La segmentation permet aussi le partage, par exemple du code d’un éditeur entre plusieurs processus. Ce partage porte alors sur un ou plusieurs
segments.
Un exemple réduit d’architecture segmentée est donné par la famille x86 qui possède 4 segments : le code (CS Code Segment), la pile (SS Stack
Segment), les données (DS Data Segment) et un supplémentaire, à la discrétion du programmeur (ES Extra Segment).
4) Un utilisateur se plaint de recevoir plusieurs fois par jour le message ci-dessous. Expliquez ce message et trouvez une façon de réduire sa
fréquence d’apparition.
schéma : .
Comment se fait-il alors qu’il n’y ait pas une
collision entre la page 17 du processus vert et la
page 17 du processus jaune ?
e) Si le processus vert lisait maintenant la page 2, y
aurait-il un défaut de page ? S’il lisait plutôt la
page 18 ?
f) Que remarquez-vous sur les tables lors de la
commutation entre deux processus (context
switch) ?
9) Lorsqu’on augmente la quantité de mémoire physique, qu’arrive-t-il au temps moyen entre deux défauts de pages ? Augmentation ou
diminution ? Lisez bien la question…
10) Admettons qu’une instruction demande 1 μs (microseconde) sans défaut de page, mais 3001 μs lorsque se produit un défaut de page. Si un
programme prend 60 s pour s’exécuter avec 15 000 défauts de page, combien de temps prendra-t-il s’il n’y a plus que 7500 défauts de page ?
11) Répondez aux questions suivantes sur la gestion de la mémoire virtuelle sous Windows XP
a) Est-il utile de mettre la pagefile sur un autre disque que le disque système ?
b) Peut-on désactiver la mémoire virtuelle si on a beaucoup de RAM ?
c) Doit-on défragmenter le pagefile pour améliorer les lectures-écritures ?
d) Est-il utile de diviser le pagefile sur plusieurs disques ?
12) On fait tourner le programme C ci-dessous et on observe le message d’erreur Segmentation fault, et le programme crashe. Que signifie ce
message ?
int main(int argc, char **argv)
{
int *test = -1;
*test = 18;
}
13) Regardez attentivement la figure suivante et expliquez pourquoi deux processus distincts (pids 14460 et 14472) affichent les mêmes adresses
mémoire. Si vous ne trouvez pas, relisez les notes précédentes…
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 10/11
25/06/2020 La pagination, la segmentation et la mémoire virtuelle
Sur ThinkGeek…
Dernière mise à jour le 16 octobre 2009 à 23h16 par Yves Bergeron.
www-etud.iro.umontreal.ca/~gottif/bdeb/infc32/c8.htm 11/11