Chapitre 4 Gestion de la mémoire - ESEN

139
Chapitre 4 Gestion de la mémoire Systèmes d'Exploitation II Amine DHRAIEF 2 ème année Licence ESEN, Université De La Manouba

Transcript of Chapitre 4 Gestion de la mémoire - ESEN

Page 1: Chapitre 4 Gestion de la mémoire - ESEN

Chapitre 4Gestion de la mémoire

Systèmes d'Exploitation II

Amine DHRAIEF2ème année Licence

ESEN, Université De La Manouba

Page 2: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 2

Introduction

Les programmes s’accroissent pour remplir la mémoire disponible qui leur

est réservée

'02 to '04 - 1GB to 2GB

'05 to '09 - 2GB to 4GB

'10 to today - 4GB to 64GB

Page 3: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 3

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

Page 4: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 4

Introduction

Page 5: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 5

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.

Page 6: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 6

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

Page 7: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 7

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)

Page 8: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 8

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.

Page 9: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 9

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

Page 10: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 10

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

Page 11: Chapitre 4 Gestion de la mémoire - ESEN

UNE ABSTRACTION DE LA MÉMOIRE: LES ESPACES D’ADRESSAGE

Page 12: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 12

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

Page 13: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 13

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

Page 14: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 14

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

Page 15: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 15

La notion d’espace d’adressage

Page 16: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 16

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

Page 17: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 17

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

Page 18: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 18

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

Page 19: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 19

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

Page 20: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 20

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

Page 21: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 21

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

Page 22: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 22

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

Page 23: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 23

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. (g) A revient

Page 24: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 24

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!

Page 25: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 25

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 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

Page 26: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 26

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.

Page 27: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 27

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

Page 28: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 28

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)

Page 29: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 29

Gérer la mémoire avec une table de bits

a) Une partie de la mémoire avec 5 processus, 3 trousLes 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

Page 30: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 30

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

Page 31: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 31

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.

Page 32: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 32

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

Page 33: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 33

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

Page 34: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 34

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.

Page 35: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 35

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

Page 36: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 36

Gérer la mémoire avec des listes chaînéesFirst 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

Page 37: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 37

Gérer la mémoire avec des listes chaînéesNext 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é)

Page 38: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 38

Gérer la mémoire avec des listes chaînéesBest 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

Page 39: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 39

Gérer la mémoire avec des listes chaînéesWorst 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.

Page 40: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 40

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

Page 41: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 41

Gérer la mémoire avec des listes chaînéesQuick 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.

Page 42: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 42

Source : William Stallings, « OPERATING SYSTEMS INTERNALS AND DESIGN PRINCIPLES SEVENTH EDITION » , Chapter 7 Memory Management, Prentice Hall, 2012

Example Memory Configuration before and after Allocation of 16-Mbyte Block

Page 43: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 43

Application #1

Page 44: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 44

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.

Page 45: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 45

Solution Application #1 ● First fit : on cherche le premier espace

qui convient

@ Lg

a 10k

b 4k

c 20k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

b 4k

c 8k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

b 4k

c 8k

d 9k

e 7k

f 9k

g 12k

h 15k

A12k

B10k

C9k

Page 46: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 46

Solution Application #1● Next Fit : on cherche l’espace suivant

qui convient

@ Lg

a 10k

b 4k

c 20k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 8k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 8k

e 7k

g 12k

h 15k

A12k

B10k

C9k

Page 47: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 47

Solution Application #1● Best fit : on cherche l’espace qui laisse

le plus petit trou

@ Lg

a 10k

b 4k

c 20k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 20k

d 18k

e 7k

f 9k

h 15k

@ Lg

b 4k

c 20k

d 18k

e 7k

f 9k

h 15k

@ Lg

b 4k

c 20k

d 18k

e 7k

h 15k

A12k

B10k

C9k

Page 48: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 48

Solution Application #1● Worst fit : on cherche l’espace qui

laisse le plus grand vide

@ Lg

