Académique Documents
Professionnel Documents
Culture Documents
Syst' Emes D'exploitation Cours 5/10: M Emoire: Nicolas Sabouret
Syst' Emes D'exploitation Cours 5/10: M Emoire: Nicolas Sabouret
Systèmes d’Exploitation
Cours 5/10 : Mémoire
Nicolas Sabouret
Université Paris-Sud
Licence 3 - semestre S5
Plan
1 Fonctionnement de la mémoire
2 Pagination
3 Mémoire virtuelle
4 Conclusion
Plan
1 Fonctionnement de la mémoire
Principe général
Un peu de calcul. . .
Liaison d’adresse
2 Pagination
3 Mémoire virtuelle
4 Conclusion
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
UC
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
UC fetch
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
UC fetch
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
opcode bus
PC
UC fetch
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
UC
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
adresse bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
adresse bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
donnée bus
PC
adressage
UC
(lecture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
UC
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(écriture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(écriture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
adresse bus
PC
adressage
UC
(écriture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
adresse bus
PC
adressage
UC
(écriture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
bus
PC
adressage
UC
(écriture)
RADM
Rôle de la mémoire
Espace de stockage
Ensemble ordonné de cases indexée par leur adresse et contenant :
Des instructions → registre PC sur le processeur
Des données → registre RADM sur le processeur
donnée bus
PC
adressage
UC
(écriture)
RADM
Structure de la mémoire
Adressage
Chaque case mémoire est associée à une adresse (le numéro
de la case)
Cette adresse est obtenue depuis l’instruction en binaire
→ L’adresse est sur n bits
Structure de la mémoire
Adressage
Chaque case mémoire est associée à une adresse (le numéro
de la case)
Cette adresse est obtenue depuis l’instruction en binaire
→ L’adresse est sur n bits
Il y a donc 2n différentes adresses possibles (de 00 . . . 0 à
11 . . . 1)
→ La mémoire contient 2n cases
Structure de la mémoire
Adressage
Chaque case mémoire est associée à une adresse (le numéro
de la case)
Cette adresse est obtenue depuis l’instruction en binaire
→ L’adresse est sur n bits
Il y a donc 2n différentes adresses possibles (de 00 . . . 0 à
11 . . . 1)
→ La mémoire contient 2n cases
Exemple : 32 bits → 232 = 4 Go
Un peu de calcul. . .
Un peu de calcul. . .
Un peu de calcul. . .
Exemple
1 case mémoire = 1 octet de données (8 bits)
(c’est généralement le cas)
Ü 8 bits → 28 octets = 256o de RAM
Un peu de calcul. . .
Et après ?
On compte en Kilo, Méga, Giga, etc
210 = 1 Kilo
214 = 210 × 24 = 16 Kilo
Unités informatiques
Unités informatiques
Unités informatiques
Unités informatiques
En pratique
On utilise la notation 1 Ko pour indiquer 1 Kio (1024 octets)
→ On ne travaille JAMAIS avec des puissances de 10 !
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à 15 (décimal). . .
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Conversion d’adresse : 2 B 5 F
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Conversion d’adresse : 2 B 5 F
0010
Info32b Systèmes d’Exploitation Nicolas Sabouret 8/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe général Un peu de calcul. . . Liaison d’adresse
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Conversion d’adresse : 2 B 5 F
0010 1011
Info32b Systèmes d’Exploitation Nicolas Sabouret 8/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe général Un peu de calcul. . . Liaison d’adresse
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Conversion d’adresse : 2 B 5 F
0010 1011 0101
Info32b Systèmes d’Exploitation Nicolas Sabouret 8/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe général Un peu de calcul. . . Liaison d’adresse
Et les puissances de 16 ?
24 = 16
→ Avec 4 bits, on peut écrire les nombres de 0 à F (hexadécimal) !
Du coup, 32 bits = 8 caractères en hexa !
Hexadécimal
→ Il faut savoir convertir rapidement :
Base 10 0 1 2 3 4 5 6 7
Hexadécimal 0 1 2 3 4 5 6 7
Base 2 0000 0001 0010 0011 0100 0101 0110 0111
Base 10 8 9 10 11 12 13 14 15
Hexadécimal 8 9 A B C D E F
Base 2 1000 1001 1010 1011 1100 1101 1110 1111
Conversion d’adresse : 2 B 5 F
0010 1011 0101 1111
Info32b Systèmes d’Exploitation Nicolas Sabouret 8/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe général Un peu de calcul. . . Liaison d’adresse
Fonctionnement
Lecture et écriture
L’UC va récupérer les instructions dans la mémoire (fetch) ;
L’UC va récupérer des données (valeurs de variables) dans la
mémoire à partir de leur adresse ;
L’UC écrit des valeurs à une adresse donnée dans la mémoire.
bus
RAM
PC
UC
RADM
Fonctionnement
Lecture et écriture
L’UC va récupérer les instructions dans la mémoire (fetch) ;
L’UC va récupérer des données (valeurs de variables) dans la
mémoire à partir de leur adresse ;
L’UC écrit des valeurs à une adresse donnée dans la mémoire.
Édition de liens
Programme compilé vs processus
Adresses symboliques (noms de variables)
vs Adresses mémoires (binaires)
Exemple :
int a = 3;
a = a + 2;
Édition de liens
Programme compilé vs processus
Adresses symboliques (noms de variables)
vs Adresses mémoires (binaires)
Exemple :
@a memval 3
l d r r1 , a
int a = 3;
l d r r2 , #2
a = a + 2;
add r0 , r1 , r 2
s t r r0 , a
Édition de liens
Programme compilé vs processus
Adresses symboliques (noms de variables)
vs Adresses mémoires (binaires)
Exemple :
2B50 : ldr r1 , 2B1E
@a memval 3
2B51 : ldr r2 , 0002
l d r r1 , a
int a = 3; 2B52 : add r0 , r1 , r 2
l d r r2 , #2
a = a + 2; 2B53 : str r0 , 2B1E
add r0 , r1 , r 2
...
s t r r0 , a
2B1E : 0003
Édition de liens
Lors de la création de processus, l’OS instancie le programme.
Ü Transformer les noms abstraits des variables en adresses
Info32b Systèmes d’Exploitation Nicolas Sabouret 10/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe général Un peu de calcul. . . Liaison d’adresse
À la compilation
3 On connaı̂t l’adresse physique du programme et de toutes les
données
Ü Adresse physique des variables à la compilation
Exemple : routine de l’OS
À la compilation
Au chargement
3 La taille du programme (données+code+pile+tas) est fixée
Ü Code compilé translatable : adresses relatives au début du
programme
Ü Nécessite un registre de translation dans l’UC
À la compilation
Au chargement
À l’exécution
3 Lorsque le processus a besoin de plus de place
Ü Déplacer le processus + réédition de lien
Revoir la translation
Éventuellement, revoir les adresses relatives
À la compilation
Au chargement
À l’exécution
Notion de stub
3 Bibliothèques : ne pas charger plusieurs fois
Ü Chargement à la demande de code translatable (la
bibliothèque)
Ü Morceau de code remplaçable pour l’appel à la bibliothèque
UC
translation
UC
translation
UC
translation +
adresse physique
UC
translation +
adresse physique
Plan
1 Fonctionnement de la mémoire
2 Pagination
Allocation mémoire
Pagination
Pagination hiérarchique
3 Mémoire virtuelle
4 Conclusion
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Proc. 1
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Proc. 1 Proc. 2
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Problèmes
Des trous apparaissent : c’est la fragmentation
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Proc. 1 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
Proc. 1 P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
P5 P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
P6
RAM
P5 P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Les processus trop gros ne peuvent pas rentrer
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
P6
RAM
P5 P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Les processus trop gros ne peuvent pas rentrer
→ défragmenter
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
P6
RAM
P5 P4 Proc. 3
Problèmes
Des trous apparaissent : c’est la fragmentation
Les processus trop gros ne peuvent pas rentrer
→ défragmenter
Allocation mémoire
Principe
Multiprogrammation et temps partagé → placer les processus dans
la mémoire
RAM
P5 P4 Proc. 3 P6
Problèmes
Des trous apparaissent : c’est la fragmentation
Les processus trop gros ne peuvent pas rentrer
→ défragmenter
Fragmentation
Problème
Réduire la fragmentation
Limiter les opérations de de défragmentation
Fragmentation
Problème
Réduire la fragmentation
Limiter les opérations de de défragmentation
Stratégies d’allocation
Choisir dans quelle zone libre placer un processus Variante du
problème du bin packing
First Fit : premier bloc libre
Best Fit : plus petit bloc libre
Worst Fit : plus grand bloc libre
Fragmentation
Problème
Réduire la fragmentation
Limiter les opérations de de défragmentation
Stratégies d’allocation
Choisir dans quelle zone libre placer un processus Variante du
problème du bin packing
First Fit : premier bloc libre
Best Fit : plus petit bloc libre
Worst Fit : plus grand bloc libre
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
RAM
code, bibliothèques
Processus : environnement, tas, pile. . .
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
code, bibliothèques
Processus : environnement, tas, pile. . .
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : environnement, tas, pile. . .
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : 0 1 tas,2 pile. . .3
environnement,
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : 0 1 tas,2 pile. . .3
environnement,
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : 0 1 tas,2 pile. . .3
environnement,
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : 0 1 tas,2 pile. . .3
environnement,
Pagination
Principe
Découper la mémoire physique en blocs de taille Tc
constante, appelés cadres de pages
Découper l’espace mémoire utilisé par un processus en
paquets de x blocs de taille Tc , appelés pages
Ü Placer les pages dans les cadres
pages
code, bibliothèques
Processus : 0 1 tas,2 pile. . .3
environnement,
Avantages
Allocation mémoire
Allouer des processus dans des zones disjointes :
Ü Pas besoin de défragmenter !
Avantages
Allocation mémoire
Allouer des processus dans des zones disjointes :
Ü Pas besoin de défragmenter !
Adaptation
Lorsqu’un processus a besoin de plus de mémoire, rajouter des
pages
Ü Pas besoin de le ré-allouer entièrement
Avantages
Allocation mémoire
Allouer des processus dans des zones disjointes :
Ü Pas besoin de défragmenter !
Adaptation
Lorsqu’un processus a besoin de plus de mémoire, rajouter des
pages
Ü Pas besoin de le ré-allouer entièrement
Problèmes I
Nombre de cadres
Adresser les cadres (en binaire) → 2n cadres
Problèmes I
Nombre de cadres
Adresser les cadres (en binaire) → 2n cadres
Problèmes I
Nombre de cadres
Adresser les cadres (en binaire) → 2n cadres
Problèmes I
Nombre de cadres
Adresser les cadres (en binaire) → 2n cadres
Fragmentation
Tous les processus ne sont pas de taille k × 2m
Ü Entre 0 et 2m − 1 octets perdus par processus !
(moyenne = 1
2
cadre = 2m−1 octets)
Problèmes II
Adressage
Déterminer l’adresse physique à partir de l’adresse logique
RAM
0 3 1 2
Processus : 0 1 2 3
Problèmes II
Adressage
Déterminer l’adresse physique à partir de l’adresse logique
Adresse logique
Numéro de page (n bits) + décalage (m bits)
UC
page cadre
00 02
01 B2
02 1A
03 3B
04 3C
... ...
UC
page cadre
00 02
01 B2
02 1A
03 3B
04 3C
... ...
UC
numéro de page décalage
page cadre
00 02
01 B2
02 1A
03 3B
04 3C
... ...
UC
numéro de page décalage
page cadre
00 02
01 B2
02 1A
03 3B
04 3C
... ...
UC
numéro de page décalage
page cadre
00 02
01 B2
02 1A
03 3B
04 3C
... ...
UC
numéro de page décalage
UC
numéro de page décalage
Pagination hiérarchique
Problème
Grand espace d’adressage (ex : 32 bits)
Trop de pages (ex : n = 20, m = 12)
Grande table des pages → place mémoire perdue
220 lignes de 20 bits = 2,5 Mo par processus
Allocation et commutation plus coûteuse en temps
Pagination hiérarchique
Problème
Grand espace d’adressage (ex : 32 bits)
Trop de pages (ex : n = 20, m = 12)
Grande table des pages → place mémoire perdue
220 lignes de 20 bits = 2,5 Mo par processus
Allocation et commutation plus coûteuse en temps
Pages trop grosses (ex : n = 10, m = 22)
Fragmentation = 2m−1 → place mémoire perdue
221 octets = 2 Mo par processus
Pagination hiérarchique
Problème
Grand espace d’adressage (ex : 32 bits)
Trop de pages (ex : n = 20, m = 12)
Grande table des pages → place mémoire perdue
220 lignes de 20 bits = 2,5 Mo par processus
Allocation et commutation plus coûteuse en temps
Pages trop grosses (ex : n = 10, m = 22)
Fragmentation = 2m−1 → place mémoire perdue
221 octets = 2 Mo par processus
UC
UC
table page décalage
UC
table page décalage
Répertoire
de pages
n° adresse T.P.
UC
table page décalage
n° adresse T.P.
UC
table page décalage
n° adresse T.P.
page cadre
UC
table page décalage
n° adresse T.P.
page cadre
UC
table page décalage
n° adresse T.P.
page cadre
UC
table page décalage
n° adresse T.P.
page cadre
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages =
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Total = 220 × 20 ÷ 8 = 2,5 Mo par processus
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Total = 220 × 20 ÷ 8 = 2,5 Mo par processus
Pagination à 2 niveaux
n1 = 10, n2 = 10, m = 12
Répertoire =
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Total = 220 × 20 ÷ 8 = 2,5 Mo par processus
Pagination à 2 niveaux
n1 = 10, n2 = 10, m = 12
Répertoire = 210 lignes de 32 bits = 4 Ko
1 table de pages =
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Total = 220 × 20 ÷ 8 = 2,5 Mo par processus
Pagination à 2 niveaux
n1 = 10, n2 = 10, m = 12
Répertoire = 210 lignes de 32 bits = 4 Ko
1 table de pages = 210 lignes de 20 bits = 2,5 Ko
Exemple
Adresses sur 32 bits et cadres de 4 Ko → m=12
Pagination à 1 niveau
Table des pages = 2n lignes de n bits (ici, n = 20)
Total = 220 × 20 ÷ 8 = 2,5 Mo par processus
Pagination à 2 niveaux
n1 = 10, n2 = 10, m = 12
Répertoire = 210 lignes de 32 bits = 4 Ko
1 table de pages = 210 lignes de 20 bits = 2,5 Ko
Total = entre 6,5 Ko et 2,5 Mo par processus
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Ü Taille de la RAM = ?
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Quelques formules
Adresse physique sur k bits
Adresse logique sur k = n1 + n2 + m bits
Remarque
Pagination à 3 niveaux sur les processeurs 64 bits
Implémentation
Table des pages en RAM
Tous les calculs sont effectués au niveau matériel dans la
MMU
Registre d’adresse de la table des pages
Table des cadres libres
Cache matériel (TLB = Translation Lookaside Buffer)
stocke les couples (page,cadre)
Plan
1 Fonctionnement de la mémoire
2 Pagination
3 Mémoire virtuelle
Principe
Pagination à la demande
Allocation
4 Conclusion
Mémoire virtuelle
Problème
Nombre et taille des processus
Entre 200 et 500 processus en parallèle sur un PC
Gros processus : Eclipse = 250 Mo, données d’un jeu ≥ 1 Go
→ Somme des tailles des processus ≥ Capacité RAM
Mémoire virtuelle
Problème
Nombre et taille des processus
Entre 200 et 500 processus en parallèle sur un PC
Gros processus : Eclipse = 250 Mo, données d’un jeu ≥ 1 Go
→ Somme des tailles des processus ≥ Capacité RAM
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
page
page page
page
Mémoire page
page page
page
virtuelle
= page
page page
page
espace
adressable page
page page
page
(par processus)
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
page 0 pages
page 1 utilisées
page
page page
page
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
page 0 pages
page 1 utilisées
page 1
page
page page
page
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
page 0 pages
page 1
non
utilisées
page 2 page 1
page 3 page
page page
page
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
page 0 pages
page 1
non
utilisées
page 2 page 1
page 3 page
page page
page
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
Avantages
Possibilité de mettre plus de processus en parallèles
Le programmeur ne se préoccupe plus de la mémoire
Schéma de principe
Mémoire virtuelle
Chaque processus peut adresser plus d’espace qu’il n’a
effectivement en mémoire physique
Avantages
Possibilité de mettre plus de processus en parallèles
Le programmeur ne se préoccupe plus de la mémoire
Pagination à la demande
Table des pages : bit de validité (0=page sur le disque)
L’OS charge les pages manquantes depuis le disque vers la
RAM
Pagination à la demande
...
ldr r0, @a
ldr r1, @b
add r2, r0, r1
str r2, @c
...
Processus
Pagination à la demande
...
ldr r0, @a
1. référence
ldr r1, @b
add r2, r0, r1
str r2, @c
...
Table
des
Processus pages
Pagination à la demande
...
ldr r0, @a
1. référence
ldr r1, @b défaut
de page
add r2, r0, r1
str r2, @c
... – 0
Table
des
Processus pages
Pagination à la demande
OS
2. déroutement
...
ldr r0, @a
1. référence
ldr r1, @b défaut
de page
add r2, r0, r1
str r2, @c
... – 0
Table
des
Processus pages
Pagination à la demande
3. requête disque
OS
Disque
2. déroutement
...
ldr r0, @a
1. référence
ldr r1, @b défaut
de page
add r2, r0, r1
str r2, @c
... – 0
Table
des
Processus pages
Pagination à la demande
3. requête disque
OS 4. allocation UC à
un autre processus
Disque
2. déroutement
...
ldr r0, @a
1. référence
ldr r1, @b défaut
de page
add r2, r0, r1
str r2, @c
... – 0
Table
des
Processus pages
Pagination à la demande
3. requête disque
Disque
2. déroutement
...
ldr r0, @a
1. référence
ldr r1, @b
add r2, r0, r1
str r2, @c
...
Table
des
Processus pages
Pagination à la demande
3. requête disque
Disque
2. déroutement
6. chargement
page manquante
disponible
...
ldr r0, @a
1. référence
ldr r1, @b
add r2, r0, r1
str r2, @c
...
Table Mémoire
physique
des (RAM)
Processus pages
Pagination à la demande
3. requête disque
Disque
2. déroutement
6. chargement
page manquante
disponible
...
ldr r0, @a
1. référence
ldr r1, @b
add r2, r0, r1
7. mise à
str r2, @c jour table(s)
... n° cadre 1
Table Mémoire
physique
des (RAM)
Processus pages
Pagination à la demande
3. requête disque
Disque
2. déroutement
6. chargement
page manquante
disponible
...
ldr r0, @a
1. référence
ldr r1, @b
add r2, r0, r1
7. mise à
str r2, @c jour table(s)
... n° cadre 1
8. instruction
relancée
Table Mémoire
physique
des (RAM)
Processus pages
Temps d’accès
Propriété
Le temps d’accès est proportionnel à la probabilité d’avoir un
défaut de page
Accès disque
En pratique, M est 1000 fois plus petit que D.
Info32b Systèmes d’Exploitation Nicolas Sabouret 32/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe Pagination à la demande Allocation
Allocation
Problème
Combien de cadres (RAM) allouer à chaque processus
Propriétés
Plus de cadre par processus → moins de processus →
ralentissement
Moins de cadre par processus → plus de défauts →
ralentissement
Politiques d’allocation
Allocation équitable
Allocation proportionnelle
Allocation basée sur la priorité
Info32b Systèmes d’Exploitation Nicolas Sabouret 33/38
Fonctionnement de la mémoire Pagination Mémoire virtuelle Conclusion
Principe Pagination à la demande Allocation
Allocation équitable
Données
N cadres disponibles en RAM
P processus
Allocation équitable
Chaque processus reçoit N/P cadres
Le reste sert de tampon
Lors du remplacement de page, charger et relancer sans supprimer
l’ancienne page → réduction du nombre de défauts
Allocation équitable
Données
N cadres disponibles en RAM
P processus
Allocation équitable
Chaque processus reçoit N/P cadres
Le reste sert de tampon
Lors du remplacement de page, charger et relancer sans supprimer
l’ancienne page → réduction du nombre de défauts
Inconvénient
Tous les processus n’ont pas besoin de la même quantité de
mémoire. . .
Allocation proportionnelle
Données
N cadres disponibles en RAM
P processus
∀i ∈ [1, P], Mi la taille de Pi (en mémoire virtuelle)
Allocation proportionnelle
On garde généralement un tampon de T pages
Pi reçoit (N − T ) × PMi cadres
i Mi
Allocation proportionnelle
Données
N cadres disponibles en RAM
P processus
∀i ∈ [1, P], Mi la taille de Pi (en mémoire virtuelle)
Allocation proportionnelle
On garde généralement un tampon de T pages
Pi reçoit (N − T ) × PMi cadres
i Mi
Inconvénient
Les petits processus font plus de défauts de pages en pratique. . .
car ils utilisent simultanément une plus grande part de leur code que les gros
processus.
Données
N cadres disponibles en RAM
P processus
∀i ∈ [1, P], prioi la priorité de Pi
Plan
1 Fonctionnement de la mémoire
2 Pagination
3 Mémoire virtuelle
4 Conclusion
Synthèse