Вы находитесь на странице: 1из 96

Système d'exploitation

Partie II :
Gestion de la mémoire

P-A. Champin

Département Informatique
IUT A – Université Claude Bernard Lyon 1
2006
Partie II :
Gestion de la mémoire

1. Fonctions liées à la gestion de la


mémoire

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 2


Fonctions


abstraction
– translation


arbitrage entre plusieurs processus
– protection

– allocation et ré-allocation

– partage


extension du matériel
– mémoire virtuelle

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 3


Fonctions (abstraction) :
Translation (relocation)

Un programme ne peut pas savoir a priori (i.e. à la
compilation) à quel endroit de la mémoire va lui être
alloué (pour son programme et ses données)

Cet emplacement peut même varier au cours de
l'exécution du programme (swap)
00

0B

13

1C

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 4


Translation :
Solution générale

Distinction entre adresse logique (vues par le
programme) et adresse physique (vues par le
système et le matériel)

a physique = f alogique 

La fonction f peut être implémentée au niveau logiciel
où au niveau matériel

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 5


Translation :
Solution logicielle 1

le programme n'utilise que des adresses relatives,
auxquelle il ajoute à chaque accès mémoire une
adresse de base fournie par le système d'exploitation
→ pénalise le temps d'exécution (chaque accès
mémoire nécessite un calcul)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 6


Translation :
Solution logicielle 2

le programme contient une liste des adresses
absolues qu'il utilise, qui permet au système de le
modifier au chargement
→ pénalise le chargement du programme
→ pénalise le changement d'adresse en cours
d'exécution

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 7


Translation :
Solution matérielle générale

en mode utilisateur, toutes les adresses manipulées
sont considérées comme logiques ; c'est un
composant matériel, le MMU (Memory Management
Unit), qui assure la traduction en adresses physiques

en mode superviseur, les adresses manipulées sont
considérées directement comme des adresses
physiques

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 8


Translation :
Solution matérielle simple

Le processeur contient un registre de base,
modifiable uniquement par le SE

La traduction consiste à ajouter la valeur de ce
registre aux adresses logiques (i.e. les adresses
logiques sont des adresses relatives)

a physique =alogique r base

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 9


Fonctions (arbitrage) :
Protection

On souhaite empêcher qu'un processus ne puisse
accéder à la mémoire allouée à un autre processus

L'utilisation d'un registre de base assure une
protection de la zone inférieure, mais pas de la zone
supérieure

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 10


Protection :
Solution matérielle simple

En plus du registre de base, le processeur contient un
registre de limite, qui indique l'adresse logique
maximale à laquelle le processus peut accéder

Si le programme tente d'excéder cette limite, cela
provoque une erreur

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 11


Fonctions (arbitrage) :
Allocation - réallocation

Problème de fragmentation lorsque
– un nouveau processus a besoin de mémoire

– un processus existant a besoin de plus de mémoire


Nécessité de « déplacer » les processus, ce qui est
très coûteux...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 12


Fonctions (arbitrage) :
Partage

On souhaite pouvoir autoriser des processus qui le
demandent à travailler dans une zone mémoire
commune (sans forcément partager la totalité de leur
zone mémoire)

Les solutions vues jusqu'à maintenant ne permettent
pas de réaliser cette fonction de manière satisfaisante

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 13


Fonctions (extension) :
Mémoire virtuelle

Pour tirer au mieux partie du système, il peut être
nécessaire d'exécuter plus de processus qu'il n'en
tient en mémoire

Nécessité de simuler une capacité mémoire plus
grande (mémoire virtuelle)
→ espace d'échange (swap) sur disque dur

Problème : passer en swap toute la zone mémoire
d'un processus peut être coûteux

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 14


Mémoire virtuelle :
Hiérarchie des mémoire

rapide
registre

mémoire
cache

RAM
économique

Disque dur

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 15


Partie II :
Gestion de la mémoire

2. Pagination

Principe
Table des pages et TLB

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 16


Pagination :
Introduction

Solution matérielle aux problèmes liés à la gestion de
la mémoire

Offre au système d'exploitation un moyen de remplir
toutes les fonctions définies précédemment

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 17


Principe de la pagination :
Rappel d'architecture

On divise la mémoire physique en blocs ou cadres
(frames) de taille fixe

La zone mémoire (adresses logiques) de chaque
processus est divisée en pages de la même taille que
les blocs

Le processeur possède un registre dédié contenant
l'adresse en mémoire réelle d'une table de
correspondance

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 18


