40
Systèmes et réseaux Gestion de la mémoire Vania Marangozova-Martin Maître de Conférences, UGA [email protected]

Systèmes et réseaux Gestion de la mémoire

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Systèmes et réseaux Gestion de la mémoire

Systèmes et réseaux Gestion de la mémoire

Vania Marangozova-Martin Maître de Conférences, UGA

[email protected]

Page 2: Systèmes et réseaux Gestion de la mémoire

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

Page 3: Systèmes et réseaux Gestion de la mémoire

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

Page 4: Systèmes et réseaux Gestion de la mémoire

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

Page 5: Systèmes et réseaux Gestion de la mémoire

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

Page 6: Systèmes et réseaux Gestion de la mémoire

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

Page 7: Systèmes et réseaux Gestion de la mémoire

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

Page 8: Systèmes et réseaux Gestion de la mémoire

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

Page 9: Systèmes et réseaux Gestion de la mémoire

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

Page 10: Systèmes et réseaux Gestion de la mémoire

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

Page 11: Systèmes et réseaux Gestion de la mémoire

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

Page 12: Systèmes et réseaux Gestion de la mémoire

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

Page 13: Systèmes et réseaux Gestion de la mémoire

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

Page 14: Systèmes et réseaux Gestion de la mémoire

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

Page 15: Systèmes et réseaux Gestion de la mémoire

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

Page 16: Systèmes et réseaux Gestion de la mémoire

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;

Page 17: Systèmes et réseaux Gestion de la mémoire

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

Page 18: Systèmes et réseaux Gestion de la mémoire

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

Page 19: Systèmes et réseaux Gestion de la mémoire

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*

Page 20: Systèmes et réseaux Gestion de la mémoire

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

Page 21: Systèmes et réseaux Gestion de la mémoire

Optimiser l'espace mémoire

▶  Eviter la fragmentation ▶  Externe

▶  Interne

V.Marangozova-Martin Systèmes et réseaux 21

Page 22: Systèmes et réseaux Gestion de la mémoire

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

Page 23: Systèmes et réseaux Gestion de la mémoire

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

Page 24: Systèmes et réseaux Gestion de la mémoire

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

Page 25: Systèmes et réseaux Gestion de la mémoire

Partitionner la mémoire...(3)

▶  Partitions dynamiques, en fonction de la taille du processus

V.Marangozova-Martin Systèmes et réseaux 25

Page 26: Systèmes et réseaux Gestion de la mémoire

Partitions dynamiques à taille variable

V.Marangozova-Martin Systèmes et réseaux 26

Page 27: Systèmes et réseaux Gestion de la mémoire

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

Page 28: Systèmes et réseaux Gestion de la mémoire

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

Page 29: Systèmes et réseaux Gestion de la mémoire

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

Page 30: Systèmes et réseaux Gestion de la mémoire

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

Page 31: Systèmes et réseaux Gestion de la mémoire

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

Page 32: Systèmes et réseaux Gestion de la mémoire

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 #

Page 33: Systèmes et réseaux Gestion de la mémoire

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

Page 34: Systèmes et réseaux Gestion de la 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

Page 35: Systèmes et réseaux Gestion de la mémoire

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

Page 36: Systèmes et réseaux Gestion de la mémoire

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

Page 37: Systèmes et réseaux Gestion de la mémoire

x86

V.Marangozova-Martin Systèmes et réseaux 37

•  4x210 = taille d'une page•  Page Directory tient dans une page

Page 38: Systèmes et réseaux Gestion de la mémoire

x86-64

V.Marangozova-Martin Systèmes et réseaux 38

Page 39: Systèmes et réseaux Gestion de la mémoire

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

Page 40: Systèmes et réseaux Gestion de la mémoire

Mémoire virtuelle

V.Marangozova-Martin Systèmes et réseaux 40