Vous êtes sur la page 1sur 132

GESTION DE LA MEMOIRE CENTRALE

Partie 2
INTRODUCTION
1

 Problèmes de l’allocation mémoire


 2 Contraintes d’allocation :
◼ Chargement total d’un processus
◼ Recherche d’un espace contigu

 Contraintes difficiles à satisfaire en même temps

Ces contraintes sont-elles réelles ou fictives?


INTRODUCTION
2

Caractéristiques d’un processus


 Structure modulaire et non linéaire

 Possibilité de charger le processus par parties ou par


morceaux
 Exemple: Programme C (ou programme JAVA)
◼ Fonction Main + Autres fonctions
◼ Classe Main + Autres classes

Exécution d’un processus ne nécessite pas son chargement


total Une partie suffit pour exécuter un processus
INTRODUCTION
3

 Taille d’un processus


 Largement supérieure à la taille de la MC : impossible de
charger tout le processus en MC.
 Solution
◼ Augmenter physiquement la taille de la mémoire:
◼ Limitée par les contraintes physique
◼ Autre solution
◼ Chargement totalement le processus en mémoire secondaire
◼ Chargement partiel (par partie selon besoins) en mémoire centrale
pour l’exécution.
INTRODUCTION
4

Nouvelle formulation du problème d’allocation


mémoire
 Contrainte de chargement total est levée

 Chargement partiel (selon besoins)


 Exemple d’un programme C
◼ Charger la fonction main
◼ Les autres fonctions seront chargées à la demande (au moment
de leurs appel)
 Résoudre la contrainte de contiguïté
Mémoire virtuelle
MÉMOIRE VIRTUELLE
5

 Extension virtuelle et non physique de la mémoire


centrale
Rappel : Extension physique
(rajout de module mémoire)
est limitée

 Extension logique ou virtuelle:


 Réserverune partie du disque pour étendre la MC
 Mémoire de type Swap
MÉMOIRE VIRTUELLE
6

 Espaces pour un processus : 2


 Mémoire centrale (Physique)
 Mémoire SWAP ( Partie du disque)

 Problèmes à résoudre
 Comment structurer ces 2 espaces
 Où charger les processus et comment

 Comment réaliser la correspondance entre la MC et la


mémoire SWAP
Pagination
7

Structuration des espaces


 Espace d'adressage d’un processus est découpé en

blocs linéaires (Unité d’allocation) de même taille :


Page
 Page: suite contigüe d’octets (512 ou plus,

généralement en puissance de 2)
 Allocation par multiple de pages

 Allocation contigüe ou dispersée des pages

 Contiguïtén’est plus une contrainte forte à respecter


mais devient un critère de performance
Pagination
8

 La MC physique est découpée de la même manière


que la MV en blocs linéaires de même taille
appelé: CASE ou le cadre de page.
 Case: suite contigüe d’octets
 Taille(Page) = Taille(Case)

 Allocation contigüe ou dispersée


Contiguïté n’est plus une contrainte
Pagination
9

Logical Mémoire
memory PAGE TABLE physique
Le SE divise la
mémoire physique enpage frame Attributes
bloc de même taille 0 4
appelé Cases ou 1 3
Cadres de pages
2 1
3 5
Pagination
10

Logical Mémoire
memory PAGE TABLE physique
Le SE divise la
mémoireP0physique enpage frame Attributes f0
bloc deP1même taille 0 4 f1
appeléP2Cases ou 1 3 f2
Cadres de pages
P3 2 1 f3
3 5 f4
f5
Pagination
11

Mémoire Physical
Le SE divise la
logique PAGE TABLE memory
mémoire logique en
page bloc
frame Attributes
de même taille f0
0 appelé
4 pages f1
1 de 3même taille que f2
les cases de la
2 1 f3
mémoire physique
3 5 f4
f5
Pagination
12

Mémoire Le SE divise la mémoire


Physical
logique PAGE TABLE
logique en bloc de memory
P0 même taille
page frame appelé
Attributes f0
pages
P1 0 de même
4 taille que les f1
P2 1 3 de la mémoire
cases f2
P3 2 1 physique. f3
.
3 5 f4
f5
Pagination
13

Chargement des processus


 Chargement total sur le disque

 Luiallouer le nombre de pages nécessaires (toujours


possible) : contigües ou dispersées.

 Chargement total ou partiel en mémoire centrale


 Luiallouer le nombre de cases nécessaires : contigües
ou dispersées.

La fragmentation externe est éliminée


Pagination
14

Mémoire Le SE divise la mémoire


Mémoire
logique PAGE en
logique TABLE
bloc de physique
même taille appelé
P0 page frame pages
Attributes f0
de même taille que les
P1 0 cases4de la mémoire P0 f1
physique.
P2 1 3 . P3 f2
P3 2 1 P2 f3
3 5 f4
Espace d’adressage
du processus (4 pages) P1
f5
Pagination
15

Adressage virtuel : Etant découpé en pages, les adresses


générées sont des adresses paginées :
 Un octet est repéré par son emplacement relativement au

début de la page à laquelle il appartient.


 L'adresse d'un octet est donc formée par le couple :

N° de page contenant Déplacement par rapport au


l'octet début de cette page
Pagination
16

 L’exécution réelle d’un processus nécessite que ce


dernier dispose de toutes les ressources physiques
nécessaires à un instant t.
Nécessité de charger partiellement des pages dans la
mémoire physique.
 Or, les octets dans la mémoire physique ne peuvent

