Академический Документы
Профессиональный Документы
Культура Документы
Le gestionnaire de mémoire (Virtual Memory manager ) de l' exécutif NT est en particulier chargé d'
offrir à chaque processus une allocation et une gestion de mémoire privée, de permettre le partage de
mémoire entre processus et de protéger contre les accès non autorisés la mémoire partagée comme
la mémoire privée.
L' espace d' adressage est divisé en pages et la mémoire physique est divisée en blocs ou page
frames.
Ces deux étapes peuvent se faire en même temps ou non, selon les besoins du "thread" qui alloue de
la mémoire au moment ou il crée des structures de données dynamiques.
Pour un "thread" donné, une grande zone de mémoire peut être réservée : le quota du "thread" n' est
imputé que lorsque cette mémoire est engagée. Ainsi est géré le fichier d' échange.
Un processus qui possède des privilèges (une application critique en temps par exemple) peut aussi
bloquer certaines pages virtuelles en mémoire pour éviter les "défauts de page".
Un processus peut manipuler son propre espace d' adressage ou bien celui d' un autre processus. Il
peut aussi créer un autre processus dont il manipulera l' espace d' adressage (il appelera les services
de mémoire virtuelle avec le "handle" du processus créé).
Page1
ESAT / DMSI / Cours Système
PARTAGE DE MEMOIRE
Chaque processus ayant son propre espace d' adressage virtuel, le partage consiste à "mapper" les
adresses virtuelles d' un nouveau processus sur les pages physiques du code déja chargé pour les
besoins d' un processus antérieur. Si le partage de la zone de mémoire se fait en écriture, il faut en
outre assurer la protection de cette zone en synchronisant les processus qui la partagent.
L 'objet-section (section object ) que le sous-système Win32 met à la disposition des applications
sous la forme d' un objet mappage de fichier (file-mapping-object) est un bloc de mémoire susceptible
d' être partagé par plusieurs processus. Un "thread" peut créer un tel objet et lui donner un nom,
permettant à des "threads" d' autres processus d' ouvrir les "handles" correspondants.
Vocabulaire:
vue (view ) d' une section : désigne la partie de l' objet-section que le processus doit mapper parce qu'
il en a besoin, l' objet-section lui-même pouvant être très grand.
Memoire virtuelle
du processus 1
.
..
Vue Memoire
Physique
..
.
Memoire virtuelle
du processus 2
Section
Vue 1
Vue 2
Page2
ESAT / DMSI / Cours Système
Le programme chargé de gérer une grande base de données crée un objet-section qui contient cette
base toute entière. Lors d' une requête utilisateur sur la base, le programme mappe une vue de la
section de la base sur son espace d' adressage virtuel, y lit les données, supprime le mappage de la
vue, puis crée une autre vue pour accéder à d' autres informations.
Le programme accède ainsi à la base en mappant différentes vues de l' objet-section et en lisant ou
en écrivant en mémoire plutôt que sur le fichier: on parle ici d' E/S sur un fichier mappé ou mapped
file I/O.
- la taille maximale : si la section est associée à un fichier, la taille maximale de la section peut être
celle du fichier,
- fichier paginé-fichier mappé : indique si la section est initialement vide (fichier paginé) ou bien
remplie avec le contenu d' un fichier (fichier mappé),
- basé- non basé : la section est basée si elle utilise la même adresse virtuelle pour tous les
processus qui la partagent, elle est non basée dans le cas contraire.
En cas de partage, la synchronisation des processus est nécessaire : ainsi les applications Win32
utilisent pour accéder aux objets "mappage de fichier" (équivalents des objets-section) des mutex, des
événements, des sections critiques ou des sémaphores.
Un processus qui "mappe" une vue d' une section doit d' abord obtenir un handle. Il peut par ailleurs
recevoir un "handle" sur un objet-section soit par héritage soit parce qu' un autre processus le
duplique et le lui transmet.
PROTECTION DE LA MEMOIRE
La protection de la mémoire est basée sur :
- un espace d' adressage propre à chaque processus : le matériel empêche un thread d' accéder à l'
espace d' adressage virtuel d' un autre processus.
- deux modes de fonctionnement : le mode noyau (accès au code et aux données du système
autorisé) et le mode utilisateur (accès à ces mêmes zones impossible ).
- la protection des pages : des droits d' accès sont attribués à chacune des pages et dans chacun des
deux modes.
- la protection de la mémoire basée sur les objets : chaque ouverture d' un "handle" sur un objet-
section est soumis à la vérification des droits du processus sur cet objet.
Le gestionnaire VM offre les protections suivantes pour chaque page valide : lecture seule,
lecture/écriture, exécution seule (si le matériel le supporte ), page de garde (pour le contôle des
limites des piles ), pas d' accès, copie à l' écriture.
Le sous-système Win32 rend la protection des pages du gestionnaire VM accessible aux applications
Win32 à travers de sa fonction VirtualProtect(). Les autres protections ne sont pas disponibles pour
les applications.
Page3
ESAT / DMSI / Cours Système
FFFFFFFFh
Non paginées
Paginées
Mémoire système
C0000000h
Adr. associées (2 Go )
directement
80000000h
Mémoire utilisateur
Paginées (2 Go )
00000000h
La mémoire utilisateur est accessible par tous les "threads" en mode utilisateur et en mode noyau,
elle est spécifique à chaque processus.
La mémoire système est accessible par les "threads" en mode noyau, elle est identique pour tous les
processus.
Le code et les données du noyau sont situés dans la partie basse de la mémoire système et ne sont
jamais paginés hors de la mémoire. En outre, les adresses physiques de cette zone mémoire se
déduisent des adresses virtuelles en mettant les 3 bits les plus significatifs à 0. Il en découle un accès
très rapide au code situé dans cette zone.
Lors de la création d' un processus, soit on précise au gestionnaire VM qu' il doit initialiser l' espace d'
adressage par duplication (technique POSIX ), soit le gestionnaire de processus crée un processus et
le gestionnaire VM initialise son espace d' adressage avec le code qui va s' exécuter.
LA PAGINATION
Le transfert des pages entre le disque et la mémoire est assuré par le gestionnaire de pages (pager )
qui traîte les défauts de page, maintient à jour les structures de données pour la gestion de la
mémoire et protège les pages.
Les mécanismes de pagination mis en jeu sont classiques : mémoire associative, appelée tampon
des pages récemment utilisées(TLB ) et contenant des couples "numéro de page virtuelle-numéro de
pages physique"; table des pages.
Règles de pagination:
Le Gestionnaire VM utilise un algorithme de pagination à la demande: ceci signifie qu' il charge une
page lorsqu' un défaut de page se produit. Cet algorithme est dit aussi avec regroupement, ce qui
signifie que plusieurs pages voisines sont chargées. Ceci a pour effet de diminuer le nombre de
défauts de page.
Page4
ESAT / DMSI / Cours Système
En outre une stratégie de placement permet de trouver une page physique libre et, le cas échéant,
une stratégie de remplacement permet de désigner la page qui doit être extraite de la mémoire pour
faire de la place.
Une stratégie de remplacement locale alloue un nombre fixe (ajustable dynamiquement ) de pages
physiques à chaque processus. Lorsque toutes ces pages sont occupées et qu' une nouvelle page
doit être chargée, l' algorithme de remplacement de page entre en action.
Une stratégie de remplacement globale où n' importe quelle page physique, appartenant ou non au
processus, peut être utilisée lors d' un défaut de page.
Le Gestionnaire VM utilise une stratégie de remplacement locale FIFO et doit pour cela mémoriser les
pages en mémoire pour chaque processus. Cet ensemble de pages s' appelle jeu de pages de travail
du processus (process'working set ). La taille minimale du jeu est attribuée à chaque processus lors
de sa création: il garantit le nombre de pages dont dispose le processus pendant son fonctionnement.
Les tables des pages d' un processus permettent de localiser les pages physiques mais le
gestionnaire VM doit en outre connaître son état et, le cas échéant, qui est l' utilisateur. La base de
données des pages physiques (page frame database ) répond à ce besoin. Il s' agit d' un tableau de
rubriques, numérotées de 0 à n-1 (pour n pages physiques ), et contenant les informations relatives à
ces pages.
Une page physique peut se trouver dans l' un des états suivants:
- valide: utilisée par un processus, une rubrique valide d' une table des pages pointe dessus,
- en attente: elle a été retirée du jeu de pages de travail du processus qui l' utilisait, l'indicateur de
transition est positionné,
- modifié: idem état précédent mais la page, écrite, n' a pas encore été recopiée sur disque, l'
indicateur de transition est positionné,
Les pages non utilisées sont regroupées dans des listes, par état.
Page5
ESAT / DMSI / Cours Système
PROC1:
table de spages Base de Données
des pages physiques
Valide
Invalide:
adr. disque
Utilisée
Valide
sur liste
attente
PROC2:
table des pages
Valide
Invalide:
adr. disque Utilisée
Valide
PTE prototype
Utilisée
PROC3: table
des pages
Valide
Sur liste des
Invalide: modifiées
transition
Invalide:
adr. disque
Page6