Gestion mémoire

Transcription

Gestion mémoire
Problématique
La Pagination
La segmentation
Gestion mémoire
Etienne Lozes
ENS Cachan
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Les mémoires
Trois facteurs majeurs :
la capacité
le coût
le temps d’accès
Quelques exemples de mémoires :
les registres, le cache mémoire, la mémoire vive (RAM), clé USB,
le cache disque, le disque dur.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Rôle du gestionaire mémoire
Quand intervient-t-il ?
création d’un processus
activation/désactivation d’un processus
supression d’un processus
Que fait-il ?
partage la mémoire disponible entre les processus
⇒ protection.
cartographie la mémoire
alloue/désalloue de la mémoire dynamiquement pour les
besoin d’un processus
assure la cohérence de la mémoire
optimise l’utilisation de la mémoire
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Mémoire étendue : le va-et-vient (ou SWAP)
Principe : On dispose d’un segment mémoire ”mobile”, chargé en
mémoire vive par le système quand il est nécessaire, remis sur
disque sinon.
Deux solutions : une copie de sûreté sur disque ou pas.
Le problème des entrées-sortie : quand un processus emet une
requête, il donne l’adresse en mémoire physique où il souhaite
recevoir le résultat. Deux solution : soit c’est un tampon en
mémoire système (inamovible), soit la mémoire d’un processus en
attente d’E/S est déclarée inamovible.
Question
Pourquoi la solution avec copie de sûreté, bien qu’offrant moins de
mémoire étendue, peut-elle être plus efficace ?
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
La mémoire vue par le processus... et en vrai
Vue du processus
un segment :
En vrai
PILE
PILE
0..777
TAS
CODE
PARTITION SWAP
RAM
TAS
0..FF
777...FFF
cache
CODE
FFF7...FFFF
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Les premiers systèmes : la place du système en mémoire
Monoprogrammation
système en mémoire RAM ou dans le BIOS :
OS en
ROM
Programme
utilisateur
Programme
utilisateur
OS
en RAM
Gestionnaires
periph. en ROM
Programme
utilisateur
OS en RAM
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Les premiers systèmes : multiprogrammation à partitions
fixes (MFT)
Ordonnancement sur une ou plusieurs files
Partitition 1
tâches en attente
Partition 2
Partition 3
Partition 4
Partition 5
OS
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Translation d’adresse et protection
Comment le processus va-t-il lire/écrire au bon endroit ?
A la charge du système : traduire toutes les adresses.
Première approche (dépassée, cf. OS/MFT) : La translation est
faite au chargement du programme.
Deuxième approche Les registres base et limite : chaque adresse
est recalculée par le microprocesseur.
Question
Comparer ces deux approches en terme d’efficacité et de sûreté.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Partitions de tailles arbitraires
Problème de la cartographie
deux approches : table de bits ou liste de blocs
1 bloc
(octet,mot, etc.)
blocs occupés
table de bit
101100111000
liste chaînée
B
F
B
F
B
B
F
Lien avec allocation mémoire pour un programme (malloc).
Questions
1 Comparer ces deux approches.
2
Comment se fait la mise à jour de la liste des blocs ?
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
La recherche d’un segment libre
Comment garer sa voiture en pensant aux autres ?
Deux (fausses) bonnes idées :
best fit et worst fit.
⇒ sur simulation, beaucoup de fragmentation interne
Marche mieux :
first fit, next fit.
Avec plusieurs listes de blocs, selon leurs tailles :
quick fit, on cherche dans la liste de taille adaptée à la demande.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
La fragmentation et le GC
La fragmentation : de nombreuses petites zones libres
inexpoitables car non contigües.
Défragmentation : opération délicate, il faut remettre à jour tous
les liens.
Le Garbage Collector : désalloue les cellules qui ne peuvent plus
être utilisée
Analyse d’accessibilité. Algorithme mark and sweep.
Stop and copy : le garbage collector defragmenteur : On recopie
toutes les cellules utilisées en les plaçant de façon contiguë.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Problématique
Que faire si un programme a besoin de plus de mémoire que celle
disponible en mémoire vive ?
En pratique, un programme a besoin de certaines portions de la
mémoire à certaines phases de son exécution.
Les recouvrements (overlay) : solution aujourd’hui dépassée,
consistait pour le programmeur à définir les diverses phases du
programme et les portions mémoires associées à chacune (cf.
Turbo Pascal).
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Mémoire virtuelle et pagination
60k-64k
X
56k-60k
X
52k-56k
X
48k-52k
7
44k-48k
X
40k-44k
5
36k-40k
X
32k-36k
X
28k-32k
X
24k-28k
3
page virtuelle
32k-36k
cadre de page
24k-28k
20k-24k
4
20k-24k
16k-20k
X
16k-20k
8k-16k
6
8k-16k
4k-8k
1
4k-8k
0k-4k
2
0k-4k
MEMOIRE
VIRTUELLE
MEMOIRE
VIVE
Etienne Lozes
Table des pages :
consultée par la Memory
Management Unit (MMU) pour
faire la traduction d’adresse.
Si page non chargée : défaut de
page.
Interruption de processus et
déroutement système.
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
La table des pages en pratique
La traduction d’adresse. On lit les bits de poids fort de l’adresse
virtuelle (le numéro de page), et on le remplace par le numéro de
cadre correspondant.
Dimension de la table des pages NBPages =
taille(MemVirtuelle)
taille(page)
On veut taille(MemVirtuelle) grande et taille(page) petite.
Exemple : adressage 32 bits, taille(MemVirtuelle)= 4Go,
taille(page)= 4ko, on a 220 pages !
Autre point : chaque processus a sa propre table des pages.
Morale : La table des pages prend beaucoup de place en mémoire,
et ne peut être stockée au niveau de la MMU.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Mémoire associative : Translation Lookaside Buffer
En pratique, on réutilise souvent les mêmes pages pendant un
certain temps ⇒ utilisons un cache !.
Le TLB est un petit cache de la table des pages, comportant en
gros entre 8 et 64 entrées de la table des pages.
A chaque instruction, la MMU parcours tout le TLB pour faire la
conversion d’adresse.
En cas de défaut de TLB : soit c’est le matériel qui met à jour si
il connait l’adresse de la table des pages, soit il alerte le système
qui fait ce qu’il faut
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Contenu de la table des pages
Un exemple d’entrée dans la table des pages
référencé
protection
numéro du cadre de pag
cache
inhibé
modifié
(dirty bit)
présent/absent
N.B : pas l’adresse de la copie en swap (info réservée au système)
Bit de cache : si résultat d’E/S attendu doit y être sauvé, sinon
inutile.
Application de la pagination : pages partagées, ”copy on write”
pour le fork.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Autres cartographies
But : réduire la taille de la table des pages
table des pages multi-niveaux (une table de tables)
table des pages inverses (une entrée par cadre de page)
⇒ recherche + longue, mais on compte sur le TLB.
Méthode utilisée pour les adressages 64 bits.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Et si on changeait la taille des pages ?
Comment évaluer la bonne taille p à prendre pour une page ?
Même si facilités matérielles, le système peut faire son propre choix.
Le coût de la fragmentation interne
En moyenne, la dernière page d’un segment est remplie à moitié. On perd
donc p2 octets par segment.
Le coût de la table des pages
Si chaque processus utilise en moyenne un espace s, il utilise ps entrées
dans la table des pages. Si e est la taille de chaque entrée, on a une perte
de ps e
Choix de l’optimal On cherche donc à minimiser la perte ≈
L’optimum est
√
p = 2se
Etienne Lozes
Gestion mémoire
p
2
+ ps e.
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Et les défauts de page ?
Comment choisir quelle page sera remplacée par celle demandée ?
Le remplacement de page optimal :
c’est celui qui ralentit le moins le système. Il y a plusieurs causes
de ralentissement et donc plusieurs critères qui guident le choix.
La page remplacée sera-t-elle utilisée à nouveau ?
Si oui, on aimerait que ce soit le plus tard possible. Mais
comment savoir quelle page sera consultée le plus tard ?
La page remplacée doit-elle être recopiée sur disque ?
Si elle n’a pas été modifiée, ce n’est pas la peine.
Problèmatique plus générale que la pagination : c’est la même
chose quand on gère n’importe quel cache (cache disque, cache
mémoire, cache web,etc).
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Importance de la page remplacée
Une intuition trompeuse :
”Avec davantage de mémoire vive, j’aurais moins de défauts de
page”.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Importance de la page remplacée
Une intuition trompeuse :
”Avec davantage de mémoire vive, j’aurais moins de défauts de
page”.
L’anomalie de Belady pour le FIFO.
Un processus utilise 5 pages virtuelles dans l’ordre suivant :
0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4
Exercice
Comparer le nombre de défauts de pages avec 3 cadres de pages,
puis avec 4, pour une politique de remplacement FIFO (c’est la
page la plus anciennement chargée qui est sélectionnée). Où est
l’erreur ?
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Importance de la page remplacée
Une intuition trompeuse :
”Avec davantage de mémoire vive, j’aurais moins de défauts de
page”.
L’anomalie de Belady pour le FIFO.
Un processus utilise 5 pages virtuelles dans l’ordre suivant :
0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4
Exercice
Comparer le nombre de défauts de pages avec 3 cadres de pages,
puis avec 4, pour une politique de remplacement FIFO (c’est la
page la plus anciennement chargée qui est sélectionnée). Où est
l’erreur ?
Solution : 9 défauts de pages avec 3 cadres, 10 avec 4.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Importance de la page remplacée
Une intuition trompeuse :
”Avec davantage de mémoire vive, j’aurais moins de défauts de
page”.
L’anomalie de Belady pour le FIFO.
Un processus utilise 5 pages virtuelles dans l’ordre suivant :
0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4
Exercice
Comparer le nombre de défauts de pages avec 3 cadres de pages,
puis avec 4, pour une politique de remplacement FIFO (c’est la
page la plus anciennement chargée qui est sélectionnée). Où est
l’erreur ?
Solution : 9 défauts de pages avec 3 cadres, 10 avec 4.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algos Not Recently Used (NRU) et seconde chance
Un heuristique très sensée :
Ce qui a été utilisé récemment sera utilisé prochainement.
Bits R et M d’une page :
R=1 si la page a été consultée depuis la dernière remise à 0.
M=1 si la page a été modifiée depuis le chargement.
Algo NRU : remise à 0 des R périodique, (R = 1, M = 1) sera
choisi, sinon (R = 0, M = 1), sinon (R = 1, M = 0), et sinon
(R = 0, M = 0).
Algo de la seconde chance : Algo FIFO (cf Belady), mais avant
de sortir une page, on teste R. Si c’est 1, on remet à 0 et on remet
en fond de file. Si aucune page avec R = 0, on applique FIFO.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algorithme Least Recently Used (LRU)
Un heuristique très sensée :
Ce qui a été utilisé récemment sera utilisé prochainement.
Algo LRU : On sort la page utilisée le moins récemment.
Différentes implémentations :
on maintient la date de dernière utilisation de chaque page, et
on liste toutes les pages chargées quand il y a un défaut de
page pour sélectionner la moins récente.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algorithme Least Recently Used (LRU)
Un heuristique très sensée :
Ce qui a été utilisé récemment sera utilisé prochainement.
Algo LRU : On sort la page utilisée le moins récemment.
Différentes implémentations :
on maintient la date de dernière utilisation de chaque page, et
on liste toutes les pages chargées quand il y a un défaut de
page pour sélectionner la moins récente.
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algorithme Least Recently Used (LRU)
Un heuristique très sensée :
Ce qui a été utilisé récemment sera utilisé prochainement.
Algo LRU : On sort la page utilisée le moins récemment.
Différentes implémentations :
on maintient la date de dernière utilisation de chaque page, et
on liste toutes les pages chargées quand il y a un défaut de
page pour sélectionner la moins récente. ⇒ LENT !
on maintient le classement. Une astuce au niveau matériel.
ancienneté
=
nbre noirs
sur colonne
page
référencée
1
2
3
Etienne Lozes
4
3
Gestion mémoire
1
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algorithme Least Recently Used (LRU)
Un heuristique très sensée :
Ce qui a été utilisé récemment sera utilisé prochainement.
Algo LRU : On sort la page utilisée le moins récemment.
Différentes implémentations :
on maintient la date de dernière utilisation de chaque page, et
on liste toutes les pages chargées quand il y a un défaut de
page pour sélectionner la moins récente. ⇒ LENT !
on maintient le classement. Une astuce au niveau matériel.
⇒ COUTEUX !
ancienneté
=
nbre noirs
sur colonne
page
référencée
1
2
3
4
3
1
Approximation en adaptant NRU : les bits de vieillissement
R contient n bits, Rt+1 = 12 Rt + 2n δused .
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Algorithme Least Recently Used (LRU)
Remarque : LRU ne souffre pas de l’anomalie de Belady (algo dit
”de pile”).
Algo LRU : On sort la page utilisée le moins récemment.
Différentes implémentations :
on maintient la date de dernière utilisation de chaque page, et
on liste toutes les pages chargées quand il y a un défaut de
page pour sélectionner la moins récente. ⇒ LENT !
on maintient le classement. Une astuce au niveau matériel.
⇒ COUTEUX !
ancienneté
=
nbre noirs
sur colonne
page
référencée
1
2
3
4
3
1
Approximation en adaptant NRU : les bits de vieillissement
R contient n bits, Rt+1 = 12 Rt + 2n δused .
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Le remplacement de pages en pratique
LRU idéal mais lourd à implémenter.
une notion commode : l’espace de travail (WS), ie les k dernières
pages référencées. On maintient cette information, quand on
commute un processus, on peut rétablir tout son espace de travail.
Une bonne approximation
de WS : les pages
référencées dans les τ
dernières (nano)secondes.
Implémentation : WSClock
L’algo de la seconde chance
avec prise en compte du
temps de dernière
utilisation
Etienne Lozes
bit de saleté
temps de dernière
utilisation
M
6265 1
5968 0
Gestion mémoire
M
5873 0
bit R
7368 1
M
6743 1
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
L’implémentation d’encore plus près
Le démon de pagination
Copier des pages sales en tâche de fond.
Pour le WSClock, on a deux aiguilles, une en tête pour le démon, une qui
suit pour sélectionner la page à remplacer.
Savoir quelle page fait défaut au début d’un défaut de page
Au mieux, le matériel stocke l’adresse non traitée par la MMU dans un
registre.
Au pire, le système doit relire l’instruction fautive et trouver tout seul...
Reprendre l’instruction après remplacement de page.
Plus ou moins facile suivant le cpu.
Problème avec certains cpus : le pc peut être incrémenté entre le début
de lecture de l’instruction et le défaut de page, les instructions peuvent
être de longueurs variables, etc.
move
1000
6
1002
2
pc au moment du défaut de page
1004
comment savoir que 6 n’est pas le code d’une instruction ?
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Problématique
Remplacement de page
Dans la pratique
Les choix du concepteur
Quel algorithme de remplacement ?
Echelle du remplacement de page
Local au processus ou global ? si un processus fait un défaut de
page, je remplace sa plus vieille page ou la plus vieille page de tous
les processus ?
Demand paging ou préchargement ?
Le tout noyau ou l’intelligence en espace utilisateur ?
un gestionnaire de défauts de page, calcule la page, dialogue avec la
MMU, reprend l’instruction
un pager implémente l’algo de remplacement de page.
Pager en mode utilisateur ? Efficacité vs clarté et sûreté du code...
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
L’idée de segmentation
Les limites du segment unique par processus
pile thr1
pile thr2
tas
code
un programme
multithread en vrai ...
tas
pile thr 2
pile thr 1
code
segment 1
segment 2
segment 3
segment 4
... et comment on voudrait l'avoir!
plus généralement, intéresse tout programme qui a plusieurs zones
dynamiques à gérer.
La mémoire segmentée :
adresse = numéro de segment + décalage
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
La mémoire segmentée
La mémoire segmentée :
adresse = numéro de segment + décalage
code Proc 1
libre
systeme
librairie partagée
Les gains
Facilité de compilation (édition de liens).
Facilité de partage mémoire.
Facilité de protection.
tas proc 2
pile proc 1
libre
code proc 3
Les défauts
La fragmentation externe.
Ralentissement ?
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Segmentation avec pagination : le Pentium
12k
0
28k
P1
8
k
0
12k
0
12k
28k
0
P2
8
k
0
20k
0
LDT
ou
GDT
0
12k
table
des
pages
20k
0
0
P3
segments globaux
(GDT)
20k
0
0
8k
0
12k
segments locaux
(LDT)
Mémoire virtuelle paginée
0
Mémoire virtuelle linéaire
de P2
16K segments / proc, chaque
segment contenant jusqu’à 1Go
de mots de 32 bits.
Etienne Lozes
Mémoire physique
segments typés (code ou données)
mécanismes de protectiont
Gestion mémoire
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
Exemple : P2 fait un ”call
172.”
1
.
on consulte le registre
CS (code segment, DS
pour les données) :
contient le sélecteur de
segment courant pour
les données
Sélecteur de segment
Etienne Lozes
13 bits
Index
Gestion mémoire
1
G
/
L
2
DPL
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
.
Exemple : P2 fait un ”call
172.”
1
2
on consulte le registre
CS (code segment, DS
pour les données) :
contient le sélecteur de
segment courant pour
les données
Sélecteur de segment
13 bits
1
G
/
L
Index
2
DPL
Descripteur de segment
si bit G/L à 1, le
segment est global, on
consulte la table des
segments globaux, sinon
la table propre à P2.
⇒ descripteur de
segment (64 bits) :
Etienne Lozes
base 24-31
G
limite
16-19
P DPL S
base 0-15
limite 0-15
32 bits
Gestion mémoire
type
base 16-23
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
Exemple : P2 fait un ”call
172.”
3
.
on interprète limite (20
bits) en fonction de la
granularité
(G=0,octets,G=1,
pages),
Sélecteur de segment
13 bits
1
G
/
L
Index
2
DPL
Descripteur de segment
base 24-31
G
limite
16-19
P DPL S
base 0-15
limite 0-15
32 bits
Etienne Lozes
Gestion mémoire
type
base 16-23
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
Exemple : P2 fait un ”call
172.”
3
4
.
on interprète limite (20
bits) en fonction de la
granularité
(G=0,octets,G=1,
pages),
Sélecteur de segment
on vérifie
172<base-limite, le
niveau de privilège
(DPL), le type, la
présence (P)
Descripteur de segment
13 bits
Index
base 24-31
G
limite
16-19
P DPL S
base 0-15
Gestion mémoire
type
limite 0-15
32 bits
Etienne Lozes
1
G
/
L
2
DPL
base 16-23
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
Exemple : P2 fait un ”call
172.”
Niveaux de privilèges
3
on interprète limite (20
bits) en fonction de la
granularité
(G=0,octets,G=1,
pages),
4
on vérifie
172<base-limite, le
niveau de privilège
(DPL), le type, la
présence (P)
ou anneaux de protection.
0 = noyau
1= appels systèmes
2=bibliothèques partagées
3=programmes utilisateurs
Porte d’appel
si on appelle du code un niveau inférieur,
déplacement doit être 0 ;
pour les données, on doit rester à son
niveau (ou au-dessus).
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Exemple : conversion d’adresse pour du code
Exemple : P2 fait un ”call
172.”
6
Niveaux de privilèges
si la pagination n’est
pas activée (bit de
contrôle global), on a
une adresse physique 32
bits,
si elle est activée, on
passe aux tables des
pages (vu l’espace
virtuel, 2 niveaux de
page)
ou anneaux de protection.
0 = noyau
1= appels systèmes
2=bibliothèques partagées
3=programmes utilisateurs
Porte d’appel
si on appelle du code un niveau inférieur,
déplacement doit être 0 ;
pour les données, on doit rester à son
niveau (ou au-dessus).
Etienne Lozes
Gestion mémoire
Problématique
La Pagination
La segmentation
Pentium : sur le papier et en pratique
Pourquoi on est content
exploit d’être compatible 80/86
plein de possibilités : segmentation pure, pagination pure,
segmentation avec pagination
mécanisme de portes d’appel ”sensé”
La mauvaise nouvelle
Aucun système n’utilise la segmentation !
Il n’y a pas de vérification de non recouvrement des segments
Chutes de performances si segmentation activée
autres raisons ?....
Etienne Lozes
Gestion mémoire