être adressés au niveau matériel que par leurs


adresses physiques
D’où la nécessité de la mise en correspondance entre les
adresses virtuelles et les adresses physiques
Pagination
17

 Pour toute opération concernant la mémoire, il


faut donc convertir l'adresse paginée générée au
niveau du processeur en une adresse physique
équivalente.

 Cette conversion d'adresse est effectuée par le


Management Memory Units (MMU), qui sont des
circuits matériels de gestion.
Pagination
18

Correspondance des adresses


Virtuelle/Réelle
 Il faut savoir pour toute page, dans quelle
case de la mémoire centrale celle-ci a été
lancée.

 Ceci s'effectue grâce à une structure


particulière appelée la table de pages.
Pagination
19

Table de page
 C’est une table contenant autant d'entrées que de

pages dans l'espace d'adressage d'un proc.


 Chaque processus a sa propre table des pages.

 Chaque entrée de la table est principalement un


couple :
n°de page n°de case physique dans
laquelle la page est chargée
Pagination
20

 Les entrées dans la table de pages sont aussi


appelées descripteurs de pages.
 Le SE doit maintenir une table de pages pour

chaque processus
 Une table de pages est indexée par le numéro

de la page afin d’obtenir le numéro du cadre.


 Une liste de cadres disponibles est également
maintenue (free frame list)
Pagination
21

 Dans l’exemple, le processus a 4 pages dans son espace


d'adressage
 La table des pages a 4 entrées.
 Chaque entrée établit l'équivalence entre le
n°de page et n°de case dans la MC

Remarque: Seule la dernière page d’un programme peut


souffrir de fragmentation interne
(en moyenne 1/2 cadre par processus)
Pagination
22

Mémoire Mémoire
logique TABLE DE PAGES physique
P0 page Case Attributes f0
P1 0 4 f1
P2 1 3 f2
P3 2 1 f3
3 5 f4
f5

Le SE utilise une table de pages pour faire la


correspondance entre les pages du processus et les
cases de la mémoire physique
Pagination
23

Logical Mémoire
memory TABLE DE PAGES physique
P0 page Case Attributes f0
P1 0 4 f1
P2 1 3 f2
P3 2 1 f3
3 5 P0 f4
f5

Le SE utilise une table de pages pour faire la


correspondance entre les pages du processus et les
cases de la mémoire physique.
Pagination
24

Mémoire Mémoire
logique TABLE DE PAGES physique
P0 page Case Attributes f0
P1 0 4 f1
P2 1 3 f2
P3 2 1 P1 f3
3 5 P0 f4
f5

Le SE utilise une table de pages pour faire la


correspondance entre les pages du processus et les
cases de la mémoire physique.
Pagination
25

Mémoire Mémoire
logique PAGE TABLE physique
P0 page Case Attributes f0
P1 0 4 P2 f1
P2 1 3 f2
P3 2 1 P1 f3
3 5 P0 f4
f5

Le SE utilise une table de pages pour faire la


correspondance entre les pages du processus et les
cases de la mémoire physique.
Pagination
26

Mémoire Mémoire
logique TABLE DE PAGES physique
P0 page Case Attributes f0
P1 0 4 P2 f1
P2 1 3 f2
P3 2 1 P1 f3
3 5 P0 f4
P3 f5

Le SE utilise une table de pages pour faire la


correspondance entre les pages du processus et les
cases de la mémoire physique.
Pagination
27

Mémoire Mémoire
logique TABLE DE PAGES physique
P0 page Case Attributes f0
P1 0 4 P2 f1
P2 1 3 f2
P3 2 1 P1 f3
3 5 P0 f4
P3 f5

La pagination permet d’allouer à un programme des


blocs non-contigües en mémoire centrale.
Pagination
28

Mécanise de transformation des adresses :

Rappelons:
 Un programme est divisé en pages de taille S.
Chaque mot du programme a une adresse dite
adresse logique (virtuelle).

 Une adresse logique est formée par un couple <p,d>


p est le numéro de page et d est le déplacement
dans cette page.
Pagination
29

 Une adresse logique < p , d >

p le numéro de page
p = adresse logique div S

d déplacement (offset)
d = Adresse logiquemod S
Pagination
30

 Quand une adresse logique < p , d> est


générée par le processeur:
 Lacase f correspondant à la page p est
déterminée en utilisant la table de page.
 L’adresse physique est calculée par l’expression
(f*S+d)
 Accès réel à la mémoire
Pagination
31

Adresse Adresse
logique physique
p d f d

page case attr


d d
p f

p f

Mémoire Mémoire
logique physique
Pagination
32

Exemple
 Considérons les informations suivantes concernant une
correspondance
 Taille de la Page Size = 8 mots ➔ d : 3 bits
 Taille de la mémoire physique = 128 mots
= 128/8=16 cases ➔ f : 4 bits
 Considérons qu’un programme est au maximum de 4 pages ➔
p : 2 bits
 Soit A un programme de 3 pages où P0 → f3; P1 → f6; P2
→ f4
Mémoire logique Mémoire physique
Word 0 … …
33 Word 1 Page 0 Word 0
… (P0) Word 1 Frame 3
Word 7 Table de … (f3)
page
Word 8 Page Frame Word 7
Word 9 Page 1 0 3 Word 16
… (P1) 1 6 Word 17 Frame 4
Word 15 2 4 … (f4)
Word 16 Word 23
Word 17 Page 2
… (P2) … …
Word 23
Word 8
Word 9 Frame 6
… (f6)
Word 15
… …
Pagination
34

