You are on page 1of 6

ESAT / DMSI / Cours Système

WINDOWS NT – GESTION DE LA MEMOIRE

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.

LA MEMOIRE VIRTUELLE OU LOGIQUE


Les systèmes de mémoire virtuelle ont en général soit une vue segmentée de la mémoire, soit une
vue linéaire. Ainsi les processeurs 8086 et 80286 utilisent un modèle segmenté dans lequel un
segment correspond à un ensemble d' adresses contiguës L' adresse est alors constituée d' un n° de
segment et d' un déplacement dans le segment.
Les processeurs RISC et les processeurs CISC récents d' Intel ont une architecture d' adressage
linéaire dans laquelle les adresses vont de 0 à n-1 pour adresser n octets.

L' espace d' adressage est divisé en pages et la mémoire physique est divisée en blocs ou page
frames.

Vocabulaire: pages valides = pages chargées en mémoire,


pages invalides = pages sur disque.
pagination = transfert de pages vers le disque.

Taille des pages de Workstation NT: 4 ko (celle du 386 )

GESTION DE LA MEMOIRE (POUR LES SOUS-SYSTEMES EN MODE


UTILISATEUR)
Les sous-systèmes peuvent ici partager la mémoire en utilisant des objets protégés, nommés et
manipulés comme les autres objets de l' exécutif. Ils peuvent aussi protéger les pages de mémoire
privée ou bien les bloquer en mémoire.

Le gestionnaire de mémoire autorise :


- l' allocation de la mémoire,
- la lecture et l' écriture de la mémoire virtuelle,
- le blocage des pages virtuelles en mémoire physique,
- l' obtention d' informations sur ce type de pages,
- leur protection,
- leur transfert sur disque.

L' allocation se fait en deux étapes:


- la réservation: le gestionnaire réserve une plage d' adresses virtuelles pour un processus,
- l' engagement (committing) : la mémoire engagée correspond à une zone du fichier d' échange
(swap), sur disque, réservée à un processus.

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.

Exemple du mappage des vues d' une section:

Memoire virtuelle
du processus 1

.
..
Vue Memoire
Physique

..
.

Memoire virtuelle
du processus 2
Section

Vue 1

Vue 2

Mappage de vues d' une section

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.

Les attributs de l' objet-section :

- la taille maximale : si la section est associée à un fichier, la taille maximale de la section peut être
celle du fichier,

- la protection de page : c' est la protection attribuée lors de la création,

- 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

IMPLEMENTATION DE LA MEMOIRE VIRTUELLE


Chaque processus Workstation NT dispose d' un espace d' adressage de 4 Go dont 2 sont réservés
pour le 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.

Il existe des stratégies de remplacement de deux types:

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.

LA BASE DE DONNES DES PAGES PHYSIQUES (schéma page suivante) :

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,

- à zéro: la page est libre et initialisée avec des zéros,

- libre: elle est libre mais non initialisée,

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

- mauvais: elle ne doit pas être utilisée.

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

TABLE DES PAGES ET BASE DE DONNEES PHYSIQUE

Page6

You might also like