a 10k

b 4k

c 20k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 18k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 8k

e 7k

f 9k

g 12k

h 15k

@ Lg

a 10k

b 4k

c 8k

d 8k

e 7k

f 9k

g 12k

h 6k

A12k

B10k

C9k

Page 49: Chapitre 4 Gestion de la mémoire - ESEN

LA MÉMOIRE VIRTUELLE

Page 50: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 50

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

Page 51: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 51

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

Page 52: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 52

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.

Page 53: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 53

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

Page 54: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 54

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

Page 55: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 55

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.

Page 56: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 56

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

Page 57: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 57

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

Page 58: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 58

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.

Page 59: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 59

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 ????

Page 60: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 60

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.

Page 61: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 61

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)

Page 62: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 62

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 pouvons avoir 16 pages

– Avec 12 bits pour le décalage, nous pouvons adresser l’ensemble des 4096 octets d’une page

Page 63: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 63

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

Page 64: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 64

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

Page 65: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 65

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

Page 66: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 66

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

Page 67: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 67

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

Page 68: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 68

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

Page 69: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 69

Application #2

Page 70: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 70

Exercice 2 : Pagination Simple

Sur un système de pagination simple de 2¹ octets de mémoire ⁶ octets de mémoire physique de 2¹² pages d'espace d'adressage virtuel et une taille de page de 4 ko (=4096 octets).– 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)

Page 71: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 71

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, ⁴ 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

● 2- Combien d'octets se trouvent dans un cadre de page ?– 4096 octets

Page 72: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 72

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 ⁶ octets de mémoire ⁴ octets. Pour couvrir cet espace d’adressage, bits définie avec 4 bits pour les numéros des cadres et 12 bits pour le déplacement dans une page.

● 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.

Page 73: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 73

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.

Page 74: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 74

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 ?

Page 75: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 75

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.

Page 76: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 76

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

Page 77: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 77

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

Page 78: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 78

Accélérer la pagination• Tout système de pagination doit considérer deux éléments

1. La correspondance doit être rapide2. 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

Page 79: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 79

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

Page 80: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 80

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, • un bit mis à 1 quand la page est modifiée, • le code de protection (RWX) • la cadre de page physique dans lequel la page est utilisé• Un bit indique si l’entrée est valide (càd utilisée) ou non

– Ces champs une correspondance point à point avec les champs de la page

Page 81: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 81

La mémoire associative

• Un processus (boucle + tableau)– Les données principales sont dans les pages 129,130– Page 140 indice de parcours– Pile 860, 861– Code 19,20,21

Valide Page virtuelle Modifié Protection Cadre de page

code

code

code

données

données

pile

pile

indices

Page 82: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 82

La mémoire associative

• Quand une adresse virtuelle est présentée à la MMU pour être traduite– Le matériel vérifie si ce numéro de page virtuelle est

présent dans le TLB– Si une correspondance est trouvée et si l’accès

n’enfreint pas la pas les bits de protection, le cadre de page est pris directement dans le TLB sans passer par la table des pages

– Si le numéro de page virtuelle est présent dans le TLB mais l’instruction essaie d’écrire dans un cadre autorisée en lecture seule, une erreur de protection est générée

Page 83: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 83

La mémoire associative

• Lorsque le numéro de page virtuelle n’est pas dans le TLB– La MMU détecte l’erreur et parcourt

normalement la table des pages– Elle efface une des entrées du TLB et la

remplace par l’entrée de la table des pages trouvée

– Si cette page est réutilisée rapidement, il en résultera cette fois un accès plutôt qu’une erreur

Page 84: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 84

Les tables des pages des grandes mémoires

• On utilise les TLB pour accélérer la traduction d’adresse virtuelles en adresses physiques, mais ce n’est pas le seul problème à traiter

• il faut aussi gérer de très grandes mémoires. Deux solutions:1. Tables des pages multi-niveaux

2. Tables des pages inversées

Page 85: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 85

Tables des pages multi-niveaux

