Mémoire Virtuelle Flashcards

1
Q

Quel est le principe de la mémoire virtuelle ?

A

Donner à chaque processus sa propre mémoire

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qu’est-ce que la mémoire ?

A

Vaste tableau de M octets/cases, numérotées de 0 à M-1
Indice = adresses
Contenu = complète liberté du programmeur

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

C’est quoi l’allocation ?

A

C’est décidé ou mettre quoi dans la mémoire

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Physiquement, c’est quoi la mémoire ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quels sont les deux technologies pour la mémoire vive ?

A

SRAM (Static Random Access Memory)
DRAM (Dynamic Random Access Memory)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quel est le principe de la mémoire cache ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Comment on implémente la mémoire cache ?

A

On ajoute une petite SRAM dans le CPU, d’une capacité de quelques Mio

[ CPU <—> Cache ] <——> [DRAM]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Indirection ou déréferencement

A

Accès en direct à 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Abstraction : adressage direct

A

Réalité : adressage virtuel
- le CPU ne manipule que des adresses virtuelles, par l’intermédiaire du MMU

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Un accès à la mémoire (lecture/écriture)

A

= un mot = un paquet de plusieurs octets consécutifs que le CPU va lire en un seul coup

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Problème 0 : La mémoire est trop lente

A

Solution : mémoire cache

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Memory Management Unit (MMU)

A

Composant qui traduit chaque adresse virtuelle (VA) en une adresse physique (PA)
= dictionnaire VAS —> PAS
- reconfigurée par l’OS à chaque changement de contexte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Fonctionnement de la MMU

A

—————— ——— —————
| VM des proc |—> |MMU |—> |Mém. phys.|
——————— ——— —————
VA Indirection PA

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Mémoire centrale

A

= mémoire physique = DRAM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Virtualisation des adresses

A

On aura un espace d’adressage virtuel (VAS) et un espace d’adressage physique (PAS)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Le VAS

A

VAS = {0, 1, …, N-1}
Le CPU exprime les adresses sur n bits, N = 2^n
Chaque processus a un VAS privé

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Le PAS

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Problème 1 : pas assez de mémoire, vive

A

Solution : va-et-vient (swapping)
—> ne pas tous stocker en DRAM, mais utiliser la DRAM (à vérif) comme un cache pour les VAS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Problème 2 : gestion des zones libres/occupées en DRAM

A

Solution : pagination (paging) = une unique taille de bloc

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Problème 3 : isolation entre processus, protection du noyau

A

Garantir que les VAS ne se chevauchent pas dans le PAS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Problème 4 : partage de données en processus

A

Une même page peut apparaître dans deux VAS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Pagination à la demande

A

Utiliser le disque pour agrandir la mémoire vive
↕️
Utiliser la DRAM comme un cache du disque

[CPU] <— [MMU] —> [DRAM] <——> [Disk]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Numérotation des pages

A

• 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Traduire des adresses

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Algorithme de traduction VA —> PA

A

1) Calculer VPN et PO
VA = VPN x P + PO
(VPN = VA ÷ P et PO = VA mod P)

2) Trouver le PPN correspondant au VPN grâce à PT

3) Calculer PA
PA = PPN x P + PO
NB : offset PO identique sur VP et PP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Swap file

A

Le fichier servant d’espace d’échange, dans lequel est stocké le contenu des processus « alloués sur le disque »

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Latence disque

A

Trop importante pour faire attendre le CPU
=> DRAM = 10 à 100 fois plus lent que SRAM/CPU
=> disque = 1000 à 100 000 fois plus lent que DRAM

28
Q

Qui gère la pagination à la demande ?

A

Trop complexe pour être géré purement en matériel
=> le mécanisme est implémenté par le noyau, avec la coopération du matériel

29
Q

Bloc lors de la pagination

A

Unique taille P = 2^p
- disque dur géré par blocs appelés secteurs
- DRAM par blocs appelés pages physiques
- VAS par blocs appelés pages virtuelles

30
Q

Les VAS sont des vues sur la mémoire physique

A

En vérité chaque donnée est toujours bien stockée en DRAM, mais visible depuis le CPU seulement à une adresse virtuelle

31
Q

VA -> PA

A

VA ——-> VPN et PO VPN ——> PPN
P PT

PA = PPN x P + PO

32
Q

Implémentation des calculs d’adresses

A

Taille de la page = 2^P
Donc division entière par P, modulo P, multiplication par P et addition de l’offset = gratuite

—-) opération sur les bits

33
Q

Qu’est-ce que la table de pagination PT ?

A

C’est un dictionnaire, stocké en mémoire principale
Clé = VPN, Valeur = PPN + métadonnées
[Clé + Valeur] = Page Table Entry PT

34
Q

1 processus =

A

1 VAS = 1 PT

35
Q

Mémoire virtuelle paginée

A

1) CPU demande à accéder à une adresse virtuelle VA
2) MMU consulte le bon PTE pour connaître le PPN
3) MMU transmets la requête traduite PA sur le bus système
4) Réponse transmise au CPU sans intervention de la MMU

36
Q

Validité du PTE

A

On aura différents comportements en fonction de si la page est accessible ou non.
swapped-out ou uncached pages
unallocated ou unmapped pages

Implémenté par un drapeau dans le PTE (valid bit)

37
Q

Du point de vue de la MMU, page présente en DRAM =

A

