Systèmes d'Exploitation II
Chapitre 4
Gestion de la mémoire
Amine DHRAIEF
2ème année Licence
ESEN, Université De La Manouba
Introduction
'02 to '04 - 1GB to 2GB
'05 to '09 - 2GB to 4GB
'10 to today - 4GB to 64GB
Les programmes s’accroissent pour
remplir la mémoire disponible qui leur
est réservée
4/28/19
2
Introduction
• Souhaits des programmeurs
– Une mémoire infiniment grande
– Une mémoire infiniment rapide
– Non volatile
– Bon marché !
– Frein technologique → hiérarchie de la mémoire
• Hiérarchie de la mémoire
– Quelques MB de mémoire cache volatile, rapide et chère
– Quelques GB de mémoire rapidité moyenne, prix moyen
– Quelques TB de mémoire non volatile, lente, mémoire de
masse
4/28/19
3
Introduction
4/28/19
4
Introduction
• Gestionnaire de la mémoire :Entité du S.E qui
gère l’hiérarchie de la mémoire
1)Garde trace de la partie de la mémoire qui est en
cours d’utilisation et celle qui ne l’est pas.
2)Allouer de la mémoire au processus.
3)Libérer la mémoire à la fin de l’exécution des
processus.
4/28/19
5
Abstraction de la mémoire? NON !
● « nom féminin. Opération intellectuelle qui consiste à isoler
par la pensée l'un des caractères de quelque chose et à le
considérer indépendamment des autres caractères de
l'objet. »
source : Larousse
● « en architecture des systèmes informatiques, l'abstraction
est une représentation abstraite commune des objets
permettant d'en simplifier et d'en unifier la manipulation »
source : www.wikipeda.fr
4/28/19
6
Abstraction de la mémoire? NON !
• Avant 1980: on ne disposait pas d’abstraction
– MOV REGISTER1, 1000
– on fait passer le contenu de l’emplacement mémoire 1000 dans
le registre REGISTER1
– Il n’était pas possible d’exécuter deux programmes en même
temps
• Le modèle de mémoire présenté au programmeur
correspondait tout simplement à la mémoire physique
– Un ensemble d’adresse numérotées de 0 à une valeur maximale
– Chaque adresse désignant une cellule contenant un certain
nombre de bit (8 bits)
4/28/19
7
Abstraction de la mémoire? NON !
• Même si le modèle ne reflète que la mémoire physique, il peut
exister plusieurs variantes
– (a) S.E en bas de la mémoire vive RAM
– (b) S.E en haut de la ROM (système embarqué)
– (c) gestionnaire des périphérique en haut de la ROM (BIOS), S.E en bas de la
RAM (MSDOS)
• Les modèle (a) et (c) représentent un inconvénient majeur: un
bogue dans un programme utilisateur peut engendrer des
conséquences désastreuse sur le S.E.
4/28/19
8
Abstraction de la mémoire? NON !
• Un seul processus peut s’exécuter à la fois. Dès que
l’utilisateur tape une commande
– Le S.E copie le programme demandé depuis le
disque vers la mémoire et l’exécute
– Lorsque le processus se termine, le S.E affiche le
prompt et attend une nouvelle commande
– Quand il reçoit la commande, il charge un nouveau
programme en mémoire en écrasant le précédent
4/28/19
9
L’exécution de plusieurs programmes sans
abstraction de mémoire
• Même sans abstraction de la mémoire, il
est cependant possible d’exécuter quasi
simultanément plusieurs programmes.
• Le S.E. doit alors recopier sur disque
l’intégralité du contenu de la mémoire
avant de charger et d’exécuter le
programme suivant
• C’est le va-et-vient ou swapping
4/28/19
10
UNE ABSTRACTION DE LA MÉMOIRE: LES
ESPACES D’ADRESSAGE
Contexte
• Faire voire aux processus la mémoire physique
présente plusieurs inconvénients
– Risque de plantage générale, même avec un seul
programme qui s’exécute
– Lourdeur pour exécuter plusieurs programmes à la
fois
Besoin d’abstraction de la mémoire
4/28/19
12
La notion d’espace d’adressage
• De la même façon qu’un processus crée une UC
abstraite exécutant un programme, l’espace
d’adressage est une sorte de mémoire abstraite
d’un programme prêt à l’exécution
• C’est l’ensemble des adresses qu’un processus
peut utiliser pour adresser la mémoire
• Chaque processus a son propre espace
d’adressage, indépendant de celui des autres
4/28/19
13
La notion d’espace d’adressage
• Il est difficile de donner à chaque
programme son propre espace
d’adressage
– C’est-à-dire de faire en sorte que l’adresse
(abc) de l’un correspond à un emplacement
différent de l’adresse (abc) de l’autre
Solution: ré-allocation dynamique
4/28/19
14
La notion d’espace d’adressage
4/28/19
15
Les registres de base et de limite
• Ré-allocation dynamique: mapper l’espace
d’adressage de chaque processus sur une
partie différente de la mémoire physique.
• Équiper les UC de deux registres matériels:
les registres de base et de limite.
– Les programmes sont chargés en mémoire sans
ré-allocation, là où il y a de la place pour les ranger
dans des mots mémoire consécutifs
4/28/19
16
Les registres de base et de limite
• À l’exécution du programme, le S.E
range dans le registre de base
l’adresse physique de début de
programme et dans le registre de limite
et celle de fin
– Les valeurs de base et de limite du premier
programme sont de 0 et 16384 (16Ko x 1024
= 16384)
– Du second programme 16384 et 32768
4/28/19
17
Les registres de base et de limite
• Chaque fois qu’un processus référence
la mémoire,
– que ce soit pour charger une instruction ou bien
lire ou écrire une donnée
– le matériel de l’UC ajoute automatiquement à
l’adresse engendrée par le programme la
valeur du registre de base
– et vérifie la nouvelle adresse ainsi créée
reste bien inférieur ou égale à la valeur du
registre de limite
4/28/19
18
Les registres de base et de limite
• Si la première instruction du second programme
exécute une instruction
– JMP 10
• Le matériel la traite comme si c’était
– JMP 16394
– 16394 = 16384 +10
• L’inconvénient majeur de cette méthode est qu’elle
exige une addition et une comparaison à chaque
référence mémoire
4/28/19
19
Le va-et-vient (swapping)
• Si la mémoire physique de l’ordinateur est
suffisamment grande pour contenir tous les
processus, les méthodes vues jusqu’ici
conviennent.
• En pratique, c’est rarement le cas !!!
– Sur les S.E. actuelles, entre 40 et 60 processus
sont lancés au démarrage
– Firefox peut occuper facilement 270Mo de
mémoire
4/28/19
20
Le va-et-vient (swapping)
• Deux approches de gestion de mémoire
peuvent être utilisées
– I- Le swapping: considérer chaque
processus dans son intégralité, exécution
puis placement sur le disque
– II- La mémoire virtuelle: permet au
programmes de s’exécuter même quand ils
sont partiellement en mémoire principale
4/28/19
21
Le va-et-vient (swapping)
• L'allocation de la mémoire change au gré des processus
qui viennent en mémoire et ceux qui quittent la mémoire
• Les zones grises indiquent la mémoire non utilisée
4/28/19
22
Le va-et-vient (swapping)
i.
(a) A est en mémoire
ii.
(b,c) B et C sont crées
ou chargés depuis le
disque
iii. (d) A est transférer sur
le disque
iv. (e,f) D arrive, tandis
que B s’en va
v.
4/28/19
(g) A revient
23
Le va-et-vient (swapping)
• Lorsque le swapping crée de multiples trous
dans la mémoire, il est possible de tous les
recombiner en une seule zone plus grande en
déplaçant tous les processus vers le bas de
la mémoire aussi vite que possible
– Compactage de mémoire
• N’est pas mise en œuvre car elle requiert
énormément de temps UC
– 5s pour compacter 1 Go!
4/28/19
24
Le va-et-vient (swapping)
• Si des processus sont crées avec une taille fixe qui
ne change jamais, l’allocation est alors simple: le
système alloue exactement la mémoire nécessaire
pas plus pas moins !
• Lorsque les segments de données des processus
Publicité
doivent croître (allocation dynamique de la
mémoire) un problème surgit toutes les fois qu’un
processus essaie de s’accroître.
– Si un trou est adjacent au processus, ce trou peut lui être
alloué et le processus est autorisé à s’étendre dedans
4/28/19
25
Le va-et-vient (swapping)
• Si le processus est adjacent à un autre processus, le
processus croissant devra être déplacé dans un trou
suffisamment grand pour lui
• Si un processus ne peut pas croître en mémoire et que
la zone de va-et-vient sur le disque est pleine, le
processus devra attendre ou être tué
– Il est conseillé d’allouer un ‘peu’ de mémoire supplémentaire
chaque fois qu’un processus est chargé ou déplacé
– Si on transfert le processus sur le disque, seule la mémoire
véritablement utilisé qui doit être recopiée, inutile de
recopier la mémoire supplémentaire.
4/28/19
26
Gérer la mémoire libre
• Quand la mémoire est attribué
dynamiquement, le système
d’exploitation doit la gérer
• Il existe deux manière de conserver une
trace de l’utilisation de la mémoire
– À l’aide des tables bits
– À l’aide des listes
4/28/19
27
Gérer la mémoire avec une table de
bits
• Avec une table de bits, la mémoire est
répartie en unités d’allocation dont la
taille peut varier de quelques mots à
plusieurs kilo-octets.
• Chaque unité d’allocation correspond à
un bit du tableau de bits, lequel est 0 si
l’unit correspondante est vide et 1 si elle
est occupée (ou vice versa)
4/28/19
28
Gérer la mémoire avec une table de
bits
a) Une partie de la mémoire avec 5 processus, 3 trous
Les petites marques verticales indiquent les unités
d'allocation. Les zones grises sont libres
b) Le tableau de bits correspondant
c) Mêmes informations sous la forme d'une liste chaînée
4/28/19
29
Gérer la mémoire avec une table de
bits
• La taille de l’unité d’allocation est un élément
fondamentale dans la configuration:
– plus l’unité est petite, plus le tableau de bit est
important
• Une unité de 4 octets (32bits) n’aura besoin
que de 1 bit du tableau de bit
– Une mémoire de 32n bits utilisera une table de n
bits qui ne prendra pas plus de 1/33 de la mémoire
4/28/19
30
Gérer la mémoire avec une table de
bits
• Le tableau de bit offre un moyen simple de
garder une trace des mots mémoire dans
une quantité fixe de mémoire
• Le tableau offre un inconvénient:
– lorsqu’un processus de k unités est chargé en
mémoire, le gestionnaire de mémoire doit
parcourir le tableau de bits pour trouver une
séquence de k bit consécutifs dont la valeur
est 0.
4/28/19
31
Gérer la mémoire avec des listes chaînées
• Une des manière de conserver une trace de la
mémoire est de maintenir une liste chaînée des
segments de mémoire alloués et libres
– Dans cette liste, un segment est soit un processus, soit
un trou entre deux processus
– La liste est trié par adresse, donc si un processus se
termine la mise à jour est directe
4/28/19
32
Gérer la mémoire avec des listes
chaînées
• Un processus qui se termine a normalement deux
voisins (excepté en début de liste/fin de liste) qui
peuvent être des processus ou des trous, ce qui
conduit à quatre combinaison possibles
4/28/19
33
Gérer la mémoire avec des listes chaînées
•
•
•
•
(a) la mise à jours de la liste
oblige à remplacer un P par un
T
(b,c) deux unités sont réunies
en une seule, la liste devient
plus courte d’une unité
(d) trois entrées sont
fusionnées et deux items sont
retirés de la liste
Il y a avantage a utiliser une
liste de segments doublement
chaînée afin de faciliter la
recherche du nœud précédent.
4/28/19
34
Gérer la mémoire avec des listes
chaînées
• Quand les processus et les trous sont indiqués
dans une liste triée par adresse, plusieurs
algorithmes peuvent servir à allouer de la
mémoire à un processus nouvellement créé (ou
un processus existant chargé depuis le disque)
– First fit
– Next fit
– Best fist
– Worst fit
– Quick fit
4/28/19
35
Gérer la mémoire avec des listes chaînées
First Fit
• Algorithme de la première zone libre:
– On trouve le premier trou suffisamment grand
pour contenir le processus.
– Le trou est ensuite divisé en deux parties: une
pour le processus et l’autre pour la mémoire
inutilisée
• Algorithme rapide parce qu’il limite ses
recherches autant que possible
4/28/19
36
Gérer la mémoire avec des listes chaînées
Next Fit
• Algorithme de la première zone libre
suivante
– Identique à l’algorithme précédent sauf que la
recherche commence au dernier espace libre
trouvé.
– Les performance sont légèrement meilleures
(en terme de rapidité)
4/28/19
37
Gérer la mémoire avec des listes chaînées
Best Fit
• Algorithme du meilleur ajustement
– Parcourt toute la liste et recherche le plus
petit trou pouvant contenir le processus
– Évite de partitionner inutilement les gros trous
– Cet algorithme crée des trous minuscules
inutilisables par la suite
– Plus lent que les algorithmes précédents
4/28/19
38
Gérer la mémoire avec des listes chaînées
Worst Fit
• Algorithme du plus grand résidu
– On prend le plus grand trou disponible
– Le trou restant est assez grand pour être
réutilisé
– Des simulations démontrent que cette
solution n’est pas meilleure que la
précédente.
4/28/19
39
Gérer la mémoire avec des listes
chaînées
• Un peut utiliser deux listes distinctes (zones libres et
occupées par un processus)
• Accélère les algorithmes précédents
– Si la liste des trous est triée par taille alors best-fit et first-fit sont
essentiellement équivalents.
• Ralentissement quand la mémoire est libérée
– Un segment libéré est enlevé de la liste des processus et inséré dans la
liste des trous
• On peut utiliser les zones libres elle même pour la liste des
zones libres
4/28/19
40
Gérer la mémoire avec des listes chaînées
Quick Fit
• Algorithme du placement rapide (quick fit)
– On gère des listes séparées pour certaines des tailles les
plus communes
– Par exemple, on peut avoir des listes de 4Ko, 8Ko, 12Ko,
etc.
– Très rapide.
– Rend plus complexe le processus de libération de la
mémoire: On doit chercher les trous adjacents pour une
vérifier si une fusion est possible.
• Tous ces algorithmes souffrent du problème de
la fragmentation de la mémoire.
4/28/19
41
Source : William Stallings, « OPERATING SYSTEMS INTERNALS AND
DESIGN PRINCIPLES SEVENTH EDITION » , Chapter 7 Memory
Management, Prentice Hall, 2012
4/28/19
Example Memory Configuration before and after Allocation of 16-Mbyte
Block
42
Application #1
4/28/19
43
Application #1
● Considérons un système de gestion de mémoire à
partitions variables avec la liste des trous suivante
(ordonnée par adresses croissantes) : 10K, 4K, 20K,
18K, 7K, 9K, 12K et 15K.
● Supposons les demandes successives d'espace
mémoire :A= 12K, B= 10K et C= 9K.
● Indiquer pour les stratégies First Fit, Next Fit, Best
Fit et Worst Fit l'état de cette liste après l'allocation
des espaces pour les demandes de A, B et C.
4/28/19
44
Solution Application #1
● First fit : on cherche le premier espace
qui convient
@
a
b
c
d
e
f
g
h
Lg
10k
4k
20k
18k
7k
9k
12k
15k
@
a
b
Publicité
c
d
e
f
g
h
Lg
10k
4k
8k
18k
7k
9k
12k
15k
4/28/19
A
12k
B
10k
@
b
c
d
e
f
g
h
Lg
4k
8k
18k
7k
9k
12k
15k
C
9k
@
b
c
d
e
f
g
h
Lg
4k
8k
9k
7k
9k
12k
15k
45
Solution Application #1
● Next Fit : on cherche l’espace suivant
qui convient
@
a
b
c
d
e
f
g
h
Lg
10k
4k
20k
18k
7k
9k
12k
15k
@
a
b
c
d
e
f
g
h
Lg
10k
4k
8k
18k
7k
9k
12k
15k
@
a
b
c
d
e
f
g
h
Lg
10k
4k
8k
8k
7k
9k
12k
15k
4/28/19
A
12k
B
10k
C
9k
@
a
b
c
d
e
g
h
Lg
10k
4k
8k
8k
7k
12k
15k
46
Solution Application #1
● Best fit : on cherche l’espace qui laisse
le plus petit trou
@
a
b
c
d
e
f
g
h
Lg
10k
4k
20k
18k
7k
9k
12k
15k
4/28/19
A
12k
@
a
b
c
d
e
f
h
Lg
10k
4k
20k
18k
7k
9k
15k
B
10k
@
b
c
d
e
f
h
Lg
4k
20k
18k
7k
9k
15k
C
9k
@
b
c
d
e
h
Lg
4k
20k
18k
7k
15k
47
Solution Application #1
● Worst fit : on cherche l’espace qui
laisse le plus grand vide
@
a
b
c
d
e
f
g
h
Lg
10k
4k
20k
18k
7k
9k
12k
15k
@
a
b
c
d
e
f
g
h
Lg
10k
4k
8k
18k
7k
9k
12k
15k
@
a
b
Publicité
c
d
e
f
g
h
Lg
10k
4k
8k
8k
7k
9k
12k
15k
4/28/19
A
12k
B
10k
C
9k
@
a
b
c
d
e
f
g
h
Lg
10k
4k
8k
8k
7k
9k
12k
6k
48
LA MÉMOIRE VIRTUELLE
La mémoire virtuelle
• Si la taille des mémoires augmente, celle des logiciels
augmente encore plus vite
– Dans les années 1980, on faisait tourner en temps partagé des
dizaine d’utilisateurs sur des VAX dotés de 4Mo.
– Vista/Seven (mono-utilisateur) recommande au minimum 1 Go
– Windows 10 (min 2 GB de RAM pour la version 64 bits)
• On est sûr d’être à court de mémoire
– Le swapping n’est pas une bonne option en raison des volumes
à transférer: il faut au moins 10s pour mettre un programme de
1 Go sur un disque SATA au débit crête de 100Mo/s
4/28/19
50
La mémoire virtuelle
• Le problème de programme plus gros que la mémoire
est connu depuis longtemps
• Dans les années 1960, la solution la plus courante
consistait à diviser le programme en parties, appelées
segments de recouvrement (overlay)
– Le segment 0 était exécuté en premier
– Quand cela était réalisé, il pouvait appeler un autre
segment
– Le va-et-vient est géré par le système, la division en overlay
est géré par le programmeur!
– Solution rapidement abandonnée
4/28/19
51
La mémoire virtuelle
• La méthode qui a été imaginée est connue aujourd’hui sous le
nom de mémoire virtuelle.
• La mémoire virtuelle repose sur le principe suivant: chaque
programme a son propre espace d’adressage découpé en
petites entités appelées PAGES, entités formées d’une suite
d’adresse contiguës
– La taille des page est fixe (typiquement entre 512 octets à 64Ko)
• Les pages sont mappées sur la mémoire physique, mais il
n’est pas obligatoire d’avoir toutes les page en mémoire
physique pour exécuter le programme.
4/28/19
52
La pagination
• Les adresses générées par programme
sont appelées des adresses virtuelles et
elle forment l’espace d’adressage virtuel
• Dans les ordinateurs sans mémoire
virtuelle, l’adresse est placée directement
sur le bus mémoire et provoque la lecture
ou l’écriture du mot de même adresse
physique
• Dans les ordinateurs avec mémoire
virtuelle, l’adresse est placée dans une
unité de gestion mémoire (MMU Memory
Mangement Unit) qui fait correspondre
les adresses virtuelles à des adresses
physiques
• La relation entre les adresses virtuelles et
physiques est indiquée dans la table des
pages
4/28/19
53
La pagination
• Un ordinateur peut produire de adresses
sur 16 bits avec des valeurs comprises
entre 0 et 64Ko: ce sont les adresses
virtuelles.
• Toutefois, cet ordinateur a seulement
32Ko de mémoire physique;
– par conséquent, même s’il permet d’écrire
des programmes de 64Ko, ceux-ci ne peuvent
pas être chargés entièrement dans la
mémoire et exécutés.
– Il faut cependant qu’une copie complète de
tout le programme soit présente sur le
disque, afin que les différentes parties
puissent être récupérer quand cela est
nécessaire
4/28/19
54
La pagination
• L’espace d’adressage virtuel est
divisé en unités appelées pages
• Les unités correspondantes dans
la mémoire physique sont
appelées cadres de pages (pages
frames)
– Les pages et les cadres de pages
ont toujours la même taille (4Ko
dans notre exemple)
– Chaque page est indivisible: Elle
est entièrement en mémoire
physique ou elle n’y est pas du
tout.
4/28/19
55
La pagination
• L’indication 0K-4K signifie que
les adresse virtuelles ou réelles
de la page sont situées entre 0
et 4095
• L’indication 4K-8K entre 4096-
8191
• Chaque page contient 4096
adresses qui démarrent à un
multiple de 4096 et finissent au
multiple suivant
4/28/19
56
La pagination
L’adresse virtuelle 0 est
transformée en adresse
physique 8192=2*4096
L’adresse virtuelle 8192=2*4096
est transformée en adresse
physique 24576=6*4096
L’adresse virtuelle
20500=5*4096+20 est
transformée en adresse
physique 12308=3*4096+20
4/28/19
57
La pagination
• Quand le programme essaie par
exemple d’accéder à l’adresse 0, à l’aide
de l’instruction
– MOV REG,0
• L’adresse virtuelle 0 est envoyée à la
MMU. La MMU constate que cette
adresse virtuelle tombe dans la page 0
( de valeurs comprises entre 0 et 4095),
laquelle correspond au cadre de la page
2 ( de valeurs comprises entre 8192 et
12287)
– Elle transforme l’adresse en 8192 et la
présente sur le bus
• La mémoire ne sait rien de la MMU: elle
interprète seulement qu’il s’agit d’une
requête de lecture ou d’écriture à
l’adresse 8192, et elle le réalise.
4/28/19
58
La pagination
• Cette capacité de mettre en
correspondance les 16 pages
virtuelles sur les 8 cadres de pages
ne résout pas le problème posé par
un espace d’adressage virtuel plus
grand que la mémoire physique
• Seule 8 des pages virtuelles sont
mise en correspondance avec la
mémoire physique
• Un bit de présence/absence
conserve la trace des pages qui se
trouvent physiquement en mémoire
• Que se passe-t-il si le programme
essaye de faire appel à une page non
présente avec l’instruction MOV
REG,32780 ????
4/28/19
59
La pagination
• MOV REG,32780 correspond à l’octet 12 de
la page virtuelle 8 (qui commence à 32768)
• La MMU remarque que la page est absente
(ce qui est indiqué par une croix dans la
figure) et fait procéder l’UC à un
déroutement, c’est-à-dire que le processeur
est restitué au système d’exploitation
• Ce déroutement, appelé défaut de page
(page fault), est réalisé de la manière
suivante:
– Le système d’exploitation sélectionne un cadre
de page peu utilisé
– et écrit son contenu sur le disque;
– il transfère ensuite la page qui vient d’être
référencée dans le cadre de page libéré,
– modifie la correspondance et recommence
l’instruction déroutée.
4/28/19
60
La pagination
• Par exemple, si le système d’exploitation
décide de déplacer le cadre de la page 1
– Il doit charger la page virtuelle 8 à l’adresse
physique 4K et faire deux correspondance dans
la MMU.
• Tout d’abord, il doit marquer l’entrée de la
page virtuelle 1 comme étant non utilisée,
afin d’autorisé tout accès ultérieur aux
adresses virtuelles comprise entre 4K et 8K
• Ensuite il devra remplacer la croix de
l’entrée de la page 8 par la valeur 1
• Enfin, quand l’instruction déroutée sera ré-
exécutée, il mettra l’adresse virtuelle 32780
en correspondance avec l’adresse physique
4108 (4096 +12)
4/28/19
61
La pagination: fonctionnement interne d’une MMU
• Adresse virtuelle 8196,
en binaire
0010000000000100 est
divisée en deux parties
– Un numéro de page sur 4
bits et un décalage sur 12
bits
– Avec 4 bits pour le
numéro de page nous
Publicité
pouvons avoir 16 pages
– Avec 12 bits pour le
décalage, nous pouvons
adresser l’ensemble des
4096 octets d’une page
4/28/19
62
La pagination: fonctionnement interne d’une MMU
• Le numéro de page est
utilisé comme un index
dans la table des pages:
– Le numéro du cadre de
page correspond à la
page virtuelle
• Si le bit de
présence/absence est à
0, un déroutement vers
le système
d’exploitation est mis
en place
4/28/19
63
La pagination: fonctionnement interne d’une MMU
• Si le bit est à 1,
– le numéro de cadre de page trouvé
dans la table des page et copié
dans les 3 bits de poids le plus fort
du registre de sortie
– auxquels sont ajoutés les 12 bits
de décalage, qui sont copié à partir
de l’adresse virtuelle entrante sans
être modifiée
– ils forment ensemble une adresse
physique sur 15 bits
• Le registre de sortie est ensuite
placé sur le bus mémoire en tant
qu’adresse de mémoire
physique
4/28/19
64
Récapitulons :
• Dans le cas le plus simple, la mise en correspondance des adresses virtuelles et des
adresses physiques se déroule comme suit
– L’adresse virtuelle est séparée en deux parties
– Un numéro de page virtuelle (les bits de poids fort)
– Et un décalage (les bits de poids faible)
• Avec une adresse de 16 bits et une taille de page de 4 Ko,
– les 4 bits de poids fort peuvent spécifier une des 16 pages virtuelles,
– les 12 bits de poids faible indiqueront alors le décalage en octet ( de 0 à 4095)
• Dans la table des pages, le numéro de page virtuelle sert à trouver l’entrée de la
page virtuelle.
– S’il existe, le numéro du cadre de page est trouvé à partir de cette entrée de la table des pages
• Le numéro du cadre de page est attribué aux bits de poids fort suivi du décalage,
remplaçant le numéro de page virtuelle, pour composer une adresse physique qui
peut être envoyée à la mémoire
4/28/19
65
Les tables de pages
• Le rôle d’une table des pages est ainsi de faire
correspondre des pages virtuelles à des cadres de page
– C’est une fonction qui a comme argument le numéro de la page
virtuelle et comme résultat le cadre physique
– Le résultat de cette fonction peut servir à remplacer le champ
nommé page virtuelle d’une adresse virtuelle par un champ
nommée cadre de page et à créer ainsi une adresse mémoire
physique
• Deux problèmes:
– La table des pages peut être très grande
– Trouver l'adresse réelle à partir de l'adresse virtuelle doit se
faire très rapidement
4/28/19
66
Structure d’un entrée de table de page
• Le champ le plus important est le numéro de cadre de page
– L’objectif est de localiser cette valeur
• Présent/Absent:
– si 0 cela provoque un défaut de page
– Si 1, l’entrée est valide et peut être utilisé
• Protection: précise quelles sortes d’accès sont permis
– lecture, écriture, exécution
4/28/19
67
Structure d’un entrée de table de page
• Modifié (dirty/clean bit) :
– Si aucune modification (clean), il n’est pas nécessaire de sauvegarder sur le disque. Lors d’une
écriture (dirty), automatiquement mis à 1
• Référencé:
– Mis à 1 chaque fois qu’une page est consultée
– Permet de décider si la page peut être remplacer par une autre
– Les pages qui ne sont pas en cours d’utilisation sont de meilleures candidates que les autres
• Cache inhibée:
– Caractéristique importante pour les pages qui sont mises en correspondance dans des registres
matériel pluôt qu’en mémoire
– Utile pour les attentes de réponse d’E/S on veut accéder aux données du périphérique plutôt
qu’au cache
4/28/19
68
Application #2
4/28/19
69
Exercice 2 : Pagination Simple
Sur un système de pagination simple de 2¹ octets de mémoire
physique de 2¹² pages d'espace d'adressage virtuel et une taille
de page de 4 ko (=4096 octets).
⁶ octets de mémoire
– Combien de bits se trouvent dans une adresse virtuelle ?
– Combien d'octets se trouvent dans un cadre de page ?
– Combien de bits de l'adresse physique spécifient le cadre de page ?
– Combien d'entrées se trouvent dans la table de pages ?
– Combien de bits sont nécessaires pour stocker une entrée dans la table de pages
(de quelle largeur est la table de pages) ?
● Hypothèse :
– Chaque entrée de table de pages contient, en plus du numéro de cadre de page, 1 bit de
présence (P), 1 bit pour son référencement (R) et 1 bit pour sa modification (M)
4/28/19
70
Solution Exercice 2 : Pagination Simple
● 1- Combien de bits se trouvent dans une
adresse virtuelle ?
– L’espace d’adressage logique contient 2¹² = 4096 pages de 4
ko = 2¹² octets chacune, soit un espace d’adressage total de
2¹² x 2¹² = 2² octets. Pour couvrir cet espace d’adressage,
l’adresse virtuelle sera codée sur 24 bits : 12 bits pour les
pages et 12 bits pour le déplacement dans la page
⁴ octets. Pour couvrir cet espace d’adressage,
● 2- Combien d'octets se trouvent dans un cadre
de page ?
– 4096 octets
4/28/19
71
Solution Exercice 2 : Pagination Simple
● 3- Combien de bits de l'adresse physique spécifient le cadre de
page ?
– L’espace d’adressage physique est de 2¹ octets. Étant donné que les pages font 2¹²
⁶ octets de mémoire
octets, on peut donc écrire 2¹ = 2¹² * 2 . Ceci implique une adresse physique de 16
bits définie avec 4 bits pour les numéros des cadres et 12 bits pour le déplacement
dans une page.
⁴ octets. Pour couvrir cet espace d’adressage,
⁶ octets de mémoire
● 4- Combien d'entrées se trouvent dans la table de pages ?
– La table des pages doit contenir une entrée pour chaque page. Comme il y a 2¹²
pages, la taille de la table des pages doit donc avoir une longueur de 2¹² = 4096
entrées.
● 5- Combien de bits sont nécessaires pour stocker une entrée
dans la table de pages (de quelle largeur est la table de pages) ?
– Chaque entrée contient 3 bits pour indiquer P, R et M et 4 bits pour spécifier le
numéro du cadre de page ; ce qui donne au total 3 + 4 = 7 bits par entrée.
4/28/19
72
Exercice 3
● Considérer un système monoprocesseur avec une gestion de
mémoire par pagination pure et des tables de pages à un
niveau.
● La mémoire physique est composée de 4 cadres. La taille de
chaque cadre est de 4 KO. L'adresse virtuelle est codée sur 16
bits.
● Supposez que 2 processus P1 et P2, composés respectivement
de 7 et 5 pages, arrivent dans le système, l'un à la suite de
l'autre.
● Le système charge dans l'ordre, les pages 0 et 1 de P1 dans les
cadres 1 et 2, et la page 1 de P2 dans le cadre 3, avant de
commencer l'exécution des processus P1 et P2.
4/28/19
73
Exercice 3
1)Proposer une structure d'une adresse
virtuelle ?
2)Donner l'adresse physique de l'adresse
virtuelle: 0001 0011 0111 1000 si P1
référence cette adresse virtuelle ?
3)Donner l'adresse physique de l'adresse
virtuelle: 0001 0011 0111 1000 si P2
référence cette adresse virtuelle ?
4/28/19
74
Correction Exercice 3
1)Proposer une structure d'une adresse
virtuelle ?
La taille d'une page est 4kiO. Le
déplacement est donc codé sur 12 bits.
L'adresse virtuelle est sur 16 bits : 4 bits
pour le numéro de page et 12 bits pour le
déplacement dans la page.
4/28/19
75
Correction Exercice 3
2)Donner l'adresse physique de l'adresse
virtuelle: 0001 0011 0111 1000 si P1
référence cette adresse virtuelle ?
P1 : 00 01 00 11 01 11 10 00 => il s'agit de
la page 1 de P1. Cette page est chargée
dans le cadre 2 => L'adresse physique
est : 10 00 11 01 11 10 00
4/28/19
76
Correction Exercice 3
3)Donner l'adresse physique de l'adresse
virtuelle: 0001 0011 0111 1000 si P2
référence cette adresse virtuelle
P2 : 00 01 00 11 01 11 10 00 => il s'agit de
la page 1 de P2. Cette page est chargée
dans le cadre 3 => L'adresse physique
est : 11 00 11 01 11 10 00
4/28/19
77
Accélérer la pagination
• Tout système de pagination doit considérer deux éléments
1. La correspondance doit être rapide
2. La table des pages doit être très grande
• Accélérer la correspondance
• La correspondance entre mémoire virtuelle et mémoire physique doit
être réalisée à chaque référence mémoire
• Un instruction typique: un mot d’instruction + opérande mémoire
• Chaque instruction : on fait référence à la table des pages au moins
une fois
● La table des pages doit être très grande
● Les adresses virtuelles courante d’au moins 32bits (souvent 64 bits)
● Une page de 4Ko, un espace d’adressage de 32 bits a 1 Million de pages
● Avec un 1 Million de page dans l’espace d’adressage virtuel, la table
des pages doit avoir 1 Million d’entrées
4/28/19
78
La mémoire associative
• Hypothèse: la table des pages est en mémoire
– Impact considérable sur les performances
– Par exemple une instruction qui copie un registre dans un autre
● En l’absence de pagination: cette instruction fait une seule
référence mémoire
● Avec la pagination: des références mémoires supplémentaires
peuvent être nécessaire pour accéder à la table des pages
• Observation:
– La plupart des programmes tendent à faire un grand nombre de
référence à un petit nombre de pages
→ Seule un petite fraction des entrées de la table des pages est
réellement lue, tout le reste sert rarement
4/28/19
79
La mémoire associative
• Solution
– équiper les ordinateurs avec un périphérique qui permet de mettre en
correspondance les adresses virtuelles avec les adresses physique sans
passer par la table des pages
– TLB: Translation Lookaside Buffer
– Appelé aussi mémoire associative, se trouve à l’intérieur de la MMU
• Le TLB consiste en un petit nombre d’entrées qui sont
rarement plus de 64
– Chaque entrée contient les informations d’une page:
• le numéro de la page virtuelle,
Publicité
• un bit...