Program
Line
Word 0
Word 1

Word 7
Word 8
Word 9

Word 15
Word 16
Word 17

Word 23
Pagination
35

Ligne Adresse
programme logique
Word 0 00 000
Word 1 00 001
… …
Word 7 00 111
Word 8 01 000
Word 9 01 001
… …
Word 15 01 111
Word 16 10 000
Word 17 10 001
… …
Word 23 10 111
Pagination
36

Lignes Adresse Offset


programme logique (déplacement)
Word 0 00 000 000
Word 1 00 001 001
… … …
Word 7 00 111 111
Word 8 01 000 000
Word 9 01 001 001
… … …
Word 15 01 111 111
Word 16 10 000 000
Word 17 10 001 001
… … …
Word 23 10 111 111
Pagination
37

Ligne Adresse Offset Numéro de


programme logique (déplacement) page
Word 0 00 000 000 00
Word 1 00 001 001 00
… … … …
Word 7 00 111 111 00
Word 8 01 000 000 01
Word 9 01 001 001 01
… … … …
Word 15 01 111 111 01
Word 16 10 000 000 10
Word 17 10 001 001 10
… … … …
Word 23 10 111 111 10
Pagination
38

Ligne Adresse Offset Numéro de Numéro de


programme logique (déplacement) page case
Word 0 00 000 000 00 0011
Word 1 00 001 001 00 0011
… … … … …
Word 7 00 111 111 00 0011
Word 8 01 000 000 01 0110
Word 9 01 001 001 01 0110
… … … … …
Word 15 01 111 111 01 0110
Word 16 10 000 000 10 0100
Word 17 10 001 001 10 0100
… … … … …
Word 23 10 111 111 10 0100
Pagination
39

Ligne Adresse Offset Numéro de Numéro de Adresse


programme logique (déplacement) page Case physique
Word 0 00 000 000 00 0011 0011 000
Word 1 00 001 001 00 0011 0011 001
… … … … … …
Word 7 00 111 111 00 0011 0011 111
Word 8 01 000 000 01 0110 0110 000
Word 9 01 001 001 01 0110 0110 001
… … … … … …
Word 15 01 111 111 01 0110 0110 111
Word 16 10 000 000 10 0100 0100 000
Word 17 10 001 001 10 0100 0100 001
… … … … … …
Word 23 10 111 111 10 0100 0100 111
Pagination : Implémantation
40

 Chaque accès à la mémoire doit se faire à travers


la table de pages.
 Pour cette raison elle doit être implémentée de
manière efficace
 Comment implémenter une table de pages?
 Utilisant
des registres dédiés
 Garder la table de pages en MC

 Use content-addressable associative registers


Pagination :Implémantation 1
41

 La table de pages peut être sauvegardée à l'aide


d’un ensemble de registres matériels du processeur.
 Lors de la commutation de processus, la table des
pages sera sauvegardée avec le contexte processeur
dans le PCB du processus.
 Dans ce cas la table des pages ne peut pas être très
grande (256 entrées).

Pagination :Implémantation 1
42

 L’accès à un emplacement mémoire nécessite


seulement un accès à la mémoire : celui nécessaire à
la lecture ou l'écriture de l'octet recherché puisque
la table des pages est stockée dans des registres
du processeur.

 Mais dès que la taille de la table est plus grande


la solution devient couteuse (car nécessiterait
plusieurs registres)
Pagination :Implémantation 1
43

logical address PTLR: Page Table Length Register

p d

physical address
YES f d
access PT access
P<PTLR
in registers memory

NO rat mat

ERROR

Effective Memory Access Time


emat=rat+mat
Pagination :Implémantation 2
44

 Placer les tables des pages en mémoire centrale.

 La table active est repérée par un registre spécial


du processeur le PTBR (Page Table Base Register).

 Chaque processus sauvegarde dans son PCB la


valeur de PTBR correspondant à sa table.
Pagination :Implémantation 2
45

 Accéder à un emplacement mémoire nécessite deux


accès à la mémoire :
 unpremier accès pour lire l'entrée de la table des
pages correspondant à la page cherchée : c'est
l'opération (p + adresse table) qui délivre une adresse
physique de page dans la mémoire centrale.

 un
second accès est nécessaire à la lecture ou l'écriture
de l'octet recherché à l'adresse :
<adresse physique > + d.
Pagination :Implémantation 2
46 logical address
PTBR: Page Table Base Register
p d PTLR: Page Table Length Register

Access PT
entry physical address
YES in Memory f d
P<PTLR at address access
PTBR + p memory

NO mat mat
Effective Memory Access Time : emat=mat+mat=2*mat
ERROR

• Dans cette approche l’avantage, il n’y a pas de limite


de taille à la table des pages.
• Mais le problème : le temps d'accès à un emplacement
mémoire d'un programme
Pagination :Implémantation 3
47

 Cette solution est une combinaison des deux


précédentes et a pour objectif d’accélérer les accès à
la mémoire centrale et compenser le coût lié à la
pagination.
Principe
 On utilise : un cache associatif placé en amont de la
mémoire centrale.
 Ce cache associatif contient les couples

