Chap10-1 - Mémoire virtuelle

Download Report

Transcript Chap10-1 - Mémoire virtuelle

Chapitre 10
Mémoire virtuelle
Virtuel est quelque chose qui n’est pas dans
le matériel, elle est créée par le logiciel
http://w3.uqo.ca/luigi/
Chap 10
1
Mémoire Virtuelle






Chap 10
Pagination sur demande
Problèmes de performance
Remplacement de pages: algorithmes
Allocation de cadres de mémoire
Emballement
Ensemble de travail
2
Concepts importants du Chap. 10




Localité des références
Mémoire virtuelle implémentée par va-et-vient des pages,
mécanismes, défauts de pages
Adresses physiques et adresses logiques
Temps moyen d’accès à la mémoire


Algorithmes de remplacement pages:








Chap 10
Récriture ou non de pages sur mém secondaire
OPT, LRU, FIFO, Horloge
Fonctionnement, comparaison
Écroulement, causes
Ensemble de travail (working set)
Relation entre la mémoire allouée à un proc et le nombre
d’interruptions
Relation entre la dimension de pages et le nombre d’interruptions
Prépagination, post-nettoyage
Effets de l’organisation d’un programme sur l’efficacité de la
pagination
3
Ce que nous avons vu




Chap 10
Les mécanismes de la segmentation et
pagination permettent d’obtenir une bonne
utilisation de la mémoire
Les processus peuvent être éparpillés où il
y a de l’espace en mémoire
Par l’entremise de différents tableaux
d’adresses de base
La protection et le partage d’informations
peuvent être obtenus par extension des
mêmes mécanismes
4
La mémoire virtuelle est une application du
concept de hiérarchie de mémoire

Des concepts très semblables
s’appliquent aux mécanismes de la
mémoire cache
 Cependant
dans ce cas les mécanismes sont
de matériel
Mécanismes cache
Méc. mém. virtuelle
Chap 10
RAM
(flash ou SSD)
5
Dorénavant: MP, MS

MP = mémoire principale, mémoire vive,
mémoire physique, RAM
 termes

équivalents
MS = mémoire secondaire qui, selon les
technologies, peut être disque ou flash ou
SSD (solid state disk)
 L’UCT
peut directement opérer seulement
en
MP
 Un transfert de données entre MP et MS est
une opération d’E/S
Chap 10
6
La mémoire virtuelle



Afin qu’un programme soit exécuté, il ne doit pas
nécessairement être tout en MP!
Seulement les parties qui sont en exécution ont
besoin d’être en MP
Les autres parties peuvent être sur MS, prêtes à
être amenées en MP sur demande


Ceci rend possible l’exécution de programmes
beaucoup plus grands que la MP

Chap 10
Mécanisme de va-et-vient ou swapping
Réalisant une mémoire virtuelle qui peut être beaucoup
plus grande que la MP
7
De la pagination et segmentation à la mémoire virtuelle






Chap 10
Un processus est constitué de morceaux (pages ou segments) qui ne
sont pas nécessairement contigus en MP
Et peuvent être souvent déplacés
Adresses logiques sont traduites en adresses physiques au moment
de l’exécution
Donc: tous les morceaux d’un processus ne nécessitent pas d’être
en MP durant l’exécution
 L’exécution peut continuer à condition que la prochaine instruction (ou
donnée) est dans un morceau se trouvant en MP
La somme des mémoires logiques des procs en exécution
peut donc excéder la MP disponible
Une image de toute la mémoire logique des processus est gardée en
MS (disque ou flash) d’où les pages manquantes pourront être prises
au besoin
 Mécanisme de va-et-vien ou swapping
8
Mémoire/adresse logique et mémoire/adresse
virtuelle

L’idée de la mémoire virtuelle est la même
que celle de la mémoire logique,
 avec
l’extension que la mémoire virtuelle n’a
pas besoin d’être entièrement en mémoire
physique

L’idée de l’adresse virtuelle est la même
que celle de l’adresse logique
 avec