Principe de la pagination :
Exemple

00

10

20

30

40

50
5B
adresses logiques
(vue du processus)

table de correspondance
(propre au processus)

adresses physiques
(vue du SE)
10

30
00

40

20

50

5B
SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 19
Principe de la pagination :
Avantages (1)

Translation :
résolue grâce à la notion d'adresses logiques

a physique = f tablede correspondance a logique 


Protection :
par défaut, chaque cadre est alloué à un seul
processus (c'est un choix du SE, pas une contrainte
matérielle)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 20


Principe de la pagination :
Avantages (2)

Allocation – ré-allocation :
la fragmentation est assumée et mise à profit
– les pages allouées à un processus n'ont plus besoin d'être
contiguës

– des pages peuvent être ajoutées après coup à la zone de


mémoire logique


Partage :
on peut allouer des pages à plusieurs processus s'ils
le demandent
SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 21
Principe de la pagination :
Avantages (3)

00
adresses logiques
(vue du processus 1)

adresses physique
(vue du SE)

00

adresses logiques
(vue du processus 2)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 22


Principe de la pagination :
Avantages (4)

Extension de la mémoire physique :
la table de correspondance peut faire correspondre
des cadres de l'espace d'échange (swap) plutôt que
des cadres de la RAM
→ il n'est plus nécessaire de passer la totalité de la
mémoire d'un processus sur le disque

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 23


Principe de la pagination :
Calcul d'une adresse réelle
al : adresse logique
ap : adresse physique
tp : taille d'une page
tc[ ] : table de correspondance
numéro de page → numéro de cadre

ap = tc[ al div tp ]*tp + ( al mod tp )

numéro de page décalage (offset)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 24


Calcul d'une adresse réelle :
Exemple

ap = tc[ al div tp ]*tp + ( al mod tp )

supposons tp = 10

traduisons d'adresse logique 123


on est dans la page 12 (120→129)
on est au décalage 3 dans cette page
supposons que tc[12] = 45 (450→459)
ap = 45*10 + 3 = 453

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 25


Calcul d'une adresse réelle :
Optimisation


La taille des pages est une puissance de 2
→ les opérations div et mod se ramènent à
« couper » en deux d'adresse

On peut donc séparer le codage d'une adresse en
deux parties :
numéro de page/bloc et décalage (offset)
15 0

n° page offset

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 26


Calcul d'une adresse réelle :
Exemple du PDP-11 (1)

pages de 8 Ko (offset adressable sur 13 bits)

adresses logique sur 16 bits (8x8 Ko adressables)
15 12 0

n° page offset


adresses physiques sur 22 bits (512x8 Ko adressables)
21 12 0

n° bloc offset

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 27


Calcul d'une adresse réelle :
Exemple du PDP-11 (2)

table de correspondance : 8 entrées de 9 bits,
indicées de 0 à 7 (0002 à 1112)


exemple : [ 96, 8, 23, 55, swap, swap, 0, 0 ]
15 12 0
0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1
0102 = 210
n° page offset

2310 = 101112
21 12 0
0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1
n° bloc offset

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 28


Calcul d'une adresse réelle :
Exemple du Pentium


adresses logiques et adresses physiques sur 32
bits
– 4 Go octets adressables pour chaque processus

– 4 Go octets adressables pour tout le système


pages de 4 Ko
– numéro de page/cadre sur 20 bits

– offset sur 12 bits

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 29


Table des pages :
Présentation

La table des pages est un tableau : le numéro du bloc
correspondant à la page n est à la n-ième case du
tableau

Chaque case ne contient donc pas explicitement le
numéro de page ; uniquement le numéro de bloc plus
des information de gestion (PTE : Page Table Entry)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 30


Table des pages :
PTE (Page Table Entry)

n° de bloc R W X ... a d ... p


R,W,X : indiquent si la page est accessible en lecture /
écriture / exécution

a (accessed) : indique si la page a été lue

d (dirty) : indique si la page été modifiée

p (present) : indique si la page est présente en RAM
ou sur l'espace de swap

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 31


Table des pages :
Drapeaux (flags) d'une PTE (1)

NB: Tous ces drapeaux sont pris en compte et mis à
jour automatiquement par le MMU

Les blocs accessibles en lecture seule peuvent être
partagés sans risque entre différents processus
– utilisé notamment pour les pages en lecture+exécution,
lorsque des processus exécutent le même programme


Le bit dirty permet de savoir s'il est nécessaire de
mettre à jour l'espace d'échange (swap)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 32