Accès possible = PTE valide
Si CPU essaye d’accéder, MMU traduit vers adresse physique

38
Q

Du point de vue de la MMU, page absente en DRAM =

A

Accès impossible = PTE invalide
Si CPU essaye d’accéder, MMU lève une interruption

39
Q

Quand le PTE est invalide

A

MMU lève une interruption logicielle (trappe)
Le CPU saute dans le noyau et effectue l’ISR associée, avec une différence si page non-allouée ou si déchargée

40
Q

Si lorsque le CPU saute dans le noyau la page non allouée

A

Erreur irrécupérable : le noyau tue le processus fautif (segmentation fault)

41
Q

Si lorsque le CPU saute dans le noyau la page est déchargée

A

Défaut de page (page fault) : le noyau doit charger la page en DRAM

42
Q

Défaut de page

A
  1. CPU demande une certaine adresse virtuelle
  2. MMU trouve un PTE invalide dans la PT : elle envoie une IRQ
  3. OS vérifie que la page virtuelle demandée existe bien.
  4. OS trouve une page physique libre (parfois il faut décharger=swap out une autre page)
  5. OS charge=swap in la page demandée depuis le disque

ici : latence disque = I/O burst > changement de contexte, execution d’un autre proc pour rentabiliser le CPU

  1. Lorsque la page est chargée : OS met à jour le PTE dans la PT
  2. OS rend la main au processus d’origine
43
Q

Principe de localité des accès

A

Des adresses proches sont accédées à des instants proches

44
Q

Performances

A

AMAT, thrashing, …

45
Q

Average Memory Access Time

A

AMAT = page hit time + (page fault rate x page fault penalty)

Les défauts de pages doivent rester rares

46
Q

Page hit time

A

≈ latence DRAM ≈ 50 ms

47
Q

Page fault penalty

A

≈ latence disque ≈ 5 ms

48
Q

Working Set d’un processus

A

C’est l’ensemble des pages virtuelles accédées récemment par ce processus

49
Q

Thrashing (écroulement soudain des performances)

A

Se produit lorsque
Somme(Working Set Sizes) > taille(DRAM)

  • l’écroulement soudain des performances est causés par un excès de défauts de page.

Remède = réduire le degré de multiprogrammation.

50
Q

Comment gère-t-on les zones libres et occupées en drame ?

A

Allocation dynamique de pages : appel système mmap()

51
Q

mmap()

A

include <sys/mman.h>

void * mmap(NULL, size_t len, int prot, int flags, 0, 0);

renvoie l’adresse virtuelle de la nouvelle région

len > le noyau allouera toujours un nb entier de pages
prot > PROT_READ, PROT_WRITE, PROT_EXEC
flags > MAP_ANONYMOUS | MAP_PRIVATE

52
Q

Notion de swap file

A

Memory swapping = va-et-vient entre DRAM et un swap file
Swap in lors d’un défaut de page
Swap out pour libérer des pages physiques

53
Q

MAP_ANONYMOUS

A

swap depuis/vers un fichier anonyme
Allocation paresseuse de la région, page par page

  • le premier accès dans une page causera un défaut
  • le noyau alloue (et efface) une page physique quelconque
54
Q

MAP_FILE

A

swap depuis/vers un fichier ordinaire
Contenu initial de la région = lu depuis le fichier
Lecture paresseuse, seulement lorsque défaut de page

55
Q

Memory-Mapped I/O

A

Communication avec les périphériques via leurs adresses physiques

En général : adresses MMIO réservées au noyau + drivers

Et adresses DRAM allouées au processus userland

56
Q

Isolation entre processus

A

Chaque processus dispose d’un VAS individuel
> l’OS maintient une table de pagination pour chaque processus

57
Q

Partage entre processus

A

Une même page peut être présente dans plusieurs VAS (page physique visible depuis plusieurs processus)

58
Q

Partage entre processus et projection des pages

A
  • en lecture seule
  • en lecture/écriture
  • en copy-on-write
59
Q

Projection en lecture seule

A

Ne consomme aucun espace supplémentaire sur le disque (ex, le fichier executable)

60
Q

Projection en lecture/écriture

A

Mémoire partagée, permet la communication entre plusieurs processus

61
Q

Projection en copy-on-write

A

Duplication paresseuse : éviter de stocker deux fois des pages identiques.

Idée : ne pas dupliquer les données immédiatement mais attendre qu’une des deux copies soit effectivement modifiée (fork() astucieux)

62
Q

Dupliquer un processus

A

Dédoubler son PCB et son VAS

63
Q

Paramètres flags contrôlant partage dans MAP_ANONYMOUS

A

si flags = MAP_ANONYMOUS | MAP_SHARED
- processus enfants pourront accéder

si flags = MAP_ANONYMOUS | MAP_PRIVATE
- isolation via Copy-On-Write

64
Q

Signature de mmap dans le cas d’un MAP_FILE

A

void* mmap(…, …, int fd, int offset);
avec fd = file descriptor retourné par open

65
Q

Paramètres flags dans le cas d’un MAP_FILE

A

si flags = MAP_FILE | MAP_SHARED
- swap vers le fichier d’origine

si flags = MAP_FILE | MAP_PRIVATE
- Copy-On-Write puis swap vers fichier anonyme

66
Q

Protection des périphériques matériels

A

Il suffit pour le noyau de s’assurer que chaque processus ne voit jamais les adresses physiques des périphériques