<n°de page, adresse d'implantation de la case> les


plus récemment accédés.
Pagination :Implémantation 3
48

 Lorsque la MMU doit effectuer une conversion


d'adresse paginée, elle cherche tout d'abord dans le
cache si la correspondance entre N°de page et
l’adresse d'implantation de la case recherchée n'est
pas déjà dans le cache.
 Si non, elle accède à la table des pages en MC et
place le nouveau couple référencé dans le cache.
 Si oui, elle effectue directement la conversion : un seul
accès mémoire est alors nécessaire pour accéder à
l'octet recherché.
Pagination :Implémentation 3
Associative registers
49

 La mémoire associative utilisée, a les propriétés


suivantes:
 Taille réduite
 Utilise une technologie différente de la MC permettant une
recherche associative par contenue
 Accès rapide (accès parallèle): la recherche dans toute la
mémoire associative se fait en un cycle machine.
 Coûteuse
Pagination :Implémentation 3
Associative registers
50

 Terminologie Régistres associatifs TLB


TLB: Translation Lookaside Buffers, ou caches
d’adressage
 Le TLB est un tableau de registres de matériel où
chaque ligne contient une paire:
 (Numéro de page logique, Numéro de cadre)
 Le TLB utilise du matériel de mémoire associative:
interrogation simultanée de tous les numéros
logiques pour trouver le numéro physique
recherché
Pagination :Implémentation 3
Associative registers
51

 TLB: Translation Lookaside Buffers, ou caches d’adressage


 Si la page recherchée a été utilisée récemment elle se trouvera
dans les registres associatifs : recherche rapide
No Page No Cadre

3 15
7 19
0 17
2 23

recherche
Pagination :Implémentation 3
Schéma d’utilisation TLB
52

Dans l’UCT

En
mémoire

Dans le cas de ‘miss’, f est trouvé en mémoire, puis il es mis dans le TLB
Pagination :Implémentation 3
Associative registers
53

 Sur réception d’une adresse logique, le processeur


examine le TLB
 Si cette entrée de page y est , le numéro de cadre en
est extrait
 Sinon, le numéro de page indexe la table de page du
processus (en mémoire)
 Cette nouvelle entrée de page est mise dans le TLB

 Elle remplace une autre pas récemment utilisée

 Les premières trois opérations sont faites par


matériel
Pagination :Implémentation 3
Temps d’accès mémoire réel avec TLB
54

Supposons que la recherche dans TLB = 1ns : 1 nanosecondes


Supposons que le temps de recherche en mémoire = 1ms : 1 microseconde
 = probabilité de touches (Hit Ratio) : (quantité entre 0 et 1)
probabilité qu’un numéro de page soit trouvé dans les registres associatifs
Rq: ceci est en relation avec le nombre de registres associatifs disponibles

Effective Memory Access Time (EMAT) ou Temps Effectif d’Accès : (TEA)


TEA= (1ns+1ms)  + (1ns+2ms)(1 – )
Si  est grand, ce temps sera près de 1ms

Rq:Dans plusieurs ordinateurs, il y a simultanéité entre ces opérations et d’autres


opérations de l’UCT donc le temps d’accès réel est encore plus réduit
Pagination :Implémentation 3
Associative registers
55 PTLR: Page Table Length Register
logical address physical address
f d
p d
Found?
Yes (HIT)
No (MISS)
Yes
P<PTLR search PT Access PT
in AR entry physical address
No rat in Memory f d
at address access
PTBR + p memory
ERROR
mat mat

Effective Memory Access Time: h: hit ratio

Emat=h *ematHIT + (1-h) * ematMISS =h(rat+mat)+(1-h)(rat+mat+mat)


Pagination :Implémentation 3
Temps d’accès mémoire réel avec TLB
Formulation plus générale
56

 m: temps d’accès RAM


 : temps d’accès mémoire associative
 : probabilité de touche

TEA = (m+ )  + (2m+ )(1- ) = m  +  + 2m - 2m  +  - 


= 2m +  - m 

 Nous avons jusqu’ici fait l’hypothèse que le tableau


de page a un seul niveau…
 Hypothèse fausse en général, v. suite…
Pagination :Implémentation 3
Comptage d’utilisation dans TLB
57

 Chaque paire dans le TLB est fournie avec un indice de référence pour savoir
si elle a été utilisée récemment. Sinon, elle est remplacée par la dernière
paire dont on a besoin
 Contenu courant:
Compt No Page No Cadre

1 3 15
0 7 19
3 0 17
2 2 23

 Compt=0 indique la ligne moins récemment utilisée


 Si une nouvelle adresse doit être ajoutée, on remplace cette ligne là et son
Compt devient 3, tous les autres Compt sont décrémentés
 Si par contre on utilise l’adresse de la ligne 1, son Compt devient 3, les Compt
des deux dernières lignes sont décrémentés
Pagination :Implémentation 3
58

 Sur les systèmes où les processus ont un grand


nombre de pages, on peut faire appel à un
système multi-niveaux.

 Mécanisme permettant aux tableaux de pages