• Une adresse de 32 bits est subdivisé en– Un champ de 10 bits nommé PT1 :

vers une table de premier niveau– Un champ de 10 bits nommé PT2 :

vers une table de deuxième niveau– Un champ de 12 bits nommé

Décalage

• Puisque les décalages sont sur 12 bits, les pages font 4 Ko (2² * 2¹ = 4*1024) ⁰ = 4*1024)

• Nous avons au total 220 = 2¹ * ⁰ = 4*1024) 2¹ pages.⁰ = 4*1024)

Page 86: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 86

Tables des pages multi-niveaux

• Avec la méthode des tables de pages multi-niveau, on ne garde pas en mémoire toutes les tables de pages en particulier celles dont nous n’avons pas besoin.

• Exemple: Un processus a besoin de 12 Mo: 4Mo inférieur pour le code, 4 Mo pour les données, 4 Mo pour la pile

Page 87: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 87

Tables des pages multi-niveaux

• Le 1er niveau correspond au champ PT1 (1024 entrées)

• Lorsqu’une adresse virtuelle est présentée à la MMU, elle extrait le champ PT1 et emploi cette valeur comme index dans le table du premier niveau

• Chacune de ces 1024=2¹ entrées ⁰ = 4*1024) représente 4Mo = 2² * 220, parce que la totalité des 4 Go (32bits → 2² * 2¹ ⁰ = 4*1024) * 2¹ * 2¹ = 4Go ) de l’espace ⁰ = 4*1024) ⁰ = 4*1024) d’adressage a été découpé en morceaux de 4096 octets.

Page 88: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 88

Tables des pages multi-niveaux

• L’entrée localisée par l’indexation de la table des pages de niveau 1 produit l’adresse ou le numéro de cadre de page de la table des pages de second niveau

• Le champ PT2 est maintenant employé comme index dans la table des pages de second niveau sélectionnée pour trouver le numéro du cadre de page de la page elle-mêmes

Page 89: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 89

Tables des pages multi-niveaux

• À titre d’exemple– Considérons

l’adresse virtuelle sur 32bits 0x00403004 soit:

– 0000 0000 01 | 00 0000 0011 | 0000 0000 0100

– PT1 = 1, PT2 =3, Décalage = 4

Page 90: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 90

Tables des pages inversés

• Pour les processeurs 64 bits, l’espace d’adressage est de 264 avec des pages de 4 Ko, il faut une table des pages avec 252 entrées– 264 /(4*1024) = 264 /(22*210)= (264/212)= 252

– Si chaque entrée est sur 8 bits, la taille de table sera supérieur à 30 Millions de Go !!!!

• Solution: tables des pages inversée– Une table de pages unique pour tout le système, indexée par les

cadres de page

– Chaque entrée contient un numéro de processus et un numéro de page virtuelle

Page 91: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 91

Table de pages inversée

• On trouve une entrée par cadre de page dans la mémoire réelle, plutôt qu’une entrée par page de l’espace d’adressage virtuel

• Problèmes– Liaison d’adresse plus compliquée (parcours de la

table)

• Utilisation actuelle : IBM, HP, de plus en plus d’architectures 64 bits

Page 92: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 92

Application #3

Page 93: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 93

Exercice 4 

● Considérez un système de pagination avec des tables de pages à 4 niveaux et des pages de 4096 octets. Chaque adresse virtuelle est codée sur 48 bits répartis sur 5 champs : c1, c2, c3, c4 et d, où d est le déplacement dans la page (l'offset). 1) Combien de bits sont réservés à l'offset d ?

2) Le nombre maximal de pages de l'espace virtuel dépend-il de la répartition des bits restants sur les autres champs ? Justifiez votre réponse.

Page 94: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 94

Correction Exercice 4

1)Combien de bits sont réservés à l'offset d ? d est sur 12 bits. (4096 = 212)

2)Le nombre maximal de pages de l'espace virtuel dépend-il de la répartition des bits restants sur les autres champs ? Justifiez votre réponse.