l’extension que l’adresse virtuelle peut
contenir plus de bits que ceux nécessaires
pour adresser la mémoire physique
Chap 10
9
Le concept de ‘permutation de mémoire’ d’il y a
longtemps était basé sur la même idée:
pas tout doit être en MP en même temps
Chap 10
10
Mémoire virtuelle:
résultat d’un mécanisme qui combine
la MP et les MS
v
i
Tableau de pages
MP
Chap 10
MS
11
Le principe de localité
Justification pratique du concept de mémoire
virtuelle
Chap 10
12
Localité et mémoire virtuelle



Chap 10
Principe de localité des références: les
références à la mémoire dans un processus
tendent à se regrouper
Donc: seule quelques pièces d’un processus
seront utilisées durant une petite période de
temps (pièces: pages ou segments)
Il y a une bonne chance de “deviner” quelles
seront les pièces demandées dans un avenir
rapproché
13
Exemple de localité de référence

Progr.

Processus qui exécute
une boucle sur une
structure de données:
Pendant l’exec de la
boucle, il utilisera
toujours les mêmes
pages


Donn.

Chap 10
Mém virtuelle d’un proc.
? pages dans ce cas
Une partie de sa
mémoire logique
Pour l’instant ce proc a
besoin de seulement ?
cadres de mémoire
14
Visualisation de la localité des références
Ce processus
consiste en 34 pages
mais peut exécuter
efficacement avec
moins de 34 cadres
de MP car il n’a
jamais besoin de
tous ses pages en
même temps
(Note: chaque point noir
représente une position de
mémoire visitée et on voit
seulement les pages 18-34)
Chap 10
15
Implémentation de la Mémoire Virtuelle
Chap 10
16
Analogie …


Chap 10
Un groupe de personnes mange sur une
table qui a moins de capacité que le
réfrigérateur
On mettra sur la table quelques plats au
début, puis on ajoutera des plats au fur et à
mesure qu’on en demandera
17
Pages en MP ou sur MS
Page A en MP et sur
MS.
MP
MS
Page E seulement sur
MS..
En ce moment, ce proc a besoin de seulement
? pages de MP pour exécuter
Chap 10
mém. secondaire
18
Nouveau format du tableau des pages (la même idée peut être
appliquée aux tableaux de segments)
Si la page est en MP ceci est
une adr. de MP
Bit
Adresse de la
présent
page
bit présent
1 si en MP
0 si en MS
sinon elle est une adresse de
MS
Au début, bit présent = 0 pour toutes les pages
Chap 10
19
Avantages du chargement partiel




Plus de processus peuvent être maintenus en exécution
Car seules quelques pièces sont chargées en MP pour chaque
processus
 L’usager est content, car il peut exécuter plusieurs processus et
faire référence à des grosses données sans avoir peur de remplir la
MP
 Avec plus de processus en MP, il est plus probable d’avoir un
processus dans l’état prêt, meilleure utilisation d’UCT
Plusieurs pages ou segments rarement utilisés n’auront peut être
pas besoin d`être chargés du tout
Il est maintenant possible d’exécuter un ensemble de processus
lorsque leur taille excède celle de la MP
 Il est possible d’utiliser plus de bits pour l’adresse logique que le
nombre de bits requis pour adresser la MP

Chap 10
Espace d ’adressage virtuel > > esp. d ’adressage physique
20
Mémoire Virtuelle: Pourrait Être Énorme!




Chap 10
Ex: 16 bits sont nécessaires pour adresser une
MP de 64KB
En utilisant des pages de 1KB, 10 bits sont requis
pour le décalage
Ceci laisserait 6 bits pour le numéro de page si
toutes les pages doivent rentrer dans 64KB
Mais pour l’adresse virtuelle nous pouvons
utiliser un nombre de bits qui excède 6, car toutes
les pages ne doivent pas être en MP
simultanément
 Dans quelques architectures, ces bits peuvent être
inclus dans des registres
 Adresse logique=adresse dans
l’instruction+registre
21
Mémoire Virtuelle

Pour une meilleure performance, la mémoire
virtuelle se trouve souvent dans une région
de MS qui est n’est pas gérée par le
système de fichiers


Chap 10
Mémoire va-et-vient, swap memory
La traduction de l’adresse virtuelle en
adresse physique est effectuée en utilisant
les mécanismes étudiés dans le chapitre
précédent.
22
Mémoire virtuelle: le mécanisme de va-et-vient
Tableau de pages
MS
MP
Chap 10
23
Exécution d’un Processus




Chap 10
Le SE charge la MP de quelques pièces (seulement)
du programme (incluant le point de départ)
Chaque entrée de la table de pages (ou segments)
possède un bit présent qui indique si la page ou
segment se trouve en MP
L’ensemble résident (résident set) est la portion du
processus se trouvant en MP
Une interruption est générée lorsque l’adresse
logique réfère à une pièce qui n’est pas dans
l’ensemble résident
 défaut de pagination, page fault
24
Exécution d’une défaut de page: va-et-vient plus en détail
MS
Mémoire
virtuelle
Chap 10
Une instruction ‘load M’ fait référence à une page en MS
25
Séquence d’événements pour défaut de page






Chap 10
Trappe au SE: page demandée pas en MP
 Processus est mis ‘en attente’
Sauvegarder registres et état du proc dans PCB
Un autre proc peut maintenant gagner l ’UCT
SE détermine si la page demandée est légale
 sinon: terminaison du processus
et trouve la position de la page sur MS
 dans le descripteur de la page
lire la page de MS dans un cadre de MP (supposons qu`il y en a!)
 exécuter les ops nécessaires pour lire la page
