Mémoire virtuelle

Transcription

Mémoire virtuelle
Mémoire
Mise en œuvre d’un maillon de la chaîne d’implantation
• substitution/inclusion : remplacer chaque occurence de l’objet abstrait (symbole/adresse
logique) par sa correspondance concrète (adresse logique/adresse physique)
! simple, statique, efficace
! une table de traduction, indiquant la position des occurrences de chacun des objets
substitués dans le code d’origine doit être conservée, si l’on veut pouvoir refaire l’étape
• chaînage/indirection : conserver la liste des objets concrets, et remplacer chaque occurence
de l’objet abstrait par une référence vers l’objet concret.
! plus souple, mais moins efficace
Introduction : espaces d’adressages logique et physique
Allocation contiguë
Allocation fragmentée
• Pagination
• Segmentation)
Mémoire virtuelle
• Introduction
• Pagination à la demande
• Algorithmes de remplacement
• Stratégies d’allocation de pages
• Partage de pages
• Couplage de fichiers dans un espace virtuel
Exemples
• BSD
• Solaris (Linux-> TD)
• Windows NT
Annexe : gestion d'une mémoire hiérarchisée
Mémoire
-1-
DIMA, Systèmes Centralisés (Ph. Mauran)
1) Introduction : espaces d’adressages logique et physique
Etapes (possibles) de l'implantation d'un programme en mémoire
Compilation
Edition de liens
Chargement
module objet
(relogeable)
programme
source
Mémoire
compilateur
Exécution
Liaison des « objets » du programme vers des adresses mémoire physiques
• à la compilation : le compilateur fournit un code absolu, devant être installé à une adresse fixe
• au chargement : le compilateur fournit un code relogeable, relatif à une adresse de base,
pouvant être fixée au chargement
• à l’exécution : le code produit peut utiliser des zones mémoire variant au cours de l’exécution
binaire objet
(relogeable)
chargeur
éditeur de liens
autres
modules
bibliothèques
système
(statiques)
Principe : (ré)interprétation des adresses à l’exécution.
! le processus travaille sur des adresses logiques/virtuelles, relatives à une adresse de base
! les adresses virtuelles émises par le processeur sont interprétées par une unité de gestion
mémoire (MMU) et transformées en adresses physiques/réelles (par exemple en ajoutant
le contenu d’un registre de relocalisation), avant d’être émises sur le bus d’adresses
image mémoire
binaire (chargée)
[ + talons ]
0
bibliothèques
dynamiques
(dll/so/dylib)
• Le chargement peut être dynamique ➝ gain de place mémoire :
les procédures sont stockées sur disque au format binaire relogeable,
et chargées en mémoire à leur premier appel
! partage et mise à jour automatique du code (" identifier les versions)
+
(452)
Processeur
adresse
physique
(A10B452)
A10B000
A10B452
A10B000
registre de
relocalisation
MMU
(Memory Management Unit)
Mémoire physique
(RAM)
➝ si le programme est déplacé lors de l’exécution, il suffit d’actualiser le registre de relocalisation
➝ l’interprétation des adresses virtuelles facilite aussi la protection de la mémoire
! les procédures à lier dynamiquement sont représentées par un talon
qui gère la liaison et se remplace par la procédure effective au premier appel.
Mémoire
adresse
virtuelle
452
Mémoire virtuelle
(espace d’adressage
abstrait)
• L'édition de liens peut être dynamique (bibliothèques)
DIMA, Systèmes Centralisés (Ph. Mauran)
-3-
DIMA, Systèmes Centralisés (Ph. Mauran)
-2-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-4-
nb magique a.out
en-tête a.out
Exemple : espace d’adressage virtuel d’un processus UNIX
Interface du service de gestion mémoire :
(niveau haut) ➝ malloc/free (stdlib.h)
fichier binaire exécutable
(niveau bas) ➝ manipulation de brk :
(format a.out)
Données
statiques initialisées
Partitions variables
#include <unistd.h>
int brk (const void *ptr)
fixe la valeur de brk
void * sbrk (int increment)
- ajoute increment
- renvoie la valeur précédente de brk
segment
de texte
(code)
• Une partition, de la taille exactement nécessaire au processus est allouée au chargement
➝ pas de fragmentation interne
• En fin d'exécution, l'espace occupé est libéré
❶
0K
Entrée/table
processus
zone rouge
Privé utilisateur
Pile
appels
système
500K
100K
500K
P2
640 K
Privé système
Mémoire
500K
P2
P3
940 K
940 K
940 K
1024 K
1024 K
1024 K
Limites de l’allocation contiguë
Solution simple :
allouer à chaque processus un bloc (distinct) de mémoire, pouvant contenir son image mémoire
Partitions fixes (OS 360 MFT)
-7-
• zones de taille fixe : manque de souplesse (peu de partitions, prédéfinies)
• zones de taille variable : fragmentation externe
! recompactage : simple, mais coûteux en temps
! traitement algorithmique: gérer les zones libres (recherche; fusion de zones libres voisines)
• La mémoire est divisée en zones de taille fixe (partitions).
• Une file d'attente est associée à chaque partition
- lourd/complexe en général
• Quand une tâche est lancée, le SX lui alloue la plus petite partition pouvant la contenir (best fit)
* table d’occupation de la mémoire (fusion rapide, recherche lente, empreinte mémoire)
Avantage
Permet un va et vient efficace
(coexistence de processus prêts)
Système
pg 1
pg 2
pg 3
pg 4
Partition C
* listes de zones libres, classées par tailles (recherche acceptable, fusion lente)
Problème : fragmentation interne
En général un processus utilisera
seulement une partie de la mémoire
allouée
- possible lorsque l’ensemble des tailles demandées est régulier (puissances de 2) ou fixe
(l’émiettement peut alors être évité)
Exemples : VM 370 (IBM) ; gestion des structures de données noyau BSD, Linux (cf infra)
Intérêt
• de disposer d’un mécanisme efficace d'allocation non contiguë…
ce type de mécanisme est généralement associé à une évaluation des adresses à l’exécution
Variante
File d'entrée unique (➝ réimplantation (allocation dynamique))
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
• Première zone possible (First-fit)
➝ implanter P5 à l’adresse 100K
Mémoire
But : partage physique de la mémoire entre processus
1024 K
• Plus petite zone possible
(«meilleur ajustement» ou Best-fit)
➝ implanter P5 à l’adresse 940K
DIMA, Systèmes Centralisés (Ph. Mauran)
Conclusion (provisoire)
640 K
P2
P3
2)Allocation de mémoire contiguë
Partition B
• Plus grande zone disponible (Worst-fit)
➝ implanter P5 à l’adresse 100K
640 K
-5-
DIMA, Systèmes Centralisés (Ph. Mauran)
Partition A
Exemple : en ❷, P5 arrive, de taille 60K
P4
Problème : fragmentation externe (émiettement)
L’espace libre est important, mais divisé en nombreux fragments de petite taille inutilisables
Exemple : en ❸, que faire si P5 arrive, de taille 150K ?
➝ (Re)compactage : regrouper les zones libres en un seul bloc (" réimplantation, ralentissement)
(peut faire l'objet de va-et-vient)
528 K
Politiques d’allocation de l'espace libre
100K
640 K
P3
Image mémoire du processus
0K
128 K
❸
SX
400K
SDD
Processus
Données
statiques
Partagé
Pile
0K
P1
0
Tas
❷
SX
100K
point de rupture
(brk)
segment
de texte
(code)
0K
SX
• d’éviter la fragmentation externe (zones fixes)
-6-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-8-
3) Allocation fragmentée
Réalisation de la table des pages
En général, une table des pages par processus.
a) Pagination (Allocation dynamique et fragmentée de zones fixes)
Idée : fractionner l’image mémoire d’un processus
(et gérer la correspondance entre ces fragments et leur implantation en mémoire physique)
➝ mécanisme accélérateur : registre associatif
p
c
c
Table des pages
mémoire
physique
Mémoire
pi
cj
c
• contiennent les dernières références à la mémoire (LRU) : principe de localité
• recherche en parallèle
• en cas d'échec dans la recherche associative
! On consulte la table complète (en mémoire)
! On met le registre associatif à jour, avec la nouvelle référence
• mécanisme coûteux ➝ peu d’entrées (12-4096)
Pertinence de l’heuristique LRU (mesures sur des applications typiques) :
80% de succès avec 16 entrées, 98% avec 32 (80486), 99% avec 512, 99,99% avec 4096
p
mémoire
virtuelle
Difficulté
• La taille de la table des pages est importante (espace de 4Go, pages de 4K ➝ 106 pages)
• ➝ coût prohibitif d’une réalisation par des registres
• réalisation en RAM : temps d'accès doublé
Pages et cases
• La mémoire virtuelle est découpée en pages
• La mémoire physique est découpée en cases
• Cases et pages ont une taille P fixée et identique
Evaluation de l'adresse virtuelle (Av )
Av = (n° de page,déplacement dans la page) = (p,d),
avec p = Av div P et d = Av mod P (efficace avec P= 2k)
adresse
adresse
p
paginée
physique
p d
c d
Le contexte du processus contient alors une référence vers celle-ci.
-9-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-11-
DIMA, Systèmes Centralisés (Ph. Mauran)
Exemple
b) Segmentation (Allocation dynamique et fragmentée de zones variables)
mémoire
virtuelle
page 1
Table des pages
page 2
page 3
page 4
page 5
2
6
3
1
5
mémoire
physique
Mémoire vue comme un ensemble de zones (segments)
• de longueurs variables
• sans ordre relatif
case 1
case 2
case 3
case 4
case 5
case 6
case 7
Principe
Un segment regroupe des éléments homogènes (du point de vue de leur utilisation)
➝ contrôles et protection fins :
Pour chaque segment
- contrôle des accès (opérations spécifiques aux objets du segment)
Avantages
- contrôle de l'adressage
Exemple : si le segment est un tableau d'objets, on conserve sa dimension
• pas de fragmentation externe
• fragmentation interne : 1/2 page par processus, en moyenne
➝ ne pas choisir des pages trop volumineuses (généralement 2K-8K)
• adressage indirect ➝ (voir section suivante) possibilité de
- partager une page
- contrôler l’accès à une page
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-10-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-12-
4) Mémoire virtuelle
Mise en œuvre
adresse segmentée : (id. de segment, déplacement dans le segment)
Problème : implanter un espace logique plus grand que l’espace physique
Mécanisme : table des segments
Solution directe : recouvrements (« overlays »)
seg
limite
UC
<
(seg,depl)
Principe : distinguer les parties d’un programme qui n'ont jamais à être simultanément en mémoire
base
oui
Exemple : initialisation et reste du programme
➝ de telles parties peuvent se recouvrir, c.-à-d. être implantées à la même adresse
➝ l’espace mémoire nécessaire au programme est réduit d'autant
Représentation du découpage : arbre de recouvrement
A
B C
E
D
Mémoire
centrale
+
déroutement :
erreur d'adressage
non
Mise en œuvre de la table des segments
A
Mêmes mécanismes que table des pages : table en mémoire, registres associatifs
C
D
Remarques
Fragmentation externe
• A un instant donné, un seul chemin de l'arbre est présent en mémoire
• Segmentation implicite
• Inconvénients
! Gestion explicite
! Ad hoc ➝ limité
Le mécanisme de réimplantation dynamique facilite le recompactage, qui reste coûteux.
Partage de segments
Référence en mémoire physique commune à deux tables de segments
➝ mise en commun de données, utilitaires, programmes
Mémoire
B
E
-13-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-15-
DIMA, Systèmes Centralisés (Ph. Mauran)
Va-et-vient (multiplexage temporel de la mémoire)
c) Segmentation paginée
But : conserver l'abstraction donnée par la segmentation, et éviter la fragmentation externe
Système
Idée : paginer les segments
Principe
• une table des segments pour chaque processus
• une table des pages pour chaque segment
Exemples : Multics, 680x0
Tables des segments
longueur
processus 0
(64 entrées)
image
pg 2
modes
d'accès
❷
référence
table des pages
Table des pages
pour un segment
(16 entrées
maximum)
Pour changer l'occupant de la mémoire centrale :
❶ Sauvegarde, en mémoire secondaire, de l'image mémoire de l'occupant actuel
❷ Restauration, à partir de la mémoire secondaire, de l'image mémoire du programme élu
Avantage
simple
• 16 tables, pour 16 processsus (maximum)
• Chaque table de segments contient 64 entrées
• Chaque table de pages contient 16 entrées
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
Programme
1
Une copie de l’image mémoire de chaque processus est conservée
en mémoire secondaire
…
processus 15
(64 entrées)
❶
image
pg 1
Inconvénient
l'UC est inactive durant le va-et-vient ➝ anticipation ➝ partitions
-14-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-16-
Mécanisme de remplacement
a) Intégration du va-et-vient et de la pagination
Va-et-vient « page à page » si la liste des cases libres est vide
Idée : appliquer aux pages le principe du va-et-vient
➝ il suffit d'ajouter à chaque entrée de la table des pages un indicateur de présence en mémoire
Motivation : principe de localité (le passé récent est une bonne image du futur proche)
bloc
b2
bloc
b1
➝ l'ensemble des pages utilisées par un processsus est petit et plutôt stable ➝ va-et-vient limité
Sauver la
❷ page
victime
Principe de fonctionnement
mémoire
virtuelle
page 1
page 2
…
page i
…
page n
c
fonction
topographique
page
chargée
case 1
…
case j
❹
mémoire
physique
bloc case
invalide
…
page non
chargée
❶
case c
défaut de page
(va-et-vient)
Référence
victime
Remarques
10
b1 ? c
01
b2
c ?
Mémoire
physique
❺
mettre à jour l'entrée
correspondant à la page élue
correspondant
❸ invaliderà lal'entrée
page victime
Table des pages
• L'emploi de zones fixes simplifie le placement : toutes les cases se valent
• La fonction topographique est généralement implantée sous la forme d’une table des pages
Mémoire
Remarque : le nombre d'E/S causées par un défaut de page est doublé
-17-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-19-
DIMA, Systèmes Centralisés (Ph. Mauran)
b) Mise en œuvre de la pagination avec défaut de page
Mécanisme de défaut de page
• repérer les cases libres ou libérables ➝ liste des cases libres
• ajout d’une colonne (invalide) à la table des pages,
indiquant pour chaque page si elle est chargée en mémoire
• connaître l'adresse de chaque page en mémoire secondaire
Cas usuel : les blocs (disque) sont de la même taille que les pages
➝ ajout d’une colonne (“bloc”) à la table des pages [# table de couplage (n° page, n° bloc)]
Mécanisme de chargement
Traitant de
défaut de page
bloc b
Déroutement
❸
❷
invalide
1
b
?
ª
Restaurer le contexte;
Réexécuter l'instruction
Mémoire
mémoire associative
p d
Table des pages
pi
p
succès
c
cj
échec
invalide
modifié
mode
d'accès
❹
• invalide : bit de présence
(faux si page en mémoire)
bloc case
p
0
❺
Référence
adresse
virtuelle
bloc case
p d
❶
Organisation classique : table de pages en mémoire + mémoire associative
Lire la page
sur disque
Charger
la page
adresse
virtuelle
DIMA, Systèmes Centralisés (Ph. Mauran)
Charger la
page élue
c
défaut
de page
si 1
Mettre
la table
à jour
adresse
physique
c d
Table des pages virtuelles
• modifié (“dirty bit”) :
indique si une écriture a été
effectuée sur la page
(utilisé pour le remplacement)
• mode d'accès :
opérations autorisées / la page
(utilisé pour la protection)
Liste des
cases libres
-18-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-20-
c) Gestion de la mémoire virtuelle
Gestion d'un vaste espace virtuel
Problème : taille potentielle de la table des pages
Motivation
Solution1 : liste inverse de pages (liste de cases)
Liste par case : < id de processus, n° de page >
• liste des cases réduite ➝ accès séquentiel
• sinon, accès calculé (fonction de dispersion)
• usage courant d'une mémoire associative
Temps d'accès effectif à la mémoire : TAE = (1-p) x TAM + p x TDP
avec :
p : probabilité d'un défaut de page;
Solution 2 : pagination hiérarchique (hyperpages)
Idée : paginer la table des pages
• la table des pages est découpée en hyperpages
• la table des hyperpages (THP) permet de ne désigner que les parties de la table des pages
effectivement utilisées
➝ un compteur “nombre de pages désignées” est associé à chaque entrée de la THP
• une adresse virtuelle devient : (n°hyperpage, n°page, déplacement)
Remarques
• Mémoire associative nécessaire
• Pas de défaut de page pour la table des hyperpages !
Exemple : VM 370 ➝ pages : 2 ou 4K ; hyperpages 64 octets ou 1K
• Ce principe peut être réitéré ➝ hiérarchie d’hyperpages (Linux : 3 niveaux prévus)
Mémoire
TAM : temps d'accès mémoire
TDP : temps d'accès, en cas de défaut de page (gestion de l'IT + va et vient)
Ordres de grandeur :
TAM # 100 ns
TDP # 1 ms + 2*8ms # 17 ms
D'où : TAE # 100 + 16 900 p
Pour obtenir une dégradation des performances $ 10% de TAM, on doit avoir : 100 + 16 900 p $ 110
Soit : p $ 1 / 1690
-21-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-23-
DIMA, Systèmes Centralisés (Ph. Mauran)
Pagination à 2 niveaux (S. Krakowiak, principes des systèmes d’exploitation (Dunod), p362)
Comment améliorer les performances de la mémoire virtuelle ?
Peaufiner le mécanisme
• éviter les lectures/écritures disque superflues
! bit d'utilisation (dirty bit) : indique si la page victime a été modifiée
(auquel cas elle doit effectivement être recopiée)
! pool de pages libres et sales (utiliséees auparavant)
ncase
➝ on mémorise le numéro des pages qui sont libérées
➝ (localité) une chance de plus d'éviter le va-et-vient lors d'un défaut de page
• anticiper
! pool de pages libres : évite d'attendre que la victime ait été sauvegardée
Fraction de la
table des pages
référencée
par nhyp
! préchargement de pages : souvent possible et efficace (localité/ensemble de travail)
! restitution volontaire de page : intéressant, si automatique (compilateur)
Choisir la bonne victime
➝ algorithmes de remplacement (§ d)
Ecarter les processus causant trop de défauts de pages
➝ Stratégies d’allocation basées sur un modèle de comportement des processus (§ e)
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-22-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-24-
d) Choix des pages victimes : algorithmes de remplacement
Mise en œuvre approchée de LRU
utilisent un bit de référence (0 initialement, mis à 1 lors de l'accès) associé à chaque page
Critères d’évaluation du comportement d’un processus/algorithme
Représentation « économique » du compteur de date logique
• c(m,%) : nombre de chargements de pages causés par %
! % : suite de références (numéros de pages virtuelles demandées par le processus),
Mot contenant l'historique des valeurs des bits de référence sur une période de temps :
! m : taille de la mémoire allouée au processus, en pages
• le bit de gauche est le bit de référence courant
• le mot est décalé vers la droite, à intervalles réguliers
c(m,%)
• la plus petite valeur correspond à l’accès le moins récent
Allure prévisible de c(m,%)
m
Remarque : certaines stratégies de remplacement présentent des « anomalies »
Exemple (Belady) :
- Pour % = 1,2,3,4,1,2,5,1,2,3,4,5 on a : c(3,%) < c(4,%)
(|%| : longueur de la suite de références)
Mémoire
0
1
1
0
1
0
0
0
1
1
0
0
0
0
1
0
0
0
0
Algorithme de la deuxième chance
• La victime est recherchée en parcourant la table des pages de manière circulaire
• L’entrée courante de la table des page a un bit de référence valant
! 1 ➝ bit remis à 0 ; la page est placée en queue de file
! 0 ➝ c'est la victime
- gestion FIFO des requêtes de remplacement
c (m,%)
• taux de défaut de pages F = -----------------%
0
-25-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
Approximation de la solution optimale : LRU
Conclusion
Algorithme optimal
Comparaison des différents algorithmes
F
Remplacer la page dont la prochaine référence est la plus éloignée dans le temps
➝ évaluer a priori la chaîne de référence
alé
➝ irréalisable en général
ato
Ordre chronologique de chargement (LRU , Least Recently Used)
LRU
op
ire
FIFO
al
tim
Idée : le principe de localité est une approximation de la stratégie “optimale”
(le passé récent est une bonne image du futur proche)
0
➝ la victime sera la page qui n'a pas été utilisée depuis le plus longtemps
m
M0
Point marquant
Remarques
Présence d'un point M0 à partir duquel F croît très vite :
• LRU ne présente pas l'anomalie de Belady
• avant ce seuil, les performances s'améliorent nettement avec m
• La mise en œuvre directe de LRU est coûteuse (activée à chaque référence)
! gérer une « pile » : liste doublement chaînée, avec pointeurs de tête et de queue.
Fonctionnement : à chaque nouvelle référence, on place la page référencée en tête de pile.
! numéroter les références successives ➝ associer un compteur (date logique) à chaque page
Difficultés : débordement du compteur, arithmétique
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-27-
DIMA, Systèmes Centralisés (Ph. Mauran)
•
après ce seuil, augmenter m est peu rentable
Moralité
La nature de l’algorithme compte moins que la taille de la mémoire allouée aux processus
-26-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-28-
Illustration empirique : écroulement du système (“trashing”)
e) Stratégies d'allocation
Il est essentiel d’accorder à chaque processus un espace suffisant à ses besoins.
Modèle de comportement d'un programme : ensemble de travail [Denning]
Deux propriétés de localité :
• spaciale : les références se concentrent sur un nombre réduit de pages
• temporelle : sur une (courte) période d'observation, l'ensemble des pages utilisées est stable
Phénomène observé
➝ notion d'ensemble de travail (“working set”) :
UC
ensemble des pages référencées par un processus, sur une période de temps
nombre de
pages
accédées
T1
T3
T2
WS
1
WS2
T4
WS3
écroulement
taux d'
utilisation
disque
WS4
n
0
n+1
nombre de processus
Explication
Dès qu'un processus dispose de moins de mémoire que son ensemble de travail
➝ il engendre des défauts de pages nombreux et fréquents
0
Ti : transition entre deux ensembles de travail
WSj : ensemble de travail
temps
➝ s’il n’existe plus de cases libres, retrait de pages aux autres processus qui, à leur tour,
ne disposent plus de leur ensemble de travail…
Les ensembles de travail ont une certaine stabilité, se succèdent, et diffèrent les uns des autres
Mémoire
➝ boule de neige
-29-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-31-
DIMA, Systèmes Centralisés (Ph. Mauran)
Illustration expérimentale [Hatfield 1972 — IBM Syst. Journal]
Algorithmes basés sur le modèle de comportement
Idée : prévenir l'écroulement en contrôlant le degré de multiprogrammation
(maintenu en dessous de la valeur critique)
Algorithme de l'ensemble de travail (WS)
• l'ensemble de travail de chaque processus est mémorisé/évalué à tout instant
• en cas de défaut de page
! on remplace une page qui n'est dans aucun ensemble de travail
! s'il n'y en a pas, on réquisitionne les pages détenues par le processus le moins prioritaire
(qui est suspendu)
➝ à tout instant, tout processus actif dispose des pages de son ensemble de travail
Exemple
VMS (VAX) : estimation de l'ensemble de travail par relevé périodique des bits de référence
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-30-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-32-
« Optimisation » du « partage » en écriture : copie sur écriture
Algorithme du taux de défaut de page par processus (PFF, page fault frequency)
Idée : le taux de défauts de page est un indicateur de la disponiblité de l’espace de travailt
F
il faut • allouer plus de cases à P
• ou suspendre P
max(P)
• 2 processus travaillent à partir d’une même page
• les accès à la page sont :
! lire
! écrire
• on souhaite éviter la duplication de la copie d’origine, tant qu’aucune écriture n’est effectuée
➝ partager la page d’origine en lecture, et ne réaliser la duplication qu’à la première écriture
(les pages différentes deviennent alors privées)
mémoire virtuelle
mémoire
mémoire virtuelle
physique
processus A
processus B
min(P)
on peut retirer des cases
àP
page
modifiée
page
originale
m
Exemple : VM 370
Remarques
• PFF est plus aisé à réaliser que WS
Exemple : mécanisme UNIX de création de processus
• duplication de l’image du processus père (créateur)
• en général le processus fils (créé) commence par charger une nouvelle image mémoire
➝ la duplication effective de l’image mémoire du processus père est superflue
• PFF peut se superposer à une stratégie de remplacement globale
Conclusion
Paramètre essentiel : degré de multiprogrammation
Mémoire
-33-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-35-
DIMA, Systèmes Centralisés (Ph. Mauran)
f) Partage de pages entre applications
g) Intégration des fichiers dans l’espace virtuel
Principe
Référencer une même case mémoire à partir de pages distinctes de processus distincts
mémoire virtuelle
mémoire
mémoire virtuelle
physique
processus A
processus B
Idée
• Les images binaires de code exécutables sont couplées en mémoire virtuelle.
• Le même mécanisme peut servir à coupler les fichiers de données dans l’espace virtuel
Réalisation
• fixer 1 adresse d’implantation en mémoire virtuelle pour l’image mémoire associée au fichier
➝ couplage (mapping) du fichier en mémoire virtuelle
• accès au fichier & accès à l’image mémoire
• transferts réalisés via le mécanisme de défaut de page
Protection
• Contrôle du mode d'accès
Pour chaque entrée de la table des pages, ajouter des indicateurs précisant le mode d'accès
(lecture, écriture, ajout, exécution…)
• Contrôle de l'accès (la page est elle adressable ?)
! indicateur spécifique (bit d'« invalidité »)
Mémoire
Remarques
• le couplage remplace l’ouverture
• possibilité de partager un fichier (partage géré par le service de mémoire virtuelle, cf TD)
Systèmes proposant ce mécanisme
Multics (1965 !) (réalisation systématique des E/S par couplage des fichiers),
Appolo Domain, OS/2, Windows NT, Mach, Linux.
! valeur limite associée à la table des pages
DIMA, Systèmes Centralisés (Ph. Mauran)
Intérêt
• permet d’accéder au fichier par de simples lectures/écritures en mémoire centrale.
• la mémoire virtuelle gère les transferts plus efficacement (pas de passage par les tampons)
-34-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-36-
5) Exemples
b) Solaris
Gestion de la mémoire virtuelle : segmentation paginée
Desc. de processus
Descripteur
de l’espace virtuel
a) Gestion mémoire sous UNIX 4.x BSD
Va et vient
• le va et vient est appliqué, mais dans des cas peu fréquents (prévention de l'écroulement,
processus inactifs) : les processus sont suspendus par le processus scheduler
Liste de segments
ordonnée par adresse virtuelle croissante
code
donnée
base
base
pile
lg
lg
base
lg
! lorsque la charge est élevée
Descripteurs
segvn_data
! et que la mémoire libre est en dessous d'un seuil minimum (lotsfree # 1/64mémoire totale),
durant trop longtemps
vnode
*vp
anon_map *amp
vp
amp
vnode
(*)
anon_map
• le scheduler suspend alors (et répète jusqu’à avoir plus de lotsfree mémoire libre)
(*) certaines pages du segment
sont devenues anonymes
vp
amp
anon_map
Listes de pages réelles allouées
(contenu initial)
! le processus inactif depuis le plus longtemps, parmi ceux inactifs depuis plus de 20s
! le plus gros processus inactif depuis le plus longtemps
Table des pages
anonymes
• la gestion « courante » de la mémoire est basée sur la pagination
pages présentes
..........
Listes de pages réelles allouées
(anonymes)
pages sauvegrdées
.....
Espace de swap disque
Mémoire
-37-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-39-
DIMA, Systèmes Centralisés (Ph. Mauran)
Pagination
• Pagination à 2 niveaux
• La taille des pages est indépendante du matériel (' 512 octets)
• Les pages peuvent être verrouillées (non éjectables) (attente d’E/S, va-et-vient)
• Les pages d'un processus sont généralement préchargées
(et mises dans la liste des pages libres, étant marquées récupérables)
• une table des cases est gérée (liste inverse)
• cette table est parcourue circulairement, lorsqu'il faut libérer de la place (proc. pagedaemon)
! les cases déjà libres ou verrouillées ne sont pas touchées
! sinon, si le processus auquel la case est allouée a suffisamment d'espace mémoire
- la page est éventuellement sauvée sur disque (bit « modifié »)
- la case est marquée comme libre mais récupérable (libre et « sale ») ➝ va et vient réduit
- la page correspondante est marquée comme invalide
• pagedaemon est réveillé
! lorsque le processus scheduler en a besoin
! quand le nombre de cases libres est au dessous d'un seuil (lotsfree) (1/64 mémoire totale)
• pagedaemon utilise moins de 10% du temps de l'UC.
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
.....
Mémoire réelle paginée
Gestion de la mémoire noyau : allocation de plages (slabs)
Principe
• une plage (slab) est une suite de cases contiguës
• un cache est composé d’une ou plusieurs plages
• chaque structure de données (SdD)du noyau
(descripteurs de processus, de fichiers…) est
associée à un cache, qui contiendra les instances
(objets) de cette SdD
• lorsqu’un cache est créé, il est peuplé d’un
nombre déterminé d’objets marqués comme
libres
• les objets d’un cache sont alloués et marqués
utilisés au fur et à mesure des besoins
objets
caches
plages (RAM)
• une demande d’allocation
est servie en cherchant d’abord une plage partiellement remplie, puis une plage vide
• si toutes les plages sont pleines, une nouvelle plage est créée et associée au cache
Avantages
• pas de fragmentation : ensemble de tailles prédéterminé (structures du noyau), extension
dynamique des plages, allocation aux plages par pages de taille unique
• efficacité : de l’allocation (objets libres pré-créés) et de la libération (indicateur libre/utilisé)
➝ adapté au besoins du noyau pour lequel ces opérations sont fréquentes
-38-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-40-
Réservation/libération d’une région et (dé)couplage de pages
c) Windows NT
Structure
LPVOID VirtualAlloc (
• Mémoire à deux niveaux : segmentation et pagination
• Découpage logique :
! Intelx86 : 1024 segments de 1024 pages de 4K
! Digital Alpha : 256 segments de 2048 pages de 8K
• Adresses virtuelles sur 32 bits " 4G octets adressables
Page
Directory
Page Table
// adresse de base
DWORD dwSize,
// taille en octets
DWORD flAllocationType, // type d’opération
DWORD flProtect,
// attributs de protection
);
Virtual Page Number
Page Directory
LPVOID lpAddress,
Byte Index
LPVOID VirtualFree (
Page
Tables
@
pr
LPVOID lpAddress,
// adresse de base
DWORD dwSize,
// taille en octets
DWORD dwFreeType,
// type d’opération
);
Target
Page
n° pr
avec :
• flAllocationType = {MEM_RESERVE, MEM_COMMIT, MEM_RESET}
Page directory = table des segments, implantée à une adresse fixe
Mémoire
• dwFreeType=
{MEM_RELEASE, MEM_DECOMMIT}
-41-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-43-
DIMA, Systèmes Centralisés (Ph. Mauran)
Règles de couplage
Couplage de fichiers
• Une zone interdite : 0x0 à 0xFFFF (64Ko de début, référencée par les pointeurs "nuls" )
Etapes
• La zone programme applicatif : 0x1000 à 0x7FFEFFFF (2G - 128K)
1 - Créer ou ouvrir le fichier : CreateFile, OpenFile ;
• Une zone interdite : 0x7FFF0000 à 0x7FFFFFFF (64Ko)
2 - Définir le couplage du fichier : CreateFileMapping ;
3 - Associer une région au fichier : MapViewOfFile.
• La zone noyau : 0x80000000 à 0xFFFFFFFF (2G)
Primitives
Programmation du couplage
HANDLE CreateFileMapping (
Couplage en deux étapes
HANDLE hFile,
// le fichier
• La réservation/libération d’un espace d’adressage (région) ;
LPSECURITY ATTRIBUTE lpFileMappingAttributes,
• Le couplage/découplage proprement dit d’un contenu.
DWORD flProtect,
// attributs de protection
DWORD dwMaximumSizeHigh,
// forts poids
DWORD dwMaximumSizeLow,
// faibles poids
Primitives
• VirtualAlloc/VirtualFree : réservation/libération (et (dé)couplage de pages)
LPCTSTR lpName
);
• VirtualLock/VirtualUnlock : (dé)verrouillage en mémoire centrale ;
avec : flProtect = {PAGE_READONLY,PAGE_READWRITE,PAGE_WRITECOPY}
• CreateFileMapping/MapViewOfFile/UnmapViewOfFile :
définition/couplage/découplage de fichiers
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
(PAGE_WRITECOPY : voir FILE_MAP_COPY)
-42-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-44-
Gestion d'une antémémoire (cache entre processeur et mémoire centrale)
Réserver/Libérer une région en mémoire virtuelle
LPVOID MapViewOfFile (
HANDLE hFileMappingObject, // l’objet couplage
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
// forts poids
DWORD dwFileOffsetLow,
// faibles poids
DWORD dwNumberOfBytesToMap
);
UC
mémoire
centrale
cache
Temps d’accès mémoire : Tm = t0 + m.t1
( t0 temps d'accès au cache, t1 temps d'accès à la mémoire centrale, m taux de défaut d'information)
Deux points de vue, suivant la taille du cache :
BOOL UnmapViewOfFile(LPCVOID lpBaseAddress );
avec : dwDesiredAccess = {FILE_MAP_WRITE,FILE_MAP_READ,FILE_MAP_COPY}
• accélérateur de mémoire centrale (0,1$m$0,5), avec peu de mémoire cache
• mémoire cache «virtuelle» (m # 0.01) avec 1 mémoire cache plus importante (# 16 à 256 Ko)
Exemples
• t0=100ns, t1=1000ns, m=0.01 alors Tm=110ns
• t0= 50ns, t1=200ns, m=0.2 alors Tm=90ns
Mémoire
-45-
DIMA, Systèmes Centralisés (Ph. Mauran)
Mémoire
-47-
DIMA, Systèmes Centralisés (Ph. Mauran)
Annexe : gestion d'une mémoire hiérarchisée
Fonctionnement (niveau matériel) :
• toutes les informations à lire passent d'abord dans le cache
Notion de cache - Hiérarchie de mémoires
• l'écriture se fait dans le cache avec recopie vers la mémoire centrale
Caractéristiques de la pagination avec défaut de page
• la mémoire cache est découpée en blocs (p. ex. 64 octets)
Deux niveaux de mémoire
• le cache garde les N derniers blocs référencés grâce à une pile d'adresses de blocs (LRU)
info adMC
• un niveau rapide, mais coûteux et restreint (haut)
a 010 1 référence au a 010 2 référence au a 010 3
b 479 2 bloc 479
b 479 0 bloc 315
b 479 1
c 900 0
c 900 1
c 900 2
d 052 3
d 052 3
e 315 0
• un niveau lent, mais économique et de grande capacité (bas)
Si on réussit à amener dans le niveau haut les informations dont la fréquence / la probabilité
d'utilisation sont les plus grandes (localité : ensemble de travail/LRU), on obtient une mémoire
• comparable au niveau haut pour les temps d'accès
défaut
d'information
• comparable au niveau bas pour les capacités
profondeur dans
la pile LRU
On dit que le niveau haut (mémoire centrale)
joue un rôle de cache pour le niveau bas (mémoire secondaire).
Les idées développées dans le cadre de la pagination
peuvent être utilisées pour la hiérarchie des différentes mémoires existantes :
UC ↔ registres ↔ cache ↔ mémoire centrale ↔ disques
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-46-
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-48-
Les colonnes du cache
Pour minimiser le nombre de comparateurs nécessaires,
• on divise la mémoire centrale en colonnes correspondant à une partition de la mémoire,
espérée équiprobable.
• Chaque colonne est divisée en rangées. Une rangée d’une colonne a la taille d’un bloc.
• De même, le cache est divisé en colonnes, puis en rangées.
Chaque colonne du cache joue le rôle de cache pour une colonne de la mémoire.
Analyse d’une adresse
b
k
d
9
5
6
b: numéro de rangée dans la colonne k (ici 512 blocs)
k : numéro de colonne (32 colonnes)
d : déplacement dans le bloc (64 octets)
Exemple
Avec un cache de 8 Ko, il y aura 8 K / (64*32) = 4 blocs par colonne dans le cache,
donc 4 comparateurs (au lieu de 128) (128=8 K/64)
Si ce cache correspond à une mémoire de 1 Mo, celle-ci comportera 512 rangées par colonne
Mémoire
DIMA, Systèmes Centralisés (Ph. Mauran)
-49-

Documents pareils