d’être eux-mêmes paginés.

 Il peut y avoir jusqu’`a 5 niveaux de


pagination.
Pagination :Implémentation 3
59

 La taille de la table des pages peut être très grande :


220 entrées (plus d’1 million) pour un adressage virtuel
sur 32 bits et des pages de 4 Ko.
 Pour éviter d’avoir des tables trop grandes en mémoire,
de nombreux ordinateurs utilisent des tables de pages à
plusieurs niveaux.
 Par exemple, une table des pages à deux niveaux, pour
un adressage sur 32 bits et des pages de 4 Ko, est
composée 1024 tables de 1024 entrées.
Pagination :Implémentation 3
60

 Il est ainsi possible de charger que les tables


nécessaires.
 Dans ce cas, une adresse virtuelle de 32 bits

est composée de trois champs :


 un pointeur sur la table du 1er niveau (10 bits)
 un pointeur sur une table du 2nd niveau (10 bits)

 un déplacement dans la page (12 bits).


Pagination :Implémentation 3
Table de pages à deux niveaux
61

 Le numéro de pages peut être divisé en un ou


plusieurs composants:
 Le premier sert d’index dans une table de page de
niveau supérieur.
 L’entrée de cette table pointe vers la table du niveau
inférieur.
 Le prochain composant du numéro page sert d’index
dans cette table. Le processus se poursuit jusqu’à ce que
l’on accède à l’entrée de la table de niveau inférieur.

Pagination :Implémentation 3
Table de pages à deux niveaux
62

Tableau de pages
du tableau de pages
Pagination :Implémentation 3
Table de pages à deux niveaux
63

 La partie de l ’adresse qui appartient au numéro de page est


elle-même divisée en 2

Chap. 9
Pagination : protection
64

 Des bits de protection sont associés à chaque page de l’espace


d’adressage du processus permettent ainsi de définir le type
d’accès autorisés à la page.
 Ces bits de protection sont mémorisés pour chaque page, dans
la table des pages du processus.
 Lors d’un accès à une page, la cohérence du type d’accès avec
les droits associés à la page est vérifiée et une trappe est levée
par le système d’exploitation si le type d’accès réalisé est
interdit.
 Chaque processus ne peut avoir accès qu’à sa propre table des
pages et donc à ses propres pages.
Mémoire Virtuelle
65

 Un des objectifs est de pouvoir exécuter des


programmes dont la taille réelle dépasse la
taille physique disponible.

 L’idée : SE garde en mémoire les parties du


programme qui sont utilisées et stocke le reste
dans le disque.
Mémoire Virtuelle
66

Exemple:
 on peut exécuter un programme de 1 Mo sur
une machine de 256 Ko
 En choisissant judicieusement les 256 Ko du

programme à mettre en mémoire principale à


tout instant.
 Les autres parties effectuent des va-et-vient
entre le disque et la mémoire
Mémoire Virtuelle
67

 La multiprogrammation implique en plus de charger plusieurs


programmes en mémoire centrale de manière à obtenir un bon
taux d'utilisation du processeur

 Ces processus demandent plus de mémoire virtuelle que


physique.
Mémoire Virtuelle: paginée
68

 Dans cette solution un processus est presque aussi performant


que si toutes les pages du processus étaient en mémoire
principale:
 (les seules pertes de temps sont dans les transitions car des pages
doivent être récrites et lues du disque)
 La table de traduction indique donc pour chaque page
d’adresse logique:
 Si la page est invalide (i.e. non accessible)
 l’endroit où elle se trouve (disque/mémoire)
Mémoire Virtuelle: paginée
69
Mémoire Virtuelle: paginée
70

 Supposons ici que l'exécution des programmes 1, 2 et


3 soit nécessaire pour obtenir ce taux d'utilisation du
cpu satisfaisant.
 On peut remarquer qu'une fois les programmes 1 et
2 chargés dans la mémoire, toutes les cases sont
occupées.
 le programme 3 ne peut pas être chargé.
Mémoire Virtuelle: paginée
71
Mémoire Virtuelle: paginée
72

 Pour la mise en œuvre de cette solution avec un


système paginé, il faut modifier la structure de la
table de pages.
 Puisque les pages d'un espace d'adressage de
processus ne sont pas toutes chargées en mémoire
centrale, il faut que le processeur puisse détecter leur
éventuelle absence lorsqu'il cherche à effectuer une
conversion d'adresse paginée vers l'adresse physique.
Mémoire Virtuelle: paginée
73
Mémoire Virtuelle: paginée
74

 Chaque entrée de la table des pages comporte


alors un champ supplémentaire, le bit Validation V,
qui est à vrai (1 ou V) si la page est effectivement
présente en mémoire centrale.
Nouveau format du tableau des pages (la même idée peut être
appliquée aux tableaux de segments)

bit présent
Si la page est en mémoire Adresse de la Bit 1 si en mém. princ.,
principale., ceci est une page présent 0 si en mém second.
adresse de
mémoire Principale

sinon elle est une adresse de


mémoire secondaire

Au début, bit présent = 0 pour toutes les pages


75
Mémoire Virtuelle: paginée
76
Mémoire Virtuelle: paginée
77

 Pour le processus 1, la page 1 est chargée dans la


case 2, le bit de validation est à vrai (V).
 La page 2 est chargée dans la case 4, le bit de
validation est à vrai.
 Par contre la page 3 n'est pas présente en mémoire
centrale et donc le bit de validation est à faux (I pour
Invalide) : dans ce cas, le champs n° de case n'a pas
de signification
Mémoire Virtuelle: paginée
78

Page A en RAM et sur


disque

Page E seulement sur


disque

En ce moment, ce proc a besoin de seulement


? pages pour exécuter
Chap 10
Mémoire Virtuelle: paginée
79

 Exécution d’un Processus : Le SE charge la mémoire


principale de quelques parties (seulement) du programme
(incluant le point de départ)
 Chaque entrée de la table de pages possède un bit
présent qui indique si la page ou segment se trouve en
mémoire principale.
 L’ensemble résident (résident set) est la portion du
processus se trouvant en mémoire principale.
Mémoire Virtuelle: paginée
80

 Si un processus cherche à accéder à une page non


présente en mémoire centrale, il se produit une
interruption (trap): un déroutement de
Défaut de page.

 Le système d'exploitation lance une entrée/sortie


disque pour charger la page en mémoire dans une
case libre
Mémoire Virtuelle: paginée
Exécution d’un défaut de page : va-et-vient plus en détail
81

Mémoire
virtuelle
Mémoire Virtuelle: paginée
Séquence d’événements pour défaut de page
82

 Trappe au SE : page demandée pas en RAM :


Commutation de contexte:
 Sauvegarder registres et état du proc dans PCB Processus est mis
‘en attente’.
 Un autre proc peut maintenant gagner l ’UCT
 Traitant d’interruption : SE détermine si la page demandée est légale
sinon: terminaison du processus
 Si oui il trouve la position de la page sur disque dans le descripteur
de la page
 Lire la page de disque dans un cadre de mémoire libre (supposons
qu`il y en a)
 Exécuter les opérations disque nécessaires pour lire la page