Non, il ne dépend pas de la répartition des bits. Il est égal à 248-12 = 64 Go pages.

Page 95: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 95

Exercice 5● On considère un système de pagination à trois niveaux dans

lequel les adresses (virtuelles et physiques) sont codées sur 32 bits. La taille d'une page est de 2 Ko. La taille de chaque table de pages, peu importe son niveau, est égale à 512 octets. Chaque entrée d'une table de pages est composée de 4 octets. Le premier octet est réservé aux bits de contrôle (bit de présence, bit de référence, bit de modification, bits de protection, etc.). Les octets restants servent à localiser la page ou la table de pages de niveau suivant.1) Quelle est la taille maximale, en nombre de pages, de l'espace virtuel d'un

processus, supporté par un tel système ?

2) Quel est le nombre maximal de tables de pages (de niveaux 1, 2 et 3) d'un processus ?

Page 96: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 96

Correction Exercice 5

1)Quelle est la taille maximale, en nombre de pages, de l'espace virtuel d'un processus, supporté par un tel système ?

232 / 211 = 221 = 2 Mi pages.

2)Quel est le nombre maximal de tables de pages (de niveaux 1, 2 et 3) d'un processus ?

Chaque table a 512 / 4 = 128 entrées . Le nombre maximal de tables de pages : 1 + 128+ 128*128 =16513 tables de pages

Page 97: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 97

Les algorithmes de remplacement de pages

Page 98: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 98

Les algorithmes de remplacement de pages

• Quand un défaut de page se produit, le S.E doit choisir une page à enlever de la mémoire afin de faire de la place pour la page qui doit être chargée

• Si la page qui doit être supprimée a été modifie quand elle était en mémoire, elle doit être réécrite sur le disque pour mettre à jour la copie disque

• Si la page n’a pas changé, la copie disque est déjà à jour et ne nécessite pas de réécriture. La page à lire écrasera simplement la page devant être évincée.

Page 99: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 99

Les algorithmes de remplacement de pages

• Bien qu’il soit possible de choisir au hasard la page à supprimer à chaque défaut de page, les performances du système seront meilleures si c’est une page peu utilisée qui est choisie

• Si une page souvent employée est enlevée, il faudra probablement qu’elle soit rechargée rapidement, ce qui entraînera un dépassement supplémentaire.

• La question fondamentale: doit-on supprimer de la mémoire une page appartenant au processus qui en demande une nouvelle, ou peut-on éliminer une page d’un autre processus ?

Page 100: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 100

L’algorithme optimal de remplacement de page

• Le meilleur algorithme de remplacement de page imaginable est facile à décrire mais impossible à implémenter.

• Au moment où un défaut de page est généré, plusieurs pages sont en mémoire. Une de ces pages sera référencée par une très prochaine instruction. Il se peut d’autres pages ne soient pas référencées avant la dixième, la centième ou la millième instruction qui suit

• Chaque page peut être étiquetée avec le nombre d’instruction qui seront exécutés avant que cette page ne soit référencée.

Page 101: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 101

L’algorithme optimal de remplacement de page

● L’algorithme de page optimal dit simplement que c’est la page dont l’étiquette est la plus grande qui sera enlevée. – Si une page n’est pas utilisée avant 8 millions d’instructions et

une autre page avant 6 millions d’instructions, – la suppression de la première repousse le défaut de page aussi

tard que possible

● Le seul problème avec cet algorithme est qu’il est irréalisable– Au moment où survient le défaut de page, le S.E n’a aucun

moyen de savoir quand chacune de ces pages sera référencée

Page 102: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 102

L’algorithme de remplacement de la page non récemment utilisée

• Afin de permettre au système d’exploitation de collecter des statistiques utiles sur le nombre de pages utilisées et le nombre de page inutilisées, la plupart des ordinateurs avec mémoire virtuelle possèdent 2 bits d’état associés à chaque page.– Le bit R est mis à 1 à chaque fois que la page est

