La memoire virtuelle

Transcription

La memoire virtuelle
Gestion de la mémoire
Le S.E: Gestion de la mémoire
Rappels
Le CPU accède à la mémoire RAM en lisant des mots de 16, 32, 64, voire 128
bits (2, 4, 8, 16 octets).
Chaque octet de 8 bits est rangé dans une « case » de la mémoire. Chaque
case d’un octet est numérotée (de zéro à N-1, N étant la taille en octet de la
mémoire physique disponible) ; ce numéro est appelé « adresse physique » de
la case mémoire qui contient la donnée.
Le CPU accède aux données de la RAM en positionnant l’adresse du mot à lire
(ou à écrire) dans un registre d’adresse.
Espace d’adressage
Espace de la RAM où un processus a le droit d’écrire ou de lire des données.
Cet espace contient plusieurs zones :
le code machine à exécuter par le CPU,
la pile à l’exécution du CPU,
l’espace de données.
Le S.E: Gestion de la mémoire
Espace d’adressage physique :
C’est l’ensemble des adresses physiques de la RAM.
Espace d’adressage logique (virtuel)
C’est l’ensemble des adresses logiques accessibles par un
processus.
A partir de cet espace on peut pointer vers des zones de
l’espace d’adressage physique, ou sur une zone sur le
disque dur qui s’appelle le fichier d’échange de mémoire
virtuelle, ou fichier de swap.
Le processeur doit convertir chaque adresse logique
manipulée par le processus en adresse physique. Cette
conversion est appelée mapping et est réalisé par le MMU
(Memory Management Unit).
La mémoire est virtuellement découpée en zones. Il existe
deux philosophies différentes :
La segmentation : Découpage de la mémoire en
morceaux de tailles variables appelés segments,
caractérisés par leur adresse de début (décalage) et leur
taille.
La pagination : la mémoire est découpée en « blocs »
de taille fixe appelés pages.
Le S.E: Gestion de la mémoire
La segmentation
L’adresse virtuelle possède deux composantes :
Un numéro de segment,
Un déplacement dans ce segment.
Le MMU contient une table des segments, qui est
indexée par le numéro de segment, et qui, pour chaque
entrée, contient :
La taille du segment,
et son adresse de base.
Traduction d’une adresse virtuelle :
1.Le MMU cherche l’entrée correspondant au numéro de
segment dans la table des segments.
2.Vérifie que le déplacement contenu dans l’adresse
virtuelle est inférieur à la taille du segment.
3.Si c’est le cas, il additionne le déplacement à l’adresse
de base du segment pour obtenir l’adresse physique
Le S.E: Gestion de la mémoire
La pagination
Le processeur émet des adresses virtuelles indiquant la
position d'un mot dans la mémoire virtuelle ;
Cette mémoire virtuelle est formée de zones de même taille,
appelées pages. Une adresse virtuelle est donc un couple
(numéro de page, déplacement dans la page).
La mémoire physique est également composée de zones de
même taille, appelées « cadres » (frames en anglais), dans
lesquelles prennent place les pages. A noter que la taille d’un
cadre est égale à la taille d’une page ;
Le MMU assure la conversion des adresses virtuelles en
adresses physiques, en consultant une « table des pages »
pour connaître le numéro du cadre qui contient la page
recherchée. L'adresse physique obtenue est le couple
(numéro de cadre, déplacement) ;
Il peut y avoir plus de pages que de cadres : les pages qui ne
sont pas en mémoire sont stockées sur un autre support
(disque dur), elles seront ramenées dans un cadre si besoin.
Chaque processus possède sa propre table des pages, qui
est indexée par le numéro de page.
Le S.E: Gestion de la mémoire
Protection des accès mémoire entre processus
Il existe trois bits de gestion des accès pour chaque partie de l’espace d’adressage
d’un processus: (lecture, écriture et exécution de code)
Chaque processus ne peut accéder qu’à sa propre table des pages.
Lors de chaque accès à la mémoire, les droits sont vérifiés. S’il y’a besoin de
partager des zones de mémoire (exemple : shared memory ), dans ce cas,
chacun des processus référence les pages communes dans sa propre table des
pages.
Les deux processus doivent être indiqués comme propriétaires dans la table des
pages pour chacune de ces pages.
N° de
N° de
Processus
cadre/frame
page
propriétaire
number
Cadre 1
1
Processus 1
Exemple :
Table des pages avec des pages
partagées en lecture/écriture :
Cadre 2
3
Processus 1
Cadre 3
2
Processus 1,
Processus 2
Cadre 4
5
Processus 2
Le S.E: Gestion de la mémoire
Principe de la mémoire virtuelle – swap
Allouer en premier tous les cadres disponibles dans la mémoire physique.
Manque de cadre disponible: Libérer certains cadres en plaçant leurs contenus sur
disque.
Le processus élu avec des pages swapées sur le disque devra connaître cette
information.
Le bit validation « bit V » est à 1 si la page fait référence à un cadre en mémoire
centrale, et vaut 0 si le contenu de la page a été stocké sur disque.
Les pages contenant du code (programme) ne sont jamais swapées.
Le S.E: Gestion de la mémoire
Algorithmes de remplacement de pages :
• l’algorithme optimal,
• l’algorithme FIFO (First In, First Out/premier entré, premier sorti),
• l’algorithme LRU (Least Recently Used/la moins récemment utilisée),
• l’algorithme de la seconde chance,
• L’algorithme de l’horloge
• l’algorithme LFU (Least Frequently Used, « la moins souvent utilisée »).
• ….
Le S.E: Gestion de la mémoire
L’algorithme optimal ( de Belady)
• Consiste à retirer la page qui sera référencée le plus tard possible dans le futur.
• Impossible à mettre en œuvre: Difficile de prévoir les références futures d'un programme.
• Référence pour les autres stratégies, car il minimise le nombre de défauts de page.
Exemple: Soit un système avec m= 3 cases de mémoire et une suite de références
w={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}. La figure montre une ligne pour chaque case et une
colonne pour chaque référence. Chaque élément de ligne i et colonne j montre la page chargée
dans la case i après avoir été référencée. Les entrées soulignées en rouge sont des pages
chargées après un défaut de page. L'algorithme optimale fait donc 9 défauts de page.
Le S.E: Gestion de la mémoire
L’algorithme FIFO :
• Il mémorise dans une file de type FIFO (premier entré, premier sorti) les pages
présentes en mémoire.
• Lorsqu'un défaut de page se produit, on retire la plus ancienne, c'est à dire celle
qui se trouve en tête de file.
Exemple: La suite de références w={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}
Avec m=3 cases fait 15 défauts de page avec l'algorithme FIFO comme le montre la
figure
Le S.E: Gestion de la mémoire
L’algorithme LRU (Least Recently Used)
• L'algorithme LRU mémorise dans une liste chaînée toutes les pages en mémoire. La
page la plus utilisée est en tête de liste et la moins utilisée est en queue.
• Lorsqu'un défaut de page se produit, la page la moins utilisée est retirée.
• Pour minimiser la recherche et la modification de la liste chaînée, ces opérations
peuvent être réalisées par le matériel. Cet algorithme est coûteux.
• Problème: Difficulté d'implémentation, qui requiert un support du hardware. Il faut
une manière de mémoriser le temps à chaque fois qu'une page est référencée
Exemple: La suite de références w={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}
Avec m= 3 cases fait 12 défauts de page avec l'algorithme de remplacement de la page la
moins récemment utilisée, comme le montre la figure
Le S.E: Gestion de la mémoire
L'algorithme de remplacement de page de la seconde chance
Modification simple à l'algorithme FIFO afin d'éviter la suppression d'une page à laquelle on a
couramment recours
Il s'agit d'inspecter le bit R de la page la plus ancienne.
R=0 : La page est à la fois ancienne et inutilisée, elle est donc remplacée immédiatement.
R=1 : le bit est effacé, la page est placée à la fin de la liste des pages, et son temps de
chargement est mis à jour comme si elle venait d'arriver en mémoire. La recherche continue
alors.
Exemple: Les pages de A à H se trouvent dans une liste chaînée, triées par leur temps d'arrivée
en mémoire. Supposons qu'un défaut de page se produise à l'instant 20. La page la plus
ancienne est A, qui est arrivée à l'instant 0, quand le processus a démarré.
Si le bit R de la page A est à 0, elle est évincée de la mémoire.
Si le bit R est à 1, A est placée à la fin de la liste et son temps de chargement est mis à jour
avec le temps courant (20). Le bit R est aussi mis à 0. La recherche d'une page convenable
continue alors avec B.
Le S.E: Gestion de la mémoire
L'algorithme de remplacement de page de l'horloge
Consiste à garder tous les cadres de pages dans une liste circulaire formant une
horloge, comme l'illustre la figure ci-dessous. Un pointeur se trouve sur la page la plus
ancienne.
Quand un défaut de page survient, la page pointée est examinée.
Si son bit R est à 0, la page est évincée, la nouvelle page est insérée dans l'horloge
à sa place, et le pointeur est avancé d'une position.
Si le bit R est à 1, il est effacé et le pointeur est avancé sur la prochaine page. Ce
processus est répété jusqu'à ce qu'une page R = 0 soit trouvée. Cet algorithme de
l'horloge diffère de l'algorithme de la seconde chance uniquement dans son
implantation.
Le S.E: Gestion de la mémoire
L’algorithme LFU
Dans cet algorithme, le système garde un compteur qui est incrémenté à
chaque fois que le cadre est référencé. La victime sera le cadre dont le
compteur est le plus bas.
Cet algorithme, bien qu’intuitivement correct, souffre de deux
inconvénients, qui le rendent peu utilisé :
Au démarrage des programmes, quelques pages peuvent être
intensément utilisées, puis plus jamais par la suite. La valeur du
compteur sera si élevée qu'ils ne seront remplacés que trop tardivement ;
Il faut aussi gérer le cas de dépassement de capacité du compteur,
ce qui est coûteux en CPU.

Documents pareils