26
Séquence d’événements pour défaut de page (ctn.)

L’unité MS a complété le transfert et interrompt
l’UCT




sauvegarder les registres etc. du proc exécutant
SE met à jour le contenu du tableau des pages du
proc. qui a causé le défaut de page
Ce processus devient prêt=ready
À un certain point, il retournera à exécuter

la page désirée étant en mémoire, il pourra maintenant
continuer
Il s’agit d’un événement essentiellement
semblable à une E/S, mais probablement
ils sera traité différemment par le SE
(ajout d’un état: « en attente de pages »)
Chap 10
27
Temps moyen d’accès à la mémoire virtuelle
Supposons que:
• accès en MP: 100 nanosecs
• temps de traitement de défaut de page: 20 millisecs = 20,000,000
nanosecs (inclut le temps de lecture-écriture MS, disons disque)
• p: probabilité de ne pas trouver une page en MP (quantité entre 0 et 1)
Temps moyen d’accès mémoire virtuelle:
p x 20,000,000 + (1-p) x 100
(pas de défaut + défaut)
En utilisant la même formule, nous pouvons déterminer quel est le
nombre de défauts que nous pouvons tolérer, si un certain niveau de
performance est désiré (v. manuel).
P.ex. avec ces params, si le ralentissement à cause de pagination ne
peut pas excéder 10%, 1 seul défaut de pagination peut être toléré pour
chaque 2,000,000 accès de mémoire virtuelle.
Chap 10
(Temps d’accès disque réaliste
aujourd’hui= autour de 8ms)
28
Points de réfléxion


Exercice 1. Nous savons que seulement les pages ‘sales’
ont besoin d’être récrites en MS.
 Supposons que nous connaissons la probabilité m qu’une
page soit sale
 Supposons que le temps de traitement de lecture sur disque
soit la moitié du temps de lecture-écriture
 Comment refaire les calculs mentionnés dans ce cas
Exercice 2. Les mémoires secondaires flash ou SSD ont la
particularité que les lectures sont beaucoup plus rapides
que les écritures
 Une lecture pourrait prendre 0,1ms, une écriture 1,5ms
 Refaire les calculs mentionnés pour ce cas

Chap 10
Évidemment nous pouvons tolérer beaucoup plus de fautes de
pagination
29
Algorithmes de remplacement de pages
Chap 10
30
Analogie


La table sur laquelle un groupe mange est pleine, mais on
demande un nouveaux plat
 Faut en enlever
Quoi enlever?
 OPT: Le plat dont personne n’aura besoin dans un futur
prochain


LRU: Le plat moins récemment utilisé


Facile, mais donc le pain, l’eau, le sel?
Solution de compromis: enlever le plat le plus vieux à moins
qu’il n’ait été utilisé récemment