référencée (lue ou écrite) et le bit M est mis à 1 quand la page est réécrite (modifiée)

– Ces bits doivent être mis à jour à chaque référence mémoire, et qu’il est donc essentiel que cette mise à jour soit matérielle

Page 103: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 103

L’algorithme de remplacement de la page non récemment utilisée

● Quand un processus démarre, les 2 bits de page pour toutes ses pages sont mis à 0 par le S.E

● Périodiquement (chaque interruption d’horloge) , le bit R est effacé, afin de distinguer les pages qui n’ont pas été récemment référencées de celles qui l’ont été.

● Quand un défaut de page est généré, le S.E examine touts les pages et les sépare en quatre catégories basées sur les valeurs courantes de R et M– Classe 0 : non référencée, non modifiée– Classe 1 : non référencée, modifiée– Classe 2 : référencée, non modifiée– Classe 3 : référencée, modifiée

Page 104: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 104

L’algorithme de remplacement de la page non récemment utilisée

● Bien que l’existence de page de classe 1 semble impossible à première vue, celles-ci sont générées lorsque le bit R d’une page de classe 3 est effacé par une interruption d’horloge– Les interruptions d’horloge n’effacent pas le bit M parce que cette

information est nécessaire pour savoir si la page a été réécrite sur le disque ou pas

– Si le bit R est effacé mais pas le bit M, cela aboutit à la classe 1.

● L’algorithme de la page non récemment utilisé ou NRU (Not Recently Used) enlève une page au hasard dans la classe la plus basse non vide.– Il vaut mieux enlever une page modifiée qui n’ pas été référencée au

moins dans un top plutôt qu’une page bonne qui est beaucoup utilisée.

Page 105: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 105

L’algorithme de remplacement de page premier entrée, premier sorti● Le S.E maintient une liste FIFO de toutes les pages

couramment en mémoire, la page la plus ancienne étant en tête de liste et la page la plus récente en queue

● Dans le cas d’un défaut de page, la page en tête de la liste est effacée et la nouvelle page ajoutée en queue de liste

● Inconvénient – les vieilles pages peuvent aussi être celles qui sont le plus

utilisées

Page 106: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 106

L’algorithme de remplacement de page de la seconde chance

• On peut apporter une modification simple à l’algorithme FIFO afin d’éviter la suppression d’une page à laquelle on a couramment recours.

• Il s’agit d’inspecter le bit R de la page la plus ancienne– S’il est à 0, la page est à la fois ancienne et inutilisée, elle est

donc remplacée immédiatement– Si le bit R est à 1, le bit est effacé, la page est placée à la fin

de la liste des pages, et son temps de chargement est mis à jour comme si elle venait d’arriver en mémoire

– La recherche continue alors

Page 107: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 107

L’algorithme de remplacement de page de la seconde chance

● Opération seconde chance:– pages triées selon l'ordre d'arrivée– Si le bit R de la page la plus ancienne est 1 alors on la met à la fin

de la liste (comme une nouvelle page) et on met son bit R à 0.

Page 108: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 108

L'algorithme de remplacement de la page la moins récemment utilisée

• Pour s'approcher au mieux de l'algorithme optimal, il faut se fonder sur l'observation suivante : les pages les plus référencées lors des dernières instructions seront probablement très utilisées dans les prochaines instructions.

• À l'inverse, des pages qui n'ont pas été employées depuis longtemps ne seront pas demandées avant un long moment.

• On peut en déduire l'algorithme suivant: quand un défaut de page se produit, c'est la page qui n'a pas été utilisée pendant le plus de temps qui est retirée.

Page 109: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 109

L'algorithme de remplacement de la page la moins récemment utilisée

• Cette méthode est appelée pagination LRU (Least Recently Used, la moins récemment utilisée).

• Cet algorithme LRU est réalisable mais reste coûteuse. – Mettre à jour cette liste à chaque référence mémoire: Couteux!!– Pour l'implanter totalement, il est nécessaire de gérer une liste chaînée

