systèmes et réseaux gestion de la mémoire
TRANSCRIPT
Systèmes et réseaux Gestion de la mémoire
Vania Marangozova-Martin Maître de Conférences, UGA
Mémoire principale vs mémoire secondaire
▶ Mémoire principale • mémoire vive • mémoire physique • RAM (Random Access Memory)
▶ C'est une mémoire volatile • ce qui est contenu dans la mémoire principale
est perdu quand on éteint l'ordinateur ▶ Mémoire secondaire
• disque dur, clé USB, ... ▶ C'est une mémoire persistante
• les données existent même si l'ordinateur n'est pas en marche
V.Marangozova-Martin Systèmes et réseaux 2
Parenthèse : SCM : Storage Class Mémory
▶ Mémoires persistantes ▶ Avec des performances proches des mémoire volatiles ▶ Avec une basse consommation énérgétique ▶ Exemple : Intel Optane
▶ Défis de recherche sur leur utilisation ▶ Adaptation des structures de données, des algorithmes, ...
V.Marangozova-Martin Systèmes et réseaux 3
La structure de la RAM
▶ Un tableau de cases : cases ou cellules mémoire ▶ Chaque case = un nombre défini de bits ▶ Chaque case a un numéro : adresse (mémoire) ▶ Mot mémoire : information contenue dans une case
• 16 bits : Intel x86 • 32 bits : IA32, i386 • 64 bits : IA64
V.Marangozova-Martin Systèmes et réseaux 4
Occupation de la mémoire
▶ La mémoire est occupée par les processus ▶ blocs mémoire dédiés
• instructions • données
▶ Multi-programmation ▶ plusieurs processus s'exécutent "en même temps"
V.Marangozova-Martin Systèmes et réseaux 5
Mémoire physique versus mémoire d'un processus
▶ La mémoire principale d'une machine est une ressource matérielle manipulée par le processeur.
▶ La mémoire d'un processus n'est manipulée que par le processus. ▶ Appelée mémoire logique ou mémoire virtuelle d'un processus ▶ La taille mémoire du processus est proportionnelle à la taille du
programme (code + calculs + données)
▶ Mémoire processus << mémoire principale ▶ ∑ mémoires processus >> mémoire principale
V.Marangozova-Martin Systèmes et réseaux 6
Mémoire vive
noyau monprocessus
Le rôle du système : un scénario réel
▶ Et si pintos a besoin de plus de mémoire? ▶ Et si emacs a besoin de plus de mémoire que ce qui est
disponible sur la machine? ▶ Et si pintos se trompe et écrit à l'adresse 0x7100? ▶ Comment et quand gcc pourrait savoir que son espace
mémoire commence à l'adresse 0x4000? ▶ Et si emacs n'utilise pas toute la mémoire qui lui est
allouée? V.Marangozova-Martin Systèmes et réseaux 7
Le rôle du système
▶ Protection ▶ Un processus ne devrait pas pouvoir lire/écrire dans la mémoire d'un
autre ▶ Transparence
▶ Un processus ne devrait pas demander un emplacement particulier en mémoire.
▶ Son fonctionnement ne devrait pas dépendre de son emplacement ▶ Optimisation
▶ Maximiser le nombre de processus exécutés avec performances acceptables.
▶ Maximiser le remplissage de la mémoire
V.Marangozova-Martin Systèmes et réseaux 8
Mécanismes de gestion mémoire
▶ Partitionnement ▶ Découpage mémoire pour les différents processus
▶ Allocation ▶ Choix de partie(s) mémoire pour un processus
▶ Chargement ▶ Gestion des adresses mémoire
V.Marangozova-Martin Systèmes et réseaux 9
Chargement et adresses mémoire
▶ Adresse physique ▶ adresse absolue
▶ Adresse dans processus = logique ▶ adresse relative
V.Marangozova-Martin Systèmes et réseaux 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230
Non
util
isé
ZON
E TE
XTE
ZON
E D
ON
NEE
TAS
PILE
ZON
E U
Traduction des adresses logiques : à la compilation?
▶ Si génération d'adresses physiques • Le processus manipule des adresses absolues • Le processus ne peut être chargé qu'à un seul endroit en mémoire :
PB! ▶ Pour cela, génération d'adresses logiques
• Pour permettre chargement processus à différents endroits (code relogeable)
V.Marangozova-Martin Systèmes et réseaux 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230
1 2 30 1 2 30
Traduction des adresses logiques : au chargement?
▶ Si le processus est transformé au moment du chargement, cela veut dire qu'il ne pourra être chargé qu'à un seul endroit
V.Marangozova-Martin Systèmes et réseaux 12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230
Traduction des adresses logiques : à l'exécution?
▶ L'adresse physique est calculée au dernier moment ▶ à l'aide de matériel spécifique ▶ MMU = Memory Management Unit
V.Marangozova-Martin Systèmes et réseaux 13
CPU
14000
+
registre de base
adresse logique
346
MMU
Mémoireadresse physique
14346
Partitionnement et allocation de la mémoire
▶ Comment découper la mémoire ▶ et décider quelle zone pour quel processus ▶ pour que
▶ le calcul soit rapide ▶ les structures de données de gestion soit petites ▶ le max de mémoire soit utilisé ▶ le max de processus soient exécutés
V.Marangozova-Martin Systèmes et réseaux 14
Côté utilisateur...
▶ En fonction du langage, la gestion de la mémoire est explicite ou cachée ▶ Exemples : C – explicite, Java – cachée
▶ Dans les langages à gestion de mémoire explicite ▶ il faut s'assurer que les variables (structures de données) existent bien en
mémoire ▶ on fait la distinction entre
• les données déclarées et allouées statiquement : le compilateur est au courant
• les données allouées dynamiquement
V.Marangozova-Martin Systèmes et réseaux 15
Côté utilisateur ... (2)
▶ Gestion de la mémoire : fonctions d'allocation et de libération de la mémoire ▶ En C : malloc/free
V.Marangozova-Martin Systèmes et réseaux 16
int * p;p = malloc (sizeof(int));
if ( p == NULL ){ fprintf(stderr,"Allocation impossible \n"); exit(EXIT_FAILURE);}
*p = 10;
Côté utilisateur ... (3)
V.Marangozova-Martin Systèmes et réseaux 17
int * p;p = malloc (sizeof(int));
if ( p == NULL ){ fprintf(stderr,"Allocation impossible \n"); exit(EXIT_FAILURE);}
*p = 10;
Mémoire d'un processus
@
le place de ptype int*
*pce qui est pointé par ptype int
10
Côté utilisateur ... (3)
V.Marangozova-Martin Systèmes et réseaux 18
int * p;p = malloc (sizeof(int));...*p = 10;
free(p)
Mémoire d'un processus
@
le place de ptype int*
*pce qui est pointé par ptype int
10
Côté utilisateur ... (3)
V.Marangozova-Martin Systèmes et réseaux 19
int * p;p = malloc (sizeof(int));...*p = 10;
free(p)
Mémoire d'un processus
@
le place de ptype int*
tas
tas
pile
Côté utilisateur ... (4)
V.Marangozova-Martin Systèmes et réseaux 20
int * p;p = malloc (sizeof(int));...*p = 10;
Mémoire d'un processus
@
le place de ptype int*
*pce qui est pointé par ptype int
10
Optimiser l'espace mémoire
▶ Eviter la fragmentation ▶ Externe
▶ Interne
V.Marangozova-Martin Systèmes et réseaux 21
Partitionner la mémoire... (1)
▶ En zones fixes à taille égale...
▶ Simple ☺ ▶ Nombre de processus prédéfini " ▶ Fragmentation interne " ▶ Fragmentation externe : pb de décision de la taille des partitions, que
faire des "gros" processus?
V.Marangozova-Martin Systèmes et réseaux 22
Comment savoir quelle partition est libre?
▶ Utiliser un vecteur de bits ▶ 5 partitions = 5 bits
▶ 4GB/5 => 1 partition est de taille 800MB! ▶ Si on utilise une taille standard de 4KB,
nous aurons 4GB/4KB = 232 / 212 =220 partitions ▶ 220 bits = 217 octets = près d'1MB pour le vecteur de bits
V.Marangozova-Martin Systèmes et réseaux 23
0 0 0 0 0
Partitionner la mémoire... (2)
▶ En zones fixes à taille variable
▶ Attente même si partitions libres " ▶ Toujours le pb de la taille des partitions
V.Marangozova-Martin Systèmes et réseaux 24
Partitionner la mémoire...(3)
▶ Partitions dynamiques, en fonction de la taille du processus
V.Marangozova-Martin Systèmes et réseaux 25
Partitions dynamiques à taille variable
V.Marangozova-Martin Systèmes et réseaux 26
Comment on gère l'espace libre?
▶ Liste chaînée
V.Marangozova-Martin Systèmes et réseaux 27
1024 512 X
1024 512 X512
Comment on gère l'espace libre? (2)
▶ La liste chaînée est elle-même en mémoire
▶ Dans les partitions occupées, il faut aussi de l'information de gestion
V.Marangozova-Martin Systèmes et réseaux 28
1024
512
X
512
1024
512
X
512
Evaluation de la stratégie des partitions dynamiques à taille variable ▶ Pas de grosses structures de données (+) ▶ Listes triées ▶ Temps d'accès à une zone de taille suffisante (-) ▶ Calcul d'adresses pour libération de zones (-) ▶ Problèmes de fragmentation (-)
V.Marangozova-Martin Systèmes et réseaux 29
1024
512
X
512
Bilan des stratégies à zones contiguës
▶ Quelque soit la taille de la zone, la mémoire peut devenir insuffisante ▶ Swapping : tout le processus ▶ Réorganisation de la mémoire : compactage ▶ Ramasse-miettes
▶ Coûteux
V.Marangozova-Martin Systèmes et réseaux 30
La pagination
▶ Le processus est découpé et chargé en morceaux en mémoire principale
▶ Mémoire logique et mémoire physique découpées en utilisant la MÊME taille de zone
▶ Mémoire physique : frames ▶ Mémoire logique : pages
V.Marangozova-Martin Systèmes et réseaux 31
0 1 2 3 4 5 6 7 8 9
Mémoire physique
0 1 2 3
0 41 32 73 0Mémoire logique
Table des pages
Traduction d'adresse
V.Marangozova-Martin Systèmes et réseaux 32
pageframe 0
pageframe 1
pageframe 2
pageframe Y
…
pageframe 3
physical memory
offsetphysical address
page frame #page frame #
page table
offsetvirtual address
virtual page #
Traduction d'adresse (2)
▶ Adresse logique (noPage, deplacement) ▶ Mémoire 2m
▶ Page 2n
V.Marangozova-Martin Systèmes et réseaux 33
page Y
déplacement
Numéro page p Déplacement d
m-n bits n bits
adresse mémoire
Traduction d'adresse (3)
▶ Exemple avec adresse 32 bits ▶ la mémoire 232
▶ taille page 4KB = 212
▶ nombre de pages 220
▶ Adresse virtuelle 0x13325328 ▶ deplacement 0x328, page 0x13325 ▶ dans la page des tables page 0x13325 -> 0x03004 ▶ l'adresse physique est 0x03004328
V.Marangozova-Martin Systèmes et réseaux 34
La table des pages
▶ Page Table Entries (PTEs) ▶ V indique sue le numéro de pages est valide
• page éventuellement non chargée ▶ R indique si la page a été accédée ▶ M indique si la page a été modifiée ▶ PP contrôlent les opérations authorisées
• read, write, execute ▶ le numéro de page donne le numéro de la page physique
V.Marangozova-Martin Systèmes et réseaux 35
numéro de pagePPMRV202111
Evaluation
▶ Fragmentation ☺ ▶ pas de fragmentation externe ▶ très peu de fragmentation interne
▶ Ralentissement des accès mémoire " ▶ indirections
▶ La taille pour stocker la table des pages peut être très importante " ▶ si un processus occupe toute la mémoire 232
▶ la table des pages doit pouvoir contenir 220 PTEs ▶ 4 bytes/PTE = 4MB par table
• sachant que chaque processus a sa propre table • 25 processus = 100MB de tables
V.Marangozova-Martin Systèmes et réseaux 36
x86
V.Marangozova-Martin Systèmes et réseaux 37
• 4x210 = taille d'une page• Page Directory tient dans une page
x86-64
V.Marangozova-Martin Systèmes et réseaux 38
Mémoire virtuelle : principes
▶ Chargement partiel ▶ Les processus ne sont chargés que partiellement. ▶ Les parties non chargées sont stockées sur de la mémoire secondaire
(disque) et sont chargées à la demande(Swapping) ▶ Le temps de swap est diminué, puisque ce n'est pas un processus
entier qui est chargé/déchargé, mais une partie uniquement.
V.Marangozova-Martin Systèmes et réseaux 39
Mémoire virtuelle
V.Marangozova-Martin Systèmes et réseaux 40