un algorithme de remplacement de page

publicité
Mémoire virtuelle
Abdelouahed Gherbi
Hiver 2014
LOG 710 Hiver2014
1
Plan
•
•
•
•
•
Introduction
Pagination
Pagination à la demande
Algorithme de remplacement de pages
Écroulement
LOG 710 Hiver2014
2
Introduction
• Mémoire virtuelle
– Technique qui permet l’exécution de processus qui ne sont pas complétement
chargés en mémoire physique
• Avantage
– Les programmes peuvent être bien plus larges que la mémoire physique
• La mémoire virtuelle
– crée une abstraction de la mémoire principale qui consiste en un tableau de
stockage extrêmement large
– Libère le programmeur de la limitation de la mémoire
• La mémoire virtuelle n’est pas facile à implémenter et peut causer une
dégradation substantielle de la performance si elle est mal utilisée
LOG 710 Hiver2014
3
Pagination
•
Pagination :
–
–
•
Méthode de gestion de la mémoire
Permet que l’espace d’adresses physiques d’un processus d’être
non contigü (discontinu)
La mémoire physique est divisée en blocs de taille fixes
appelés cadres de pages
–
La taille est une puissance de 2 entre 512 bytes et 16 MB
•
L’image mémoire d’un programme (mémoire logique) est
divisée en blocs de la même taille appelés pages
•
Pour exécuter un programme de n pages, on a besoin de
trouver n cadres libres pour charger les pages du programme
•
Utiliser une table de pages pour translater les adresses
logiques en adresses physiques (mapping)
•
La pagination élimine le problème de fragmentation externe
mais pas celui de la fragmentation interne
LOG 710 Hiver2014
Modèle de mémoire
paginée [1]
4
Pagination
•
Support matériel nécessaire pour la pagination [1]
LOG 710 Hiver2014
5
Pagination
•
Translation d’adresse
•
L’adresse générée par la CPU (adresse logique) est divisée
en :
– Numéro de page (p) – utilisé comme index dans la
table de page d’un processus. Cette table de page
contient l’adresse de base de chaque cadre de page
(numéro du cadre) contenant la page correspondante
en mémoire physique
– Décalage dans la page (offset) (d) –
• Le déplacement par rapport au début de la page
• Combinée avec le numéro du cadre (adresse de
base du cadre) pour former l’adresse physique
envoyée à l’unité de mémoire
– Pour un espace d’adresses 2m et une taille de page 2n
LOG 710 Hiver2014
6
Pagination
•
•
•
•
Exemple
Soit une machine avec une adresse virtuelle sur 16bits
– Numéro de page : 4 bits
– Décalage dans une page : 12 bits
Une adresse logique (virtuelle) 8196
– 0010000000000100 en binaire
– 2004 en hexa
La translation de l’adresse virtuelle en adresse logique
LOG 710 Hiver2014
7
Pagination
•
Exercices 01 et 02
LOG 710 Hiver2014
8
Implémentation de la table des pages
• Le système d’exploitation doit allouer une table de pages pour
chaque processus
• Un pointeur vers la table des pages d’un processus est gardé dans le
PCB
• L’implémentation matérielle de la table de pages peut se faire de
plusieurs façons
• Dans un ensemble dédié de registres de la CPU
– Très rapide
– Espace limite (pas adéquat pour les pages de grandes tailles)
• En mémoire centrale
– Plus d’espace pour accommoder des grandes tables de pages
– Quel est le problème d’après vous avec cette approche?
LOG 710 Hiver2014
9
Implémentation de la table des pages
• Le système d’exploitation doit allouer une table de pages pour chaque
processus
• Un pointeur vers la table des pages d’un processus est gardé dans le PCB
• L’implémentation matérielle de la table de pages peut se faire de plusieurs
façons
• Dans un ensemble dédié de registres de la CPU
– Très rapide
– Espace limite (pas adéquat pour les pages de grandes tailles)
• En mémoire centrale
– Plus d’espace pour accommoder des grandes tables de pages
– Plus lente que les registres
– Pour un accès à un place i en mémoire, on besoin de deux accès mémoire: Un accès à
la table de page et un accès pour à i une fois l’adresse physique déterminée
– Solution ?
LOG 710 Hiver2014
10
Implémentation de la table des pages
•
Le problème du double accès à la mémoire peut être
résolu
–
–
–
En utilisant une mémoire cache de recherche rapide
Une petite mémoire associative qui permet de faire une
recherche parallèle
Appelée Translation look-aside buffers (TLB)
•
Le TLB est utilisé comme suit :
•
Le TLB contient seulement quelques entrées de la table
de page
•
Pour une adresse logique générée par la CPU
•
Le numéro de page correspondant est présenté au TLB
•
Si le numéro est trouvé (TLB hit)
– numéro de cadre immédiatement disponible
•
Si le numéro de page n’est pas trouvé (TLB miss) :
– La table de page en mémoire doit être utilisée
– Le TLB est mis à jour
LOG 710 Hiver2014
11
Protection
•
La protection de la mémoire avec la pagination est
implémentée en associant des bits de protection avec chaque
cadre
•
Un bit définit si la page est en mode Read-Write , Read-Only,
execute, etc.
•
Un bit Valid-Invalid est attaché à chaque entrée de la table
des pages
– “valid” indique que la page correspondante est dans
l’espace d’adresses du processus et donc une page
légale
– “invalid” indique que la page n’est pas dans l’espace du
processus est don illégale
•
Exemple :
– Un système avec une adresse logique de 14-bits et une
taille de page 2KB
•
•
–
–
11 bits pour le déplacement
3 bits pour le numéro de pages : 8 pages au total
Un programme de taille 10468 bytes (5 x 2048 + 228)
utilise seulement 6 pages (page 0 à page 5)
Toute adresse générée pat le CPU qui réfère aux pages 6
et 7 sont illégales
LOG 710 Hiver2014
Bit de protection ValideInvalide dans la table de
page [1]
12
Structure des tables de pages
•
Les ordinateurs modernes supportent des
espaces d’adresses très larges (232 à 264)
•
Les tables de pages sont donc très larges
•
Exemple
–
–
–
–
–
Un système avec des adresses logiques de 32-bits
Taille de page : 4KB (12bits)
Table de pages comporte 232/212 = 220=1M entrées
Si chaque entrée est de 4 bytes
Table de page de 4MB!
•
Il faut partager une telle page en plusieurs
parties
•
Table de page elle même paginée
– Table de pages à deux niveaux
LOG 710 Hiver2014
Table de page à deux niveaux[1]
13
•
•
•
Structure des tables de pages
Une adresse logique (sur une machine 32 bits avec une page de taille 1K ) est divisée en :
– Un numéro de page de 22 bits
– Un décalage dans la page de 10 bits
Comme la table de pages est paginée, le numéro de page est aussi divisé en :
– Un index dans la table de page du premier niveau 12 bits
– Un décalage dans une page de la table de page 10 bits
Donc une adresse logique est comme suit :
–
p1 est un index dans la table du premier niveau (the outer page table)
– p2 est un décalage dans une page de la table de page
Translation d’adresses avec une
table de pages à deux niveaux [1]
LOG 710 Hiver2014
14
Pagination à la demande
• Ce n’est pas nécessaire de charger un
programme entièrement en mémoire
• Stratégie alternative : Charger une page en
mémoire seulement quand c’est nécessaire
– Moins d’entrées/sorties
– Temps de réponse amélioré
– Plus de programmes en mémoire (meilleure
utilisation de la CPU)
• Lorsqu’une page est demandée, on utilise le
bit de validité
– Référence valide : page en mémoire; on continue
– Référence invalide : page non présente en
mémoire (défaut de page)
• Approche paresseuse de chargement de page
en mémoire (lazzy swapper ou lazzy pager)
LOG 710 Hiver2014
Table de page avec certaines pages
non chargées en mémoire [1]
15
Défaut de page
• Qu’est ce qui arrive si un processus essaye
d’accéder à une page non présente en
mémoire ?
• L’accès au page non présente en mémoire
(invalide) cause un défaut de page
• Un déroutement (interruption logicielle) vers
l’OS
• Traitement du défaut de page par l’OS
1.
OS vérifie la cause du déroutement en
consultant la table des pages :
–
2.
3.
4.
5.
6.
Référence valide : page non présente (défaut de page)
Trouver un cadre de page libre
Charger la page du disque vers le cadre
Mise à jour de la table des page
Mettre le bit de validation à valide
Redémarrer l’instruction qui a causé le défaut de
page
LOG 710 Hiver2014
16
Pagination à la demande
• Exercice 03 et 04
LOG 710 Hiver2014
17
Remplacement de page
• Qu’est ce qui arrive si l’OS ne trouve pas un cadre libre dans la
mémoire lorsqu’un processus essaye d’accéder à une page non
présente en mémoire ?
LOG 710 Hiver2014
18
Remplacement de page
• Qu’est ce qui arrive si l’OS ne trouve pas un cadre libre dans la
mémoire lorsqu’un processus essaye d’accéder à une page non
présente en mémoire ?
• Utiliser un algorithme de remplacement de page pour sélectionner
un page victime
• Transférer la page victime de la mémoire physique vers le disque
• Transférer la page voulue du disque dans le cadre libre et mettre à
jour la table des pages
• Est‐ce que la page victime doit absolument être sauvegardée sur le
disque?
LOG 710 Hiver2014
19
Remplacement de page
• Le problème de remplacement de page consiste à sélectionner un cadre
dont la page sera retirée de la mémoire pour faire de la place à une autre
page référencée par un processus
• Certaines cadres ne peuvent pas être sélectionnés comme victimes
– Pourquoi ? Exemples ?
LOG 710 Hiver2014
20
Remplacement de page
• Le problème de remplacement de page consiste à sélectionner un cadre
dont la page sera retirée de la mémoire pour faire de la place à une autre
page référencée par un processus
• Certaines cadres ne peuvent pas être sélectionnés comme victimes
– Cadres réservés pour le noyau du OS
– Cadres contenant des tampons d’E/S
• Comment sélectionner un cadre victime ?
– Utiliser un algorithme de remplacement de page
LOG 710 Hiver2014
21
Remplacement de page
• Critères d’évaluation des algorithmes de remplacement de pages
– Il doit minimiser le nombre de défaut de pages
– Il doit être efficace (car il est souvent exécuté)
• Quelle page sélectionner ?
– Page qui ne sera plus utilisée ou sera utilisée le plus tard possible ?
– Page qui n’est pas souvent utilisée ?
– Page qui est en mémoire depuis un certain temps ?
LOG 710 Hiver2014
22
Remplacement de page
• On évalue un algorithme de
remplacement de page en l’exécutant
sur une séquence particulière de
références de pages (séquence de
références) et on calcul le nombre de
défaut de page pour la séquence
• Exemple : Dans les exemples qui
suivent on utilise la séquence de
références suivante :
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
• On s’attend logiquement que le
nombre de défaut de pages diminue
avec l’augmentation des cadres de
pages
LOG 710 Hiver2014
23
Remplacement de page
• Algorithme du remplacement de pages FIFO
–
–
–
–
Algorithme de remplacement le plus simple
La page la plus ancienne est celle est qui remplacée
Simple à comprendre et à implémenter
Performance de FIFO n’est pas toujours bonne
• Exemple
• On considère notre séquence de référence : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
– On exécute l’algorithme de remplacement FIFO avec 3 cadres de pages
– L’exécution de FIFO donne 15 défauts de pages pour cette séquence
LOG 710 Hiver2014
24
Remplacement de page
• On considère la séquence : 1,2,3,4,1,2,5,1,2,3,4,5
• On exécute l’algorithme de remplacement FIFO sur cette séquence de
références de pages
– Avec 3 cadres de mémoires
– Avec 4 cadres de mémoires
– Qu’est ce qu’on constate ?
LOG 710 Hiver2014
25
Remplacement de page
• On considère la séquence :
– 1,2,3,4,1,2,5,1,2,3,4,5
• Exécution de FIFO avec 3 cadres
– On obtient 9 défaut de pages
• Exécution de FIFO avec 4 cadres
– On obtient 10 défaut de pages
• Anomalie de Belady
LOG 710 Hiver2014
26
Remplacement de page
• L’anomalie de Belady a motivé la recherche d’un algorithme de remplacement
optimal
– Algorithme qui donnerait le plus faible taux de défauts de pages
– Ne souffre pas de l’anomalie de Belady
• Un tel algorithme existe
– Appelé OPT ou MIN
– « Consiste à remplacer la page qui ne sera pas utilisée pour la plus longue période de
temps. »[1]
– En d’autres termes qui sera utilisée le plus tard possible
• Cependant, l’algorithme optimal est pratiquement impossible à implémenter.
Pourquoi ? Ca vous rappelles quelque chose ?
• Il est utilisé pour des études de comparaisons des algorithmes de remplacement
LOG 710 Hiver2014
27
Remplacement de page
•
•
•
•
Algorithme de remplacement optimal
On considère notre séquence de références : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
On utilise 3 cadres de pages
On obtient : 9 défauts de pages
• Combien de défauts de pages on obtient avec l’algorithme optimal pour la
séquence 1,2,3,4,1,2,5,1,2,3,4,5 en utilisant 3 cadres de pages ?
LOG 710 Hiver2014
28
Remplacement de page
• Algorithme de remplacement du moins récemment utilisée LRU (Least
recently used)
•
•
•
Algorithme optimal est impossible à implémenter mais peut être approximer
On utilise le passé récent comme approximation du future proche
On remplace la page qui n’aurait pas été employée pendant la plus longue période
• On considère notre séquence de référence : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
• On utilise 3 cadres de pages
• On obtient : 12 défauts de pages
LOG 710 Hiver2014
29
Remplacement de page
• Exercice 05
LOG 710 Hiver2014
30
Écroulement
•
Quand un processus n’a pas assez de pages en mémoire, le
taux de défaut de page est très élevé.
•
Ceci conduit à :
–
–
–
Faible utilisation de la CPU
OS pense qu’il doit augmenter le degré de
multiprogrammation pour augmenter l’utilisation de la CPU
D’autres processus sont ajoutés au système
•
Écroulement (thrasing) : un processus est plus occupé à faire
du swapping de pages que du traitement utile
•
On peut limiter le risque d’écroulement en surveillant le
nombre de défauts de pages 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 ; audessous d’une limite inférieure, on lui en retirera.
•
S’il n’y a plus de cadres disponibles et trop de défauts de
pages, on devra suspendre un des processus.
LOG 710 Hiver2014
31
Références
[1] SILBERSCHATZ, A. et P.B. GALVIN, Operating
System Concepts. 8th Edition, Addison Wesley.
LOG 710 Hiver2014
32
Téléchargement