de toutes les pages en mémoire, avec la page la plus récemment utilisée en tête et la moins utilisée en queue.

– La difficulté est que cette liste doit être mise à jour à chaque référence mémoire.

– La recherche d'une page dans la liste, sa destruction et son déplacement en début de liste sont des opérations coûteuses en temps, même si elles sont réalisées de manière matérielle (en supposant qu'un tel matériel existe)

Page 110: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 110

L'algorithme de remplacement de la page la moins récemment utilisée

• Cependant, il existe d'autres manières d’implémenter cet algorithme avec des composants matériels particuliers.

• Considérons la plus simple d'entre elle. Cette méthode nécessite d'équiper le matériel avec un compteur 64 bits, « c », qui s'incrémente automatiquement après chaque instruction. – Par ailleurs, chaque entrée de la table des pages doit avoir un champ assez grand

pour contenir ce compteur.

• Après chaque référence mémoire, la valeur courante de « c » est enregistrée dans l'entrée de la table des pages pour l'entrée qui vient d'être référencée.

• Quand un défaut de page se produit, le S.E examine tous les compteurs dans la table des pages afin de trouver le plus petit d'entre eux. Celui-ci correspond à la page la moins récemment utilisée.

Page 111: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 111

L'algorithme de remplacement de la page la moins récemment utilisée

• Examinons à présent une deuxième solution matérielle. Pour une machine à n cadres de pages, le matériel doit gérer une matrice de n * n bits, initialement tous nuls.

• Quand une page k est référencée, le matériel commence par mettre à 1 tous les bits de la rangée k et tous les bits de la colonne k à 0.

• À chaque instant, la rangée dont la valeur binaire est la plus petite indique la page la moins récemment utilisée

Page 112: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 112

L'algorithme de remplacement de la page la moins récemment utilisée

Référence des pages: 0,1,2,3,2,1,0,3,2,3

Page 113: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 113

La simulation logicielle de l’algorithme LRU

• Bien que le deux algorithmes LRU précédents soient réalisables, peu de machines disposent du matériel adéquat.

• À la place, une solution logicielle peut être implantée– NFU: Not Frequently Used– L’algorithme de vieillissement

Page 114: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 114

L’algorithme NFU

• Il nécessite un compteur logiciel par page, initialement à 0

• À chaque interruption d’horloge, le S.E examine toutes les pages en mémoire– Pour chaque page, le bit R de valeur 0 ou 1, est ajouté à

son compteur– Le compteur mémorise les différents référencements de

page– Quand un défait de page se produit, c’est la page avec le

plus petit compteur qui est remplacée

Page 115: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 115

L’algorithme NFU

● Le problème principal de NFU est qu’il n’oublie rien. – Dans un compilateur à plusieurs passes, les compteurs

des pages très utilisées au cours de la première passe ont des valeurs élevées lors des passes suivantes

– Si la première passe a le plus long temps d’exécution, les pages contenant le code des passes suivantes ont toujours un compteur plus faible que les pages de la première passe

– Les système d’exploitation aura donc tendance à retirer des pages utiles plutôt que des pages non utilisées.

Page 116: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 116

L’algorithme de vieillissement● Il existe néanmoins une petite modification que l’on peut

apporter à l’algorithme NFU pour lui permettre de se comporter comme l’algorithme LRU

● Cette modification se réalise en deux temps:– Les compteurs sont décalés d’un bit à droite avant d’être ajoutés au bit R– Ensuite, le bit R est ajouté au bit de poids le plus fort (le bit de gauche)

plutôt que le bit le plus faible

● Supposons qu’après le premier top d’horloge, les bits R des pages 0 à 5 aient les valeurs 1,0,1,0,1,1– Entre les tops d’horloge 0 et 1, les pages 0,2,4,5 sont référencés et leurs

bits R sont mis à 1, alors que les autres restent à 0.

Page 117: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 117

L’algorithme de vieillissement