Table des pages :
Drapeaux (flags) d'une PTE (2)

Certains bits ne sont pas utilisés par le matériel ; ils
peuvent être utilisés par le système d'exploitation
pour ses besoins propres

Lorsque le bit present est à 0, le champ numéro de
bloc peut notamment être utilisé par le système
pour stocker l'adresse de la page dans l'espace
d'échange

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 33


Table des pages :
Problème du nombre de pages

Reprenons l'exemple du Pentium
– adresses codées sur 32 bits

– pages de 4Ko (212)

– restent 20 bits pour coder le numéro de pages, soit


1.048.576 de pages par processus


A raison de 32 bit par PTE, la table des pages
occuperait 4Mo !

Solution matérielle : tables à plusieurs niveaux

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 34


Problème du nombre de pages :
Table à plusieurs niveaux (1)

On divise la table des pages en sous-tables de n
entrées

On crée une table d'index de type
– pages 0 à n-1 : adresse de la table

– pages de n à 2n-1 : adresse de la table

– ...


On n'a besoin d'allouer uniquement les sous-tables qui
sont effectivement utilisées

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 35


Problème du nombre de pages :
Table à plusieurs niveaux (2)

sous-table 0
index

sous-table 1

sous-table i

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 36


Problème du nombre de pages :
Table à plusieurs niveaux (3)

Là encore, on prendra comme taille des sous-tables
une puissance de deux pour faciliter les calculs
31 21 11 0

n° sous-table n° page offset


On peut travailler avec plus de 2 niveaux (4 niveaux
sur le Motorola 68030)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 37


Problème du nombre de pages :
Exemple (2 niveaux)
Adresses sur 12 bits (4 chiffres en base 8) – pages de 64 octets – sous-tables de 8 entrées
Table d'index à l'adresse 1400

1200 1400 1500 1700 2100


0 34 12 31 - 40
1 35 15 42 - 53
2 36 SWAP 41 - 37
3 51 21 43 - 22
... ... ... ... ...
4 33 - 44 65 45
5 - - 52 66 46
6 - - SWAP 30 -
7 - 17 SWAP 67 -

Adresse logique 3164 → Adresse physique 5364 ( index[3][1] x 100 + 64 )


Adresse logique 7507 → Adresse physique 6607 ( index[7][5] x 100 + 07 )

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 38


Table des pages :
Problème de performances

Chaque accès à la mémoire nécessite un accès
préalable à la table des pages
→ surcoût en temps d'accès de 100% !

