Mémoire Virtuelle Flashcards
(66 cards)
Quel est le principe de la mémoire virtuelle ?
Donner à chaque processus sa propre mémoire
Qu’est-ce que la mémoire ?
Vaste tableau de M octets/cases, numérotées de 0 à M-1
Indice = adresses
Contenu = complète liberté du programmeur
C’est quoi l’allocation ?
C’est décider ou mettre quoi dans la mémoire
Physiquement, c’est quoi la mémoire ?
On a une hiérarchie mémoire : cache, RAM, disque, avec coopération entre noyau et le matériel. Plusieurs technologies aux latences très différentes.
Quels sont les deux technologies pour la mémoire vive ?
SRAM (Static Random Access Memory)
DRAM (Dynamic Random Access Memory)
Quel est le principe de la mémoire cache ?
Garder en local d’une copie des données récemment accedées dans la SRAM. en cas de défaut de cache, aller chercher dans la DRAM tout un bloc avec les données voisines
Comment on implémente la mémoire cache ?
On ajoute une petite SRAM dans le CPU, d’une capacité de quelques Mio
[ CPU <—> Cache ] <——> [DRAM]
Indirection ou déréferencement
Accès indirect à quelque chose, i.e. au travers d’une référence.
All problems in CS can be solved by another level of indirection, David Wheeler
Abstraction : adressage direct
Réalité : adressage virtuel
- le CPU ne manipule que des adresses virtuelles, par l’intermédiaire du MMU
Un accès à la mémoire (lecture/écriture)
= un mot = un paquet de plusieurs octets consécutifs que le CPU va lire en un seul coup
Problème 0 : La mémoire est trop lente
Solution : mémoire cache
Memory Management Unit (MMU)
Composant qui traduit chaque adresse virtuelle (VA) en une adresse physique (PA)
= dictionnaire VAS —> PAS
- reconfigurée par l’OS à chaque changement de contexte
Fonctionnement de la MMU
—————— ——— —————
| VM des proc |—> |MMU |—> |Mém. phys.|
——————— ——— —————
VA Indirection PA
Mémoire centrale
= mémoire physique = DRAM
Virtualisation des adresses
On aura un espace d’adressage virtuel (VAS) et un espace d’adressage physique (PAS)
Le VAS
VAS = {0, 1, …, N-1}
Le CPU exprime les adresses sur n bits, N = 2^n
Chaque processus a un VAS privé
Le PAS
PAS = {0, 1, …, M-1}
On aura une adresse pour chaque octet de [DRAM + périphériques]
Les adresses sont exprimées sur m bits : M=2^m
Problème 1 : pas assez de mémoire, vive
Solution : va-et-vient (swapping)
—> ne pas tous stocker en DRAM, mais utiliser la DRAM comme un cache pour les VAS
Problème 2 : gestion des zones libres/occupées en DRAM
Solution : pagination (paging) = une unique taille de bloc
Problème 3 : isolation entre processus, protection du noyau
Garantir que les VAS ne se chevauchent pas dans le PAS
Problème 4 : partage de données en processus
Une même page peut apparaître dans deux VAS.
Pagination à la demande
Utiliser le disque pour agrandir la mémoire vive
↕️
Utiliser la DRAM comme un cache du disque
[CPU] <— [MMU] —> [DRAM] <——> [Disk]
Numérotation des pages
• Numéro de page virtuelle : VPN ∈{0, 1, …, X−1} où X = N ÷P
• Numéro de page physique : PPN ∈{0, 1, …, Y−1} où Y = M ÷P
Traduire des adresses
C’est traduire le numéro des pages : à chaque accès mémoire, le MMU a pour rôle de traduire le VPN en son PPN