● Un compteur logiciel par page (initialisé à 0)

● À chaque interruption d'horloge, on examine toutes les entrées de la table des pages

● On décale à droite le compteur et on ajoute à gauche le bit R

Page 118: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 118

L’algorithme de vieillissement

● Quand un défaut de page se produit, la page dont compteur est le plus petit est retirée

● Il est évident qu’une page qui n’a pas été référencée pendant 4 tops d’horloge a quatre 0 dans son compteur– De ce fait elle aura une petite valeur que le

compteur de page non référencée pendant 3 tops d’horloge

Page 119: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 119

La segmentation

Page 120: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 120

Problèmes de la pagination

• Sécurité des zones mémoire– Comment le système peut-il s’assurer qu’un

processus utilise à bon escient son espace mémoire alloué ?

– Comment peut-il s’assurer que certaines zone mémoire restent correctement protégées en lectures, écritures et/ou exécution ?

Page 121: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 121

Problèmes de la pagination

• Gestion dynamique de la mémoire– Certains programmes gèrent de grandes

quantités de mémoire dont on ne peut prédire l’évolution

– Prévoir une trop grande quantité de mémoire peut être pénalisant pour les performances générales du système

– En prévoir une trop petite peut limiter l’utilisation du programme

Page 122: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 122

Problèmes de la pagination

• Bibliothèque chargées dynamiquement lors de l’exécution du code

– Les S.E s’appuient sur des bibliothèques dynamiques pour rendre les logiciels moins dépendant des différents versions des services fournis par le système

– Ces bibliothèques ont une interface d’appel bien définie mais ne sont pas incluses dans le logiciel qui les utilise

– C’est seulement au moment où elles sont nécessaire que le système les charge en mémoire et les exécute

– Ces bibliothèque ne savent pas à l’avance à quel offset elles se trouveront dans l’espace du processus, ce qui complique considérablement l’édition de liens à la volée que nécessite leurs chargement

Page 123: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 123

Principe de la segmentation

• Comment libérer le programmeur de la gestion de l’accroissement et de la diminution des tables?

• Un solution consiste à doter la machine de plusieurs espaces d’adresses indépendants appelés segments.

– Chaque segment est une suite d’adresse continues de 0 à une adresse maximale

– La longueur de chaque segment peut être comprise en 0 et la longueur maximale autorisée

– Les segments ont en générale des longueurs différentes– De plus leurs longueur peut varier en cours d’exécution– La longueur du segment de pile peut par exemple être augmentée lorsque

quelque chose est empilé et diminuée lors d’un dépilement

Page 124: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 124

Principe de la segmentation

• La segmentation est une technique gérée par l'unité de segmentation de la MMU, utilisée sur les systèmes d'exploitation modernes,

– qui divise la mémoire physique (dans le cas de la segmentation pure)

– ou la mémoire virtuelle (dans le cas de la segmentation avec pagination)

– en segments caractérisés par leur adresse de début et leur taille (décalage).

Page 125: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 125

Principe de la segmentation

• Puisque chaque segment constitue un espace d’adressage séparé, les segments peuvent changer de longueur de manière indépendante, sans que cela affecte les autres.

• Si une pile dans un segment requiert plus d’espace d’adressage, elle peut l’obtenir puisqu’elle ne peut rien atteindre d’autre dans son espace d’adressage

– Un segment peut évidemment se remplir, mais cela est rare, les segments étant en général très grands