Mémoire Virtuelle: paginée
Séquence d’événements pour défaut de page
83

 L’unité disque a complété le transfert et interrompt l’UCT


 Commutation de contexte : sauvegarder les registres etc. du proc
exécutant
 SE met à jour le contenu du tableau des pages du proc. qui a
causé le défaut de page
 Ce processus redevient prêt=ready
 À un certain moment, il commence à s’exécuter
 la page désirée étant en mémoire, il pourra maintenant continuer

Il s’agit d’un processus essentiellement semblable à une E/S,


mais probablement ils sera traité différemment par le SE
(ajout d’un état: en attente de pages)
Mémoire Virtuelle: paginée
84

 Lors d'un défaut de page, la page manquante est


chargée dans une case libre.

 Mais il est possible que la totalité des cases de la


mémoire centrale soient occupées.

 Le problème du choix des pages à remplacer se


pose alors.
Mémoire Virtuelle: paginée
85

Solutions

 Chargement différé
 Attendrequ’une case se libère
 On se ramène au problème de placement

 Chargement immédiat (Ex: Priorité)


 Décharger une page (vider une case)
 Charger la page qui a fait défaut
Mémoire Virtuelle: paginée
86

 Gestion de défauts de pages


Stopper temporairement l’instruction
Trouver un bloc libre :
(algorithme de remplacement)
Charger la page
Relancer l’instruction
Mémoire Virtuelle paginée
Remplacement de pages
87

 S’il n’y a pas de cadres libres en RAM il faut :


Sélectionner une page victime :
 choisir une page déjà en mémoire principale,
appartenant au même ou à un autre processus, qu’il est
possible d ’enlever de la mémoire principale.
 Un cadre de mémoire sera donc rendu disponible

 Enregistrer la page victime dans le disque si nécessaire


 Modifier la table des pages


La page victime...
88

Chap 10
Mémoire Virtuelle paginée
Remplacement de pages
89

 Enregistrer : Seulement si la page a été changée


depuis qu’elle a été amenée en mémoire principale
sinon, sa copie sur disque est la même.
 Remarque: Plusieurs cadres de mémoire ne
peuvent pas être Victimes par exemple :
 Cadres contenant le noyau du SE,
 tampons d ’E/S
 …etc
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
90

 Choisir la victime de façon à minimiser le taux


de défaut de pages : pas évident!!!
 Plusieurs possibilités:

 Page dont nous n’aurons pas besoin dans le


futur? impossible à savoir!
 Page pas souvent utilisée?
 Page qui a été déjà longtemps en mémoire??
 … etc.

Chap 10
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
91

 Différents champs sont ajoutés dans la table des pages,


pour gérer les remplacements de pages.

 Un bit M (Modification ou Dirty bit) est à vrai dès que la


page est modifiée en mémoire centrale. Lors de son
remplacement, il faudra réécrire cette page sur le disque.

 Un champ Accès permet de stocker des infos utiles pour


pouvoir choisir selon l’algorithme la page victime lors d’un
remplacement.
92
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
93

 Pour libérer une case : deux possibilités


 Remplacement global : La page à décharger est prise à un