Ceci est empiré lorsqu'on utilise une table à plusieurs
niveaux (autant d'accès que de niveaux)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 39


Problème de performances :
Éléments de solution

Principe de localité : une page utilisée récemment
a de forte chances d'être réutilisée dans un futur
proche

Technique de cache : stocker dans une mémoire
rapide des éléments provenant d'une mémoire plus
lente mais susceptibles d'être utilisés plusieurs fois
dans un futur proche (cf. hiérarchie des mémoires)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 40


Problème de performances :
TLB (Table Lookaside Buffer) (1)

Structure dans une mémoire cache dédiée stockant
la correspondance entre quelques numéros de
tables et leurs numéros de bloc (cache associatif)

À chaque accès mémoire,
– la correspondance page / bloc est d'abord cherchée
dans le TLB

– en cas d'échec, elle est cherchée dans la ou les table(s)


et insérée dans le TLB

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 41


Problème de performances :
TLB (Table Lookaside Buffer) (2)
Adresses sur 12 bits (4 chiffres en base 8) – pages de 64 octets – sous-tables de 8 entrées

Table d'index à l'adresse 1400


TLB
1200 1400 1500 1700 2100
31 → 53
0 34 12 31 - 40
75 → 66
1 35 15 42 - 53
2 36 SWAP 41 - 37
3 51 21 43 - 22
... ... ... ... ...
4 33 - 44 65 45
5 - - 52 66 46
6 - - SWAP 30 -
7 - 17 SWAP 67 -
Adresse logique 3164 → Adresse physique 5364 ( index[3][1] x 100 + 64 )
Adresse logique 7507 → Adresse physique 6607 ( index[7][5] x 100 + 07 )
Adresse logique 3123 → Adresse physique 5323 ( TLB{31} x 100 + 23 )

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 42


Problème de performances :
Identifiant de contexte (1)

Contrairement à la table des pages, le TLB est unique

Chaque entrée dans le TLB possède un identifiant de
contexte

Avant d'utiliser une entrée du TLB, le MMU vérifie que
son identifiant de contexte est cohérent avec celui du
processeur (registre dédié)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 43


Problème de performances :
Identifiant de contexte (2)

Le système d'exploitation associe à chaque processus
un identifiant de contexte pour le MMU

Ainsi, les entrées du TLB d'un processus ne risquent
pas être utilisées par un autre processus

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 44


Partie II :
Gestion de la mémoire

3. Remplacement des pages

Principe
Stratégies
Remarques générales

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 45


Remplacement des pages :
Problématique (1)

Comment décider des pages à retirer de la mémoire et
de celles à recharger ?

RAM : A F B C
?

SWAP : B E A G I D H

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 46


Remplacement des pages :
Problématique (2)

Idéalement :
– retirer une page juste après sa « dernière » utilisation (dans
un horizon temporel donné)

– restaurer une page juste avant son utilisation

– nécessite de connaître l'avenir...


NB : ce problème ne le limite pas à la gestion de
mémoire paginée, mais à tout type de cache.

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 47


Remplacement des pages :
Stratégies

En ce qui concerne la restauration, on fonctionne à la
demande : une page est restaurée en mémoire au
moment où on a besoin d'elle

Reste le problème du retrait : quelle page va céder sa
place à la page restaurée ?

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 48


Stratégies de remplacement :
Stratégie optimale

Toujours retirer la page qui sera ré-utilisée le plus tard

Nécessite soit
– d'avoir une connaissance a priori du comportement du
programme

– d'avoir un bon outil statistique (pseudo-optimal)


Utile pour évaluer les autres approches a posteriori

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 49


Stratégies de remplacement :
Not Recently Used (1)

On utilise le bit accessed pour savoir si une page a été
utilisée

Une tâche du système d'exploitation remet
régulièrement le bit accessed à zéro

On remplace en priorité les pages dont le bit accessed
est à zéro car elles n'ont pas été utilisées récemment
(i.e. depuis la dernière mise à zéro)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 50


Stratégies de remplacement :
Not Recently Used (2)

En fait, on utilise également le bit dirty pour déterminer
les pages utilisées récemment, en donnant le poids
fort à accessed
– a=1, d=1 : utilisée récemment, modifiée

– a=1, d=0 : utilisée récemment, non modifiée

– a=0, d=1 : pas utilisée récemment, modifiée

– a=0, d=0 : pas utilisée récemment, non modifiée

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 51


Stratégies de remplacement :
Not Recently Used (3)

Méthode relativement efficace (surcoût très faible),

...mais ayant un grain très grossier (4 catégories
seulement).

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 52


Stratégies de remplacement :
FIFO

La page retirée est la plus ancienne

Simple à implémenter

Défaut principal : ne tient pas compte du fait que la
page la plus ancienne en mémoire peut aussi être la
plus utilisée (et donc la plus susceptible d'être
réutilisée à l'avenir)

Autre défaut : anomalie de Belady (cf. transparents
suivants)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 53


Stratégie FIFO :
Anomalie de Belady

Intuition : plus la mémoire disponible est grande,
moins il est nécessaire de remplacer des pages

Belady a démontré en 1970 que l'algorithme de
remplacement FIFO ne vérifie pas cette règle

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 54


Stratégie FIFO :
Anomalie de Belady (exemple)
demandes 3 2 1 0 3 2 4 3 2 1 0 4 2 3 2 1 0 4

3 2 1 0 3 2 4 3 2 1 0 4 2 3 3 1 0 4
17 erreurs
3 2 1 0 3 2 4 3 2 1 0 4 2 2 3 1 0

3 2 1 0 3 2 4 4 4 1 0 0 2 3 3 1 0 4
14 erreurs 3 3
2 2
1 1
0 0
3 3
2 3
2 3
2 2
4 1 0
1 4
0 2 2 3 1 0
3 2 1 0 3 3 3 2 1
4 0
4 4
1 2
0 2
0 3
2 1
3 0
1

3 2 1 0 0 0 4 3 2 1 0 4 4 3 2 1 0 4
3 3
2 2
1 1 0
1 3
0 3
4 3 2 1 0 4
0 2
4 2
3 3
2 1 0
15 erreurs
3 2 1
2 0
2 3
1 3
0 3
4 2
3 1
2 0
1 4
1 2
0 2
4 3 1
2 0
1
3 2
3 1
3 0
3 3
2 3
1 3
0 2
4 1
3 0
2 4
2 2
1 2
0 3
4 1
3 0
2

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 55


Stratégies de remplacement :
Seconde chance

Comme FIFO, mais si la page à remplacer est
marquée comme utilisée (bit accessed à 1), on la
replace en queue de la file après avoir remis le bit
accessed à 0

Plus fidèle au principe de localité, et surcoût encore
faible

NB : peut parcourir toute la liste une fois si toutes les
pages ont été utilisées

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 56


Stratégies de remplacement :
Least Recently Used

C'est toujours la page la plus anciennement utilisée
qui est retirée de la mémoire

Application fidèle du principe de localité

Ne souffre pas de l'anomalie de Belady

Mais très coûteux à mettre en œuvre : remise à jour
des structures à chaque accès mémoire

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 57


Stratégies de remplacement :
Not Frequently Used (1)

Le système d'exploitation conserve, dans la PTE, un
compteur indiquant la « fréquence » d'utilisation de la
page

Une tâche du système passe régulièrement en revue
la table des pages, incrémente ce compteur si la page
a été lue ou modifiée, puis remet le bit accessed à 0

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 58


Stratégies de remplacement :
Not Frequently Used (2)

On remplace en priorité une page dont le compteur
d'accès est faible (peu utilisée)

Problème : cette méthode avantage les pages
présentes depuis longtemps en mémoire, même si
celles-ci n'ont pas été utilisées depuis longtemps

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 59


Stratégies de remplacement :
NFU + vieillissement (1)

Le compteur d'accès à une page diminue avec le
temps

En pratique :
– pour diminuer, on décale les chiffres vers la droite (division
par deux)

– pour augmenter, on met le bit de poids fort à 1

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 60


Stratégies de remplacement :
NFU + vieillissement (2)
a d
... 1 0 ... 1 0 0 0 0 ...

... 0 0 ... 0 1 0 0 0 ...

... 0 0 ... 0 0 1 0 0 ...

... 0 0 ... 0 0 0 1 0 ...

... 1 0 ... 1 0 0 0 1 ...

... 0 0 ... 0 1 0 0 0 ...

... 1 1 ... 1 0 1 0 0 ...

... 0 1 ... 0 1 0 1 0 ...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 61


Remarques sur les stratégies :
Remplacement local ou global

Peut on remplacer une page d'un processus par une
page d'un autre processus ?

Remplacement global
– plus souple


Remplacement local
– passe mieux à l'échelle (pas de structure globale)

– nécessite de bien choisir le nombre de bloc (en mémoire


physique) alloué à chaque processus

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 62


Remarques sur les stratégies :
Pré-nettoyage (pre-cleaning)

Si la page a remplacer est marquée comme modifiée
(dirty), il faut l'écrire sur le disque avant de la
remplacer (cleaning)

Pour minimiser le coût de ce « nettoyage » au moment
du remplacement, une tâche du système peut
rechercher les pages susceptibles d'être remplacées
pour les nettoyer pendant une période d'inactivité

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 63


Remarques sur les stratégies :
Évolutions

La localité des programmes change
– Programmation orientée objets (fonctions plus petites)

– Ramasse-miettes (garbage collector)


La hiérarchie des mémoire change de structure (RAM
trop grande)

Unification de la mémoire virtuelle et du cache des
fichiers

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 64


Partie II :
Gestion de la mémoire

3. Gestion d'un tas

Problématique
Méthodes
Stratégies de remplacement de pages

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 65


Gestion d'un tas :
Problématique

Tas : zone de la mémoire trouvent des structures
allouées dynamiquement (par opposition à une pile)
– processus

– structures internes du système


Note : le problème est sensiblement différent de celui
de l'allocation de mémoire à différents processus (pas
de nécessité de translation, de protection...)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 66


Méthodes :
Carte de bits (1)

Le tas est découpé en zones de taille fixe

On établit une carte dont chaque bit correspond à une
zone, indiquant si elle est allouée ou non

Légende : utilisé gaspillé libre

Carte de bit : 11000111 11000000 00111000 01011110

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 67


Méthodes :
Carte de bits (2)

Avantage : surcoût raisonnable
– exemple : blocs de 8 octets → 1,6 %


Inconvénients :
– rechercher une zone libre de taille donnée est coûteux

– gaspillage (fragmentation interne)


Peu utilisé en pratique

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 68


Méthodes :
Liste chaînée (1)

On représente l'état de la mémoire par une liste
chaînée dont chaque maillon représente une zone
(adresse, taille), son état (alloué ou libre) et pointe
vers la zone suivante

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 69


Méthodes :
Liste chaînée (2)

Surcoût raisonnable, dépendant du nombre de zones
allouées, mais pas de leur taille

Recherche de zone libres plus efficace qu'avec la
carte de bits

Permet de gérer plusieurs zones allouées adjacentes

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 70


Liste chaînée :
Allocation (1)
1. On recherche une zone libre de taille suffisante

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 71


Liste chaînée :
Allocation (2)
2. On fractionne la zone libre en deux zones (la
première ayant la taille à allouer)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 72


Liste chaînée :
Allocation (3)
3. On marque la première zone comme allouée et on
retourne son adresse

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 73


Liste chaînée :
Libération (1)
1. On trouve dans la liste le maillon correspondant à la
zone à libérer

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 74


Liste chaînée :
Libération (2)
2. Marque la zone comme libre

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 75


Liste chaînée :
Libération (3)
3. Le cas échéant, on fusionne la zone libre avec les
zones libres voisines

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 76


Liste chaînée :
Libération (4)
NB : il peut y avoir zéro, une ou deux zones libres
voisines

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 77


Liste chaînée :
Choix d'une zone libre (1)

Lors d'une allocation mémoire, si plusieurs zones
libres de taille suffisantes sont disponibles, laquelle
choisir ?


Premier trouvé (first fit)
Méthode la plus simple et la plus rapide

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 78


Liste chaînée :
Choix d'une zone libre (2)

Meilleur trouvé (best fit)
Utilise la zone libre dont la taille est la plus proche de
la taille à allouer (plus petite possible)
– avantage : évite le fractionnement de grandes zones libres

– inconvénient : crée des zones libres très petites souvent


inutilisables

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 79


Liste chaînée :
Choix d'une zone libre (3)

Pire trouvé (worse fit)
Utilise la plus grande zone libre
– avantages, inconvénients : inverse de la méthode
précédente


En pratique : la méthode du premier trouvé a souvent
le meilleur compromis entre temps de calcul et
efficacité de la gestion

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 80


Liste chaînée :
Variantes

Plutôt que d'organiser les zones mémoire dans l'ordre
de leurs adresses, on peut opter pour des
organisations différentes

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 81


Liste chaînée (variantes) :
Séparer les zones par état (1)

Séparer la liste des zones libres de celle des zones
occupés

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 82


Liste chaînée (variantes) :
Séparer les zones par état (2)

Avantage : accélère la recherche de zone libre (on ne
parcours plus les zones allouées)

Inconvénient : ralentit la l'allocation et la libération car
il faut mettre à jour les deux listes en parallèle

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 83


Liste chaînée (variantes) :
Trier les zones libres par taille

Avantage : permet d'accélérer les méthode « meilleur
trouvé » ou « pire trouvé »

Inconvénient majeur : la fusion de zones libres
adjacentes devient très inefficace (puisqu'elles ne sont
plus adjacentes dans la liste)
→ le compromis entre temps de calcul et efficacité
n'est pas amélioré

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 84


Liste chaînée (variantes) :
Séparer les zones libres par taille

Séparer les zones libres selon leur taille

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 85


Méthodes :
Système buddy (« pote ») (1)

Méthode permettant d'allouer et libérer des zones de
mémoire dont la taille est une puissance de deux
– inconvénient : gaspillage éventuel

– inconvénient : fragmentation

– avantage : très efficace en temps

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 86


Méthodes :
Système buddy (2)

On sépare les zones libres par taille (divisions de la
zone totale par des puissances de 2)

Allocation : au besoin, on divise par deux une zone
libre, jusqu'à atteindre la taille (la plus proche de celle)
à allouer

Libération : on fusionne deux zones libres si elles sont
« potes » (cf. exemples)

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 87


Système Buddy :
Exemple

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 88


Système Buddy :
Exemple : alloue 3 Ko (1)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 89


Système Buddy :
Exemple : alloue 3 Ko (2)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 90


Système Buddy :
Exemple : alloue 2 Ko (1)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 91


Système Buddy :
Exemple : alloue 2 Ko (2)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 92


Système Buddy :
Exemple : libère zone 2 (1)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 93


Système Buddy :
Exemple : libère zone 2 (2)

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 94


Système Buddy :
Exemple : un peu plus tard

16 ko

8 ko

4 ko

2 ko

...

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 95


Système Buddy :
Application

Linux utilise le système Buddy pour l'allocation des
pages

La fragmentation et le gaspillage ne sont plus un
problème puisque les pages ont toutes la même taille

SE- Partie II : Gestion de la mémoire - P-A. Champin - IUT A - 2006 96