• Une adresse est constituée de deux parties: <numéro du segment, déplacement (adresse à l’intérieur du segment>

Page 126: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 126

Principe de la segmentation

Dans un espace d'adressage à une dimension, une table des pages qui croît peut en chevaucher une autre.

Page 127: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 127

Principe de la segmentation

Une mémoire segmentée permet à chaque table de croître ou de diminuer indépendamment des autres.

Exemple: compilateur

Page 128: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 128

Principe de la segmentation

• un segment est une entité logique que le programme doit manipuler

• Un segment peut contenir une procédure, un tableau, une pile ou une succession de variables mais généralement il ne contient pas d’objets de natures différentes

Page 129: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 129

Considérations Pagination SegmentationLe programmeur doit-il connaître la technique utilisée?

Non Oui

Combien y a-t-il d'espaces d'adressage linéaires?

1 Plusieurs

L'espace total d'adressage peut-il dépasser la taille de la mémoire physique?

Oui Oui

Les procédures et les données peuvent-elles être séparées et protégées séparément?

Non Oui

Peut-on traiter facilement des tables dont les tailles varient?

Non Oui

Le partage de procédures entre utilisateurs est-il simplifié?

Non Oui

Pourquoi cette technique a-t-elle été inventée ?

Pour obtenir un grand espace d’adressage linéaire sans avoir à

acheter de la mémoire physique

Pour permettre la séparation des programmes et des données dans

des espace d’adressage logiquement indépendants et pour faciliter le partage et la

protection

Page 130: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 130

Implémentation de la segmentation pure• La mise en œuvre de la segmentation

diffère fondamentalement de celle de la pagination

– Les pages sont de taille fixe alors que les segments ne le sont pas

Page 131: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 131

Implémentation de la segmentation pure• Une mémoire physique contenant

initialement 5 segments

• (a) Le segment 1 est évincé et remplacé par le segment 7 plus petit

• (b) il existe un espace vide entre les segments 7 et 2

• (c) le segment 4 est remplacé par le segment 5

• (d) le segment 3 par le segment 6

• La mémoire est divisé en de nombreux morceaux, certains contiennent des segments et d’autres son vides

Page 132: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 132

Implémentation de la segmentation pure• (a) → (d): phénomène

du damier (checkerboarding) ou fragmentation externe, gaspillage de la mémoire dans les zone vides

• (e) opération de compactage permet cependant d’y remédier

Page 133: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 133

Implémentation de la segmentation pure

● l'adresse virtuelle issue du processeur à la forme (segment, déplacement).

● Le couple (segment, déplacement) sera traduit en adresse mémoire par le biais d'une table de segments contenant deux champs, limite et base.

● La base est l'adresse de début du segment, et limite la longueur du segement

● Un test est effectué pour vérifier que l'adresse est bien dans l'intervalle du segment.

Page 134: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 134

Page 135: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 135

La segmentation avec pagination (Intel)

● Dans les systèmes Pentium, la CPU génère des adresses logiques, qui sont attribuées à l'unité de segmentation.

● L'unité de segmentation produit une adresse linéaire pour chaque adresse logique.

● L'adresse linéaire est ensuite donnée à l'unité de pagination, qui à son tour génère l'adresse physique dans la mémoire principale.

● Ainsi, les unités de segmentation et de pagintation constituent l’équivalent de l’unité de gestion de la mémoire (MMU)

Page 136: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 136

La segmentation avec pagination (Intel)

• la segmentation paginée, – Chaque segment sera paginé. – Autrement dit, le champ déplacement d du

couple (s, d) de l'adresse virtuelle sera interprété comme un numéro de page et un déplacement (p, d’).

– (s,d) = (s,p,d’)

Page 137: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 137

La segmentation avec pagination (Intel)Segmentation Paginée

Page 138: Chapitre 4 Gestion de la mémoire - ESEN

4/28/19 138

Problème de la fragmentation

• Les systèmes paginés rencontrent un problème de fragmentation interne : de la place est perdue à la fin d'une page.

– une page entière est allouée à un processus, alors que seuls quelques octets sont occupés. Par exemple, si l'on suppose une taille de page de 4 Kio, un processus ayant besoin de 5 000 octets va se voir allouer 2 pages, soit 8 192 octets, près de 40 % est « perdu ».

• Les systèmes segmentés connaissent un problème de fragmentation externe : des espaces entre des segments sont trop petits pour loger de nouveaux fragments, cet espace est donc perdu.

Page 139: Chapitre 4 Gestion de la mémoire - ESEN

THE END