processus quelconque
(parmi l'ensemble des cases)
 Remplacement local : La page à décharger est prise au
processus qui a fait la faute (parmi les cases occupées par les
pages du processus)
◼ Allocation d’un nombre de blocs constant à un processus
◼ Détermination du nombre de blocs : notion de working set
◼ Indices des pages adressées lors des K derniers accès
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
94

 Les algorithmes de choix de pages à


remplacer doivent être conçus de façon à
minimiser le taux de défaut de pages à long
terme. Mais :

 ilsne peuvent pas impliquer des inefficacités


 Ni l’utilisation de matériel dispendieux
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
95

 Il est intolérable d’exécuter un programme logiciel


chaque fois qu’une opération de mémoire est exécutée
car:
 Ceci impliquerait des accès additionnels de mémoire
 Les opérations qui doivent être faites à chaque accès
de mémoire doivent être câblées.
 Cependant un programme peut être exécuté chaque
fois qu’il y a un défaut de pagination
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
96

Éléments de base :
 Chaîne de référence : Suite de n°de pages référencées par
un processus
Exemple : <1,1,1,4,4,5,2,3,3,3,1,1, … >

 Principe de localité d’accès


 Durantune période, un processus accède au même sous-
ensemble de pages au cours de son exécution.
 Concentration des accès dans un sous-ensemble
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
97

Critères de performance

 Nombre de défauts de pages par chaîne de


références / Algorithme.

 Meilleur algorithme
Celui qui donne le plus petit nombre de défauts de
pages pour une chaîne donnée
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
98

Propriétés d’une chaine de références


 Sous-séquence stable: défini sur une période

 Durant ce lap le processus fait référence aux mêmes pages.


 Accès regroupés

 Exemple : exécution séquentielle d’une fonction.

 Sous-séquence non stable:


 Processus fait référence à des pages de manière aléatoire.
Exemple: Appel de fonctions.
 Moins fréquentes et moins longue que les Sous-séquences
stables.
Mémoire Virtuelle paginée
Algorithmes de remplacement pages
99

Intérêt
 Il est possible de deviner les accès futurs à partir

des accès récents


 Processus entre dans une période de stabilité quand
il commence l’exécution d’une fonction, d’une
méthode.
Mémoire Virtuelle: paginée
100

 Algorithmes de sélection de la case à libérer utilisés


par les SE:
 RANDOM
 OPTIMUM
 NRU (Not Recently Used)
 FIFO (First In First Out)
 Seconde chance - Horloge
 LRU (Last-Recently Used)
Mémoire Virtuelle paginée
Algorithme : Random
101

 L’agorithme de type (Random) : on choisit


la page victime au hasard.
 Simple mais !!

 Risque de supprimer une page qui sera

réutilisée immédiatement

Très mauvaises performances


Mémoire Virtuelle paginée
Algorithmes :OPTIMAL Algorithme de Belady
102

 L’algorithme Remplacement de page optimal (OPT)


choisit pour page à remplacer celle qui sera
référencée le plus tardivement dans le futur
 Produit le + petit nombre de défauts de page

 Mais ça suppose de connaître la date à laquelle chaque


page sera référencée dans le futur, ce qui est impossible
dans la pratique.
 Peut servir dans les simulations comme référence pour
estimer les performances des autres algorithmes.
Mémoire Virtuelle paginée
Algorithmes :OPTIMAL Algorithme de Belady
103
Mémoire Virtuelle paginée
Algorithme : Not Recently Used NRU
104

 On associe à chaque page 2 bits


R : referenced (read ou write)
 M : Modified (écrite)

 Ces flags sont normalement gérés par hardware


 Quand un processus démarre, les 2 flags sont à 0
R est mis à 1 quand un accès mémoire est effectué
 Périodiquement (tick horloge = 20ms), les flags R sont remis
à0
 Permet de distinguer les pages accédées récemment
Mémoire Virtuelle paginée
Algorithme : Not Recently Used NRU
105

 Les pages sont divisées en 4 catégories


 0: non référencées, non modifiées
 1: non référencées, modifiées R:0 M:0 R:0 M:1
 2: référencées, non modifiées Classe 0 Classe 1
R:1 M:0 R:1 M:1
 3: référencées, modifiées
Classe 2 Classe 3

 L’algorithme NRU enlève lors d’un défaut de page une


page au hasard de la classe la plus petite
 Très facile à implémenter et relativement efficace
Mémoire Virtuelle paginée
Algorithme : First-In First-Out (FIFO)
106

L’IDEE:
 Une page qui a été longtemps en mémoire a eu sa

chance de s’exécuter

 Lorsque la mémoire est pleine :


 On remplace les pages qui sont en mémoire depuis « le
plus long temps » les plus vieilles
 D’où: “first-in, first-out”
Mémoire Virtuelle paginée
Algorithme : First-In First-Out (FIFO)
107

 Simple à mettre en application


 Utilisationd’une liste FIFO
 Lors d’un défaut de page : Page en tête retirée, Nouvelle
page ajoutée en queue.

 Mais peut avoir de très mauvaises performances


 Retirer des pages utiles
 Très rarement utilisé
Mémoire Virtuelle paginée
Algorithme : First-In First-Out (FIFO)
108
Mémoire Virtuelle paginée
Algorithme de la deuxième chance
109

 Semblable à FIFO, mais tient compte de l’utilisation récente


des pages
 On utilise FIFO et un bit d’utilisation R indiquant les cadres qui viennent
d’être utilisés (ont le bit R=1)
 Lors d’un défaut de page on fait l’inspection du bit R de la plus vieille
page (en tête)
 Si R==0 (page non accédée récemment), on peut donc la remplacer

 Si R==1 la page est mise en fin de liste avec R=0


◼ La page a droit à une deuxième chance
◼ l’algorithme continue sur la prochaine page de la liste
 Si toutes les pages ont R à 1, alors on retrouve FIFO
Mémoire Virtuelle paginée
Algorithme de l’horloge
110

 C’est une implémentation différente de l’algorithme de


la deuxième chance

 L’algorithme de la deuxième chance fait beaucoup de


manipulations de liste : Pas forcément efficace

 Idée: Utilisation d’une liste circulaire comme une horloge


: Une « aiguille » pointe vers la page la plus ancienne
Mémoire Virtuelle paginée
Algorithme de l’horloge
111

Si Défaut de page Alors


 La page pointée est inspectée

 Si R==0

 Page supprimée
 Nouvelle page insérée à sa place

 Aiguille avancée de 1

 Si R==1
 R=0

 Aiguille avancée de 1
Algorithme de l’horloge: un exemple (Stallings).
112
Les pages sont en ordre FIFO

La page 727 est chargée dans le cadre 4.


112 La proch. victime est 5, si elle n’est pas utilisée avant
Mémoire Virtuelle paginée
Algorithme : LRU
113

LRU: Least Recently Used


 Approximation de l’algorithme Optimal

 Choix de la Page victime : La moins récemment

référencée
Idée : utiliser le passé pour prédire le futur
 Page récemment référencée a plus de chance d’être
référencée de nouveau qu’une page ancienne.
 Classer les pages par leur ordre chronologique

d’utilisation
Mémoire Virtuelle paginée
Algorithme : LRU
114

 Ordre chronologique d’utilisation


 Remplace la page dont la dernière référence
remonte au temps le plus lointain
(le passé utilisé pour prédire le futur)

 En raison de la localité des références, il s’agit de la


page qui a le moins de chance d’être référencée.
 Performance proche de l’algo. OPT
Mémoire Virtuelle paginée
115
Algorithme : LRU
 Difficile à implémenter
 Maintenir une liste chaînée ordonnée
 Modifier la liste à chaque accès mémoire.

 Implémentation hardware
 Un compteur C est incrémenté après chaque instruction
 La valeur de C au moment d’un accès mémoire est stocké dans
l’entrée correspondante de la table des pages
 Si défaut de page le SE examine les valeurs du compteur dans
les pages et trouve l’accès le plus ancien
Mémoire Virtuelle paginée
Algorithme : LRU
116
Mémoire Virtuelle paginée
Algorithme : LRU
117

 Exemple: Un processus de 5 pages s’il n`y a que 3


pages physiques disponibles.

 Dans cet exemple, OPT occasionne 3+3 défauts,


LRU 3+4.
Comparaison OPT-LRU
118

Stallings
LRU avait ôté la page 3 ne sachant pas qu’elle sera bientôt demandée
Comparaison de FIFO avec LRU (Stallings)

119

119

Contrairement à FIFO, LRU reconnaît que les pages 2 et 5 sont en cours


d’utilisation. Dans ce cas, la performance de FIFO est moins bonne:
LRU = 3+4, FIFO = 3+6
Comparaison: Horloge, FIFO et LRU (Stallings)

Astérisque indique que le bit utilisé est 1


L’horloge protège du remplacement les pages
fréquemment utilisées en mettant à 1 le bit “utilisé” à
chaque référence
120 Fautes: LRU = 3+4, FIFO = 3+6,Chap 10
Horloge = 3+5
Résumé des algorithmes le plus importants
121

OPTIMAL Le meilleur en principe mais pas


implantable, utilisé comme référence
LRU Excellent en principe, mais demande du
matériel dispendieux
FIFO Facile à implanter, mais peut écarter des
pages très utilisées

Horloge Modification de FIFO vers LRU:


Evite d’écarter des pages récemment
utilisées

Les algorithmes utilisés en pratique sont des variations et


combinaisons de ces concepts
Problème conceptuel avec FIFO
122

 Les premières pages amenées en mémoire sont


souvent utiles pendant toute l’exécution d’un
processus!
 variables globales, programme principal, etc.
 Ce qui montre un problème avec notre façon de
comparer les méthodes sur la base d ’une séquence
aléatoire:
 lesréférences aux pages dans un programme réel ne
seront pas vraiment aléatoires
Utilisation d’une pile (stack)
123

 Quand une page est utilisée, est mise au sommet de


la pile.
 donc la page la plus récemment utilisée est toujours au
sommet,
 la moins récemment utilisée est toujours au fond

 Bonne implémentation du principe de localité,


cependant…
 La pile doit être mise à jour chaque fois qu’une
page est utilisée
 Inefficace, pas pratique
Anomalie de Belady
124

 Pour quelques algorithmes, dans quelques cas il


pourrait avoir plus de défauts avec plus de
mémoire!

 Le problème se voit surtout avec FIFO

Chap 10
Anomalie de Belady
Situation considérée normale
125
Anomalie de Belady (FIFO)
126

Cas d’intérêt théorique: + de mémoire, + de fautes


Anomalie de Belady (FIFO)
127
Anomalie de Belady (FIFO)
128
Problème de l’écroulement du
129
système
Si le nombre de processus est trop grand, l'espace
propre à chacun sera insuffisant.

ils passeront alors leur temps à gérer des défauts de


pages.

C'est ce qu'on appelle


L'écroulement du système.
Problème de l’écroulement du
130
système
Problème de l’écroulement du
131
système
 On peut limiter le risque d'écroulement en
surveillant le nombre de défauts de page
provoqués par un processus.
 Si un processus provoque trop de défauts de pages
(au-dessus d'une limite supérieure) on lui allouera
plus de pages ;
 au-dessous d'une limite inférieure, on lui en retirera.
 S'il n'y a plus de pages disponibles et trop de
défauts de pages, on devra suspendre un des
processus.

Vous aimerez peut-être aussi