Mémoire virtuelle

publicité
Mémoire virtuelle
Ce cours s'intéresse au principe de la mémoire virtuelle. Il aborde notamment les
notions liées aux défauts de pages.
I- Principe de la mémoire virtuelle
La multiprogrammation implique de charger plusieurs programmes en mémoire
centrale de manière à obtenir un bon taux d'utilisation du processeur. Supposons
comme sur la figure 1 ici que l'exécution des programmes 1, 2 et 3 soit nécessaire
pour obtenir ce taux d'utilisation du cpu satisfaisant. On peut remarquer qu'une fois
les programmes 1 et 2 chargés dans la mémoire, toutes les cases sont occupées : le
programme 3 ne peut pas être chargé.
Mémoire virtuelle
Page 1
Page 3-1 Case 1
Page 4 Page 2
Page 3
Page 4 Page 2
Page 1-1
Case 2
Page 3-2
Case 3
Page 1
Page 2
Programme 1
Page 1
Mémoire physique
Page 3
Page 1-2 Case 4
Programme 2
Page 3
Programme 3
Espaces d'adressage
des programmes
Page 2-2
Case 5
Page 2-1
Case 6
Page 4-1 Case 7
MPS 2002/2003
N°page, processus
1
Fig 1 : Cas de figure
Lorsque l'on regarde l'exécution d'un processus, on s'aperçoit qu'à un instant donné
le processus n'accède qu'à une partie de son espace d'adressage (par exemple la
page de code couramment exécutée par le processeur et la page de données
correspondante). Les autres pages de l'espace d'adressage ne sont pas accédées et
sont donc inutiles en mémoire centrale. Une solution pour pouvoir charger plus de
programmes dans la mémoire centrale est donc de ne charger pour chaque
programme que les pages couramment utilisées. Ici par exemple, seules les pages
1,2 et 4 du processus 1 sont chargées ainsi que la page 3 du processus 2 et les
pages 1,2,3 du programme 3.
Puisque les pages d'un espace d'adressage de processus ne sont pas toutes
chargées en mémoire centrale, il faut que le processeur puisse détecter leur
éventuelle absence lorsqu'il cherche à effectuer une conversion d'adresse paginée
vers l'adresse physique. Chaque entrée de la table des pages comporte alors un
champ supplémentaire, le bit Validation V, qui est à vrai (1 ou V) si la page est
effectivement présente en mémoire centrale.
La figure 2 montre les valeurs des bits de validation pour les tables des pages des
trois processus 1, 2 et 3, en tenant compte des chargements de leurs pages en
mémoire centrale. Ainsi pour le processus 1, la page 1 est chargée dans la case 2, le
bit de validation est à vrai (V). La page 2 est chargée dans la case 4, le bit de
validation est à vrai. Par contre la page 3 n'est pas présente en mémoire centrale et
donc le bit de validation est à faux (I pour Invalide) : dans ce cas, le champs n° de
case n'a pas de signification.
Bit de validation
V
2
I
-
V
5
V
4
I
-
V
6
I
-
V
3
V
1
V
7
I
-
Processus 2
Processus 1
Processus 3
Page 1
Page 4 Page 2
Page 3
Programme 1
Page 1
Page 4 Page 2
Page 3
Page 1
Page 2
Page 3
Programme 2
Programme 3
Mémoire physique
Page 3-3
Case 1
Page 1-1
Case 2
Page 3-2
Case 3
Page 2-1
Case 4
Page 1-3
Case 5
Page 2-3
Case 6
Page 4-1
MPS 2002/2003
Case 7
2
Fig 2 : Bit de validation
II- Notion de défaut de pages
Que se passe-t-il à présent lorsque qu'un processus tente d'accéder à une page de
son espace d'adressage qui n'est pas en mémoire centrale ? Ici le processus 2
génère une adresse paginée portant sur la page 2. La MMU accède à la table des
pages pour effectuer la conversion adresse paginée, adresse physique et teste la
valeur du bit de validation : elle le trouve à faux, ce qui veut dire que la page n'est
pas chargée dans une case et donc la conversion ne peut être réalisée. Il se produit
alors un défaut de page : c'est un déroutement qui oblige le processeur à suspendre
l'exécution du programme en cours pour lancer une entrée/sortie qui charge la page
manquante en mémoire centrale dans une case libre.
Définition : défaut de page
Le défaut de page est un déroutement qui oblige le processeur à suspendre
l'exécution du programme en cours pour lancer une entrée/sortie qui charge la
page manquante en mémoire centrale dans une case libre.
Les figures 3 et 4 illustrent le mécanisme de défaut de page. Le processus cherche à
convertir l'adresse logique <p,d>. Il accède donc à l'entrée de sa table des pages
correspondant à l'entrée de la page p, et teste la valeur du bit de validation. Celui-ci
est à faux (I) indiquant ainsi que la page n'est pas présente. Automatiquement,
puisque la traduction vers l'adresse physique ne peut pas être faite, le système lève
un défaut de page, qui entraîne une entrée/sortie pour charger la page manquante
en mémoire centrale.
Le défaut de page charge la page manquante dans une case libre de la mémoire
centrale, puis le système met à jour l'entrée de la table des pages correspondant à la
page p : le bit de validation passe à vrai et le numéro de case physique contenant la
page p est renseigné. Enfin, la traduction vers l'adresse physique reprend.
Défaut de page
Mémoire
Adresse logique
p
d
Registre adresse
Table des pages
1. Déroutement
E/S disque
adresse table
+
I
-
Table des pages
MPS 2002/2003
Fig 3 : Mécanisme du défaut de pages
3
Défaut de page
Mémoire
Adresse logique
p
4. Reprise
instruction
d
Registre adresse
Table des pages
adresse table
case libre
2 Chargement de la page
+
I
5
3. Mise à jour table des pages
Table des pages
MPS 2002/2003
4
Fig 4 : Mécanisme du défaut de pages
III- Les algorithmes de remplacement de pages
Lors d'un défaut de page, la page manquante est chargée dans une case libre. La
totalité des cases de la mémoire centrale peut être occupée : il faut donc libérer une
case de la mémoire physique globalement (parmi l'ensemble des cases) ou
localement (parmi les cases occupées par les pages du processus en défaut).
Le système d'exploitation utilise un algorithme pour choisir une case à libérer. Les
deux principaux algorithmes sont :
- FIFO (First In, First Out)
- LRU (Least Recently Used)
III.1- Algorithme de remplacement de pages FIFO
Avec cet algorithme, c'est la page la plus anciennement chargée qui est remplacée.
La figure 5 donne un exemple du fonctionnement de cet algorithme où l'on suppose
une mémoire centrale composée de trois cases initialement vides. La lettre D signale
l'occurrence de défaut de pages.
Algorithmes de remplacement de page
•
FIFO : la page la plus anciennement chargée est la page remplacée
Chaine de référence
7
0
7
7
0
D
D
1
2
0
3
0
7
2
2
2
2
0
0
0
3
1
1
1
D
D
4
2
3
0
4
4
4
0
3
3
2
2
2
1
0
0
0
3
3
D
D
D
D
MPS 2002/2003
D
D
5
Fig 5 : Remplacement de pages FIFO
III.2- Algorithme de remplacement de pages LRU
Avec cet algorithme, c'est la page la moins récemment accédée qui est remplacée.
La figure 6 donne un exemple du fonctionnement de cet algorithme où l'on suppose
une mémoire centrale composée de trois cases initialement vides. La lettre D signale
l'occurrence de défaut de pages.
Algorithmes de remplacement de page
•
LRU : la page la moins récemment accédée est la page remplacée
Chaine de référence
7
0
7
7
0
D
D
1
2
0
3
0
7
2
2
2
2
0
0
0
0
1
1
1
3
D
D
D
4
2
3
0
4
4
4
0
0
0
0
3
3
3
3
2
2
2
D
D
MPS 2002/2003
D
D
6
Fig 6 : Remplacement de pages LRU
Complément sur le format d'une entrée de la table des pages d'un processus.
Finalement, une entrée de la table des pages d'un processus comprendra souvent
les champs suivants :
- le bit V de validation pour indiquer si la page est présente ou non en
mémoire centrale
- le champ A pour Accès qui contient les informations pour l'algorithme de
remplacement de pages. Par exemple, pour l'algorithme FIFO, ce champ
contiendra la date de chargement de la page; pour l'algorithme LRU, la
date du dernier accès à la page.
- Le bit M pour Modification permet de savoir si la page a été modifiée lors
de sa présence en mémoire centrale. Si oui, il faudra réécrire cette page
sur le disque avant de l'écraser par une nouvelle page.
- Le champ D pour Droits, qui contient la définition des droits d'accès à la
page en lecture / écriture / exécution.
- Le champ n° de case physique, pour la conversion vers l'adresse
physique.
III.3- Algorithme pour la conversion d'une adresse logique paginée en
adresse physique.
Nous donnons ci-dessous le schéma général de l'algorithme suivi par le système
d'exploitation lors de la conversion d'une adresse logique vers une adresse
physique. Une adresse est un couple constitué des champs page et déplacement.
Procedure Conversion (in adresse_virtuelle, out adresse_physique)
debut
entrée := adresse_virtuelle.page + adresse_table(processus)
Si (entrée.V = FAUX)
alors
-- defaut de page
Charger_page(adresse_virtuelle.page, adresse_case);
entrée.V = vrai;
entrée. case := adresse_case;
fsi
adresse physique := adresse_case + adresse_virtuelle.deplacement;
return (adresse_physique);
fin
Procedure Charger_Page (in page, out case)
debut
Si (Trouver_case_Libre( ) = FAUX)
alors
Choisir_case_à_libérer (case_à_liberer, page_victime);
si (page_victime.M = Vrai)
alors
Ecrire_Disque(page_victime)
Fsi
Fsi
Lire_Disque(case_à_liberer, page)
return (case_à_liberer)
fin
IV- Notion d'écroulement
Défintion : Ecroulement
On appelle Ecroulement, une haute activité de pagination. Un processus
.
s'écroule lorsqu’il passe plus de temps à paginer qu'à s'exécuter
La figure 7 illustre ce phénomène. Elle représente le taux d'utilisation du processeur
en fonction du degré de multiprogrammation, c'est-à-dire en fonction du nombre de
processus chargés en mémoire centrale.
•
Sur cette figure, on voit clairement que l'utilisation du processeur augmente jusqu'à
un certain seuil au delà duquel cette utilisation chute complètement : cette chute
correspond à une trop grande activité de pagination des processus qui passent le
plus clair de leur temps en entrée/sortie car ils n'ont pas suffisamment de cases
mémoires disponibles pour contenir les pages relatives à leur espace de travail
courant.
Ecroulement
On appelle Ecroulement, une haute activité de pagination. Un processus
s'écroule lorsqu'il passe plus de temps à paginer qu'à s'exécuter.
MPS 2002/2003
Fig 7 : Phénomène d'écroulement
7
Téléchargement