Chap 10
Difficile: Il faut se préoccuper de tracer l’utilisation
FIFO: Le plat qui a été plus longtemps sur la table (le plus
« vieux »)


Difficile ou impossible à savoir?
Algorithme CLOCK, à voir
31
La MP est pleine mais nous avons besoin d`une
page pas en MP
MP
Chap 10
MS
32
La page victime...
MS
MP
Chap 10
33
Remplacement de pages




Chap 10
Quoi faire si un processus demande une nouvelle page et il
n’y a pas de cadres libres en MP?
Il faudra choisir une page déjà en MP, appartenant au même
ou à un autre processus, qu’il est possible d ’enlever de la
MP
 la victime!
Un cadre de MP sera donc rendu disponible
Évidemment, plusieurs cadres de MP ne peuvent pas être
`victimisés`:
 p.ex. cadres contenant le noyau du SE, tampons d ’E/S...
34
Bit de modification, dirty bit




La ‘victime’ doit-elle être récrite en MS?
Seulement si elle a été changée depuis qu`elle a
été amenée en MP
 sinon, sa copie sur MS est encore fidèle
Bit de modif sur chaque descripteur de page
indique si la page a été changée
Donc pour calculer le coût en temps d’une
référence à la mémoire virtuelle il faut aussi
considérer la probabilité qu’une page soit ‘sale’ et
le temps de récriture dans ce cas
X
Chap 10
35
Algorithmes de remplacement pages

Choisir la victime de façon à minimiser le
taux de défaut de pages
 pas




Chap 10
évident!!!
Page dont nous n`aurons pas besoin dans
le futur? impossible à savoir!
Page pas souvent utilisée??
Page qui a été déjà longtemps en
mémoire???
etc. nous verrons...
36
Critères d’évaluation des algorithmes



Chap 10
Les algorithmes de choix de pages à
remplacer doivent être conçus de façon à
minimiser le taux de défaut de pages à
long terme
Mais ils ne peuvent pas impliquer des
inefficacités
Ni l’utilisation de matériel dispendieux
37
Critères d’efficacité

Il est intolérable d’exécuter un programme
logiciel chaque fois qu’une opération de
mémoire est exécutée
 Ceci
impliquerait des accès additionnels de
mémoire
 Les opérations qui doivent être faites à chaque
accès de mémoire doivent être câblées dans le
matériel

Chap 10
Cependant un programme peut être
exécuté chaque fois qu’il y a une faute de
pagination
38
Explication et évaluation des algorithmes

Nous allons expliquer et évaluer les algorithmes
en utilisant la chaîne de référence pages suivante
(livre de Stallings):
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2

Attention: les séquences d’utilisation pages ne
sont pas aléatoires...



Chap 10
Localité de référence
Ces références proviendront de plusieurs
processus
L’évaluation sera faite sur la base de cet exemple,
évidemment pas suffisant pour en tirer des
conclusions générales
39
Algorithmes pour la politique de remplacement

L’algorithme optimal (OPT) choisit pour
page à remplacer celle qui sera référencée
le plus tardivement dans le futur
 produit
le + petit nombre de défauts de page
 impossible à réaliser (car il faut connaître le
futur) mais sert de point de comparaison pour
les autres algorithmes:
 Ordre
chronologique d’utilisation (LRU)
 Ordre chronologique de chargement (FIFO)
 Deuxième chance ou Horloge (Clock)
Chap 10
40
Algorithmes pour la politique de remplacement


Chap 10
Ordre chronologique d’utilisation (LRU)
Remplace la page dont la dernière
référence remonte au temps le plus lointain
(le passé utilisé pour prédire le futur)
 En raison de la localité des références, il
s’agit de la page qui a le moins de chance
d’être référencée
 Performance pratique presque aussi bonne
que l’algo. OPT
41
Comparaison OPT-LRU


Stallings
Chap 10
Exemple: Un processus de 5 pages s’ìl n`y
a que 3 pages de MP disponibles.
Dans cet exemple, OPT occasionne 3+3
défauts, LRU 3+4.
LRU avait ôté la page 3 ne sachant pas qu’elle sera bientôt demandée
42
Note sur le comptage des défauts de page


Lorsque la MP est vide, chaque nouvelle
page que nous ajoutons est le résultat d’un
défaut de page
Mais pour mieux comparer les algorithmes,
il est utile de garder séparés ces défauts
initiaux
 car
leur nombre est le même pour tous les
algorithmes
Chap 10
43
Implémentation problématique de LRU

Chaque page peut être marquée (dans le
descripteur dans la table de pages) du temps de la
dernière référence:



besoin de matériel supplémentaire.
La page LRU est celle avec la + petite valeur de
temps (nécessité d’une recherche à chaque défaut
de page)
On pourrait penser à utiliser une liste de pages
dans l’ordre d ’utilisation: perte de temps à
maintenir et consulter cette liste (elle change à
chaque référence de mémoire!)

D’autres algorithmes sont utilisés:

Chap 10
LRU approximations
44
Premier arrivé, premier sorti (FIFO)




Chap 10
Logique: une page qui a été longtemps en
mémoire a eu sa chance d ’exécuter
Lorsque la mémoire est pleine, la plus
vieille page est remplacée. Donc: “first-in,
first-out”
Simple à mettre en application
Mais: Une page fréquemment utilisée est
souvent la plus vielle, elle sera remplacée
par FIFO!
45
Comparaison de FIFO avec LRU


Contrairement à FIFO, LRU reconnaît que les
pages 2 and 5 sont en cours d’utilisation
Dans ce cas, la performance de FIFO est moins
bonne:
 LRU
Chap 10
(Stallings)
= 3+4, FIFO = 3+6
46
Implantation de FIFO

Facilement implantable en utilisant un
tampon circulaire de cadres de mémoire
 Qui
ne doit être mis à jour que à chaque défaut
de page

Exemple: après la trace:
2
32152
2
5
Chap 10
1
La page 2, qui a été en mémoire
le plus longtemps, est la
prochaine victime, puis 1, puis 5
Cependant ceci est un mauvais
choix car 2 est très utilisée!
47
Problème conceptuel avec FIFO

Les premières pages amenées en MP sont
souvent utiles pendant toute l’exécution
d’un processus!
 variables

globales, programme principal, etc.
Ce qui montre un problème avec notre
façon de comparer les méthodes sur la
base d ’une séquence aléatoire:
 les
références aux pages dans un programme
réel ne seront pas vraiment aléatoires
Chap 10
48
CLOCK: c’est FIFO avec correctif



Chap 10
Enlever la page qui a été là le plus
longtemps
Mais ne pas l’enlever si elle a été utilisée
récemment
Bit ‘utilisé’ dans les cadres de mémoire
pour savoir quelles pages ont été utilisées
récemment
49
Algorithme CLOCK


Ajoutons un bit à chaque page, qui est mis à 1 chaque fois
que la page est utilisée
 1 est un astérisque * ci-dessous
Cependant pour toujours trouver de la place, ce bit est mis à
0 chaque fois qu’il est consulté
Après 2 3 2 1
2*
1*
Chap 10
3*
Au début, 2 n’est pas
sélectionné car elle a
été utilisée, mais
faisant le tour, tous les
bits sont tournés à 0
Après 2 3 2 1 5
5*
1
3
Le choix de 2 est encore mauvais
par rapport à la fréquence
d’utilisation passée, donc cette
méthode n’es pas parfaite …
50
L’algorithme de l’horloge CLOCK


Semblable à FIFO, mais il tient compte de l’utilisation
récente de pages
Les cadres qui viennent d’être utilisés (bit=1) ne sont pas
remplacées (deuxième chance)
Les cadres forment conceptuellement un tampon circulaire
 Lorsqu’une page est chargée dans un cadre, un pointeur pointe
sur le prochain cadre du tampon
Pour chaque cadre du tampon, un bit “utilisé” est mis à 1 (par le
matériel) lorsque:
 une page y est nouvellement chargée
 cette page est lue ou écrite ou exécutée
Le prochain cadre du tampon à être remplacé sera le premier
rencontré qui aura son bit “utilisé” = 0.
 Durant cette recherche, tout bit “utilisé=1 rencontré sera tourné à
0



Chap 10
51
Algorithme de l’horloge CLOCK: un exemple (Stallings).
Les pages sont en ordre FIFO
La page 727 est chargée dans le cadre 4.
La proch. victime est 5, si elle n’est pas utilisée avant
Chap 10
52
Comparaison: Horloge, FIFO et LRU


Chap 10

(Stallings)
Astérisque indique que le bit utilisé est 1
L’horloge protège du remplacement les pages
fréquemment utilisées en mettant à 1 le bit “utilisé” à
chaque référence
Fautes: LRU = 3+4, FIFO = 3+6, Horloge = 3+5
53
Détail sur le fonctionnement de l’horloge CLOCK
Tous les bits étaient à 1. Nous avons fait tout le
tour et donc nous avons changé le bit de toutes les
pages à 0. Donc la 1ère page est réutilisée.
Le pointeur pointe à la prochaine page à voir.
Chap 10
54
Matériel additionnel pour l’algo CLOCK



Chaque cadre de MP a un
bit ‘utilisé’ (use)
Quand le contenu du cadre
est utilisé, le bit est mis à 1
par le matériel
Le SE regarde le bit
1
0
0
S’il est 0, la page dans le
cadre peut être remplacée
 S’il est 1, il le met à 0

0
1
Mémoire
Chap 10
55
Noter différence

Bit ‘sale’ ‘dirty bit’ mentionné avant
 Indique
si la page a été modifiée=écrite après
son entrée en MP

Bit ‘utilisé’
 Indique
si la page a été lue ou écrite après son
entrée en MP

Chap 10
L’architecture Intel a les deux, et même
plus compliqué …
56
Résumé des algorithmes le plus importants
OPTIMAL
Le meilleur en principe mais pas implantable, utilisé
comme référence
LRU
Excellent en principe, mais demande du matériel
dispendieux
FIFO
Facile à implanter, mais peut écarter des pages très
utilisées
Horloge CLOCK
Modification de FIFO vers LRU:
Cherche à éviter d’écarter des pages récemment
utilisées (il pourrait ne pas réussir)
Les algorithmes utilisés en pratique sont des variations et
combinaisons de ces concepts
Chap 10
57
Algorithmes compteurs




Garder un compteur pour les références à chaque
page
LFU: Least Frequently Used: remplacer la pages
avec le plus petit compteur
MFU: Most Frequently Used: remplacer les pages
bien usées pour donner une chance aux nouvelles
Ces algorithmes sont d’implantation dispendieuse
et sont moins utilisés

Chap 10
Mise à jour de compteurs à chaque opération de
mémoire!
58
Utilisation d’une pile (stack)

Quand une page est utilisée, est mise au
sommet de la pile.
 donc
la page la plus récemment utilisée est
toujours au sommet,
 la moins récemment utilisée est toujours au
fond


Bonne implémentation du principe de
localité, cependant…
La pile doit être mise à jour chaque fois
qu’une page est utilisée
 Inefficace,
Chap 10
pas pratique
59
Anomalie de Belady

Pour quelques algorithmes, dans quelques
cas il pourrait avoir plus de défauts avec
plus de mémoire!
 p.
Chap 10
ex. FIFO, mais pas LRU, OPT, CLOCK
60
Situation considérée normale
Chap 10
61
Anomalie de Belady (FIFO)
Chap 10
Cas d’intérêt théorique:
+ de mémoire, + de fautes (v. livre)
62
Le Chapitre 10 continue…
Chap 10
63
Le problème de la Cohérence

Quand une variable peut être stockée à plusieurs
niveaux d’une hiérarchie de mémoire, nous avons
le problème de la cohérence:
 S’assurer que quand on obtient la valeur de cette
variable, n’importe à quel niveau qu’on la trouve,
elle soit toujours à jour

Nous avons vu comment ce problème est résolu dans le
cas de mémoire virtuelle
• récriture de la dernière valeur de MP à MS

D’autres méthodes ont été développées pour des cas plus
complexes
• Voir ‘cohérence de cache’ ou ‘cache coherence’
Chap 10
64
Chap 10
65