> Tech > La base de données des page frames

La base de données des page frames

Tech - Par iTPro - Publié le 24 juin 2010
email

Dans la première partie, nous avons vu comment NT organise la mémoire physique sous forme d'une liste de page frames, faisant chacune la taille d'une page (4096 octets pour les processeurs x86 et 8192 pour les Alpha). Le Gestionnaire de mémoire synchronise cette liste avec la sienne - la base

de données PFN. Chaque valeur
de cette base de données correspond à  une page physique de mémoire (par exemple
la valeur 5 correspond à  la page frame 5 de la mémoire physique).

La base de données PFN stocke des informations sur l’état des données chargées
dans les pages physiques correspondantes.Une page physique peut avoir huit états
possibles, décrits dans le tableau 1. La figure 1 illustre comment le Gestionnaire
de mémoire ajoute dans une liste toutes les entrées de la base de données PFN
appartenant aux pages ayant le même état (à  l’exception des pages se trouvant
dans les états valide ou en transition).

Par exemple, toutes les pages modifiées vont dans la liste des pages modifiées.
Une page subit plusieurs changements d’état pendant sa durée de vie ; c’est pourquoi
sa valeur PFN se déplace entre plusieurs listes. La figure 1 montre comment les
working sets sont associés à  des pages valides dans la base de données PFN.

Voyons certains de ces changements d’état, en commençant par une page valide.
La figure 2 décrit les changements d’état dont je vais parler. Une page est valide
si elle appartient actuellement au working set d’un processus. Une page valide
peut être sale ou propre : une page sale est une page sur laquelle le processus
a écrit, de sorte que son contenu en mémoire physique peut différer de son contenu
dans un fichier de sauvegarde (un fichier de pagination ou un fichier mappé).
La MMU définit un bit dans la TVP d’une page lorsqu’un processus écrit sur cette
page.

Lorsque le Balance Set Manager réduit une page valide d’un working set, celle-ci
se déplace vers l’une des trois listes. Si elle est propre, elle va dans la liste
d’attente. Si elle est sale, elle va presque toujours dans la liste des pages
modifiées.

Une page de la liste des pages modifiées rejoint la liste des pages en attente
lorsque le Gestionnaire de mémoire a écrit les données de la page sur le disque.
Pendant cette opération, la page est dans l’état transition (qui n’a pas de liste).
Une page de la liste des pages sans écriture modifiées est transférée vers la
liste des pages en attente lorsque le système de fichier donne au Gestionnaire
de mémoire l’instruction de la déplacer.

Cette instruction ne vient qu’une fois que le fichier est renseigné. Lorsque le
nombre de pages de la liste des pages modifiées dépasse un certain seuil, ou lorsque
la mémoire libre tombe en dessous d’un certain seuil (basé sur la quantité de
mémoire physique du système et déterminé pendant le boot), un des deux threads
de programme d’écriture de pages modifiées se réveille pour effectuer des E/S
disque qui envoient les données vers un fichier de pagination ou un fichier de
données.Une page de la liste en attente va dans la liste des pages libres lorsque
le processus qui la détenait dans son working set libère la mémoire virtuelle
associée à  la page ou si le processus s’achève (ce qui est un autre moyen de libérer
la mémoire virtuelle).

Les pages de la liste des pages en attente vont dans la liste des pages mises
à  zéro, après avoir été vidées de leur contenu par un thread spécial, baptisé
le thread zéro-page. Ce thread s’exécute en arrière-plan avec la priorité 0. Il
ne s’exécute que si aucun autre thread ne peut s’exécuter et sa tâche consiste
à  déplacer des pages de la liste des pages libres vers la liste des pages mises
à  zéro lorsqu’il vide leur contenu.

Lorsqu’un processus accède à  une page et que le Gestionnaire de mémoire décide
que le working set du processus peut être agrandi, le Gestionnaire consulte la
liste des pages mises à  zéro en quête d’une page physique à  affecter au processus.
S’il en trouve une, il peut immédiatement l’utiliser. Si la liste est vide, le
Gestionnaire de mémoire vérifie la liste des pages libres. Si elle est également
vide, il vérifie la liste des pages en attente. Enfin, si cette dernière est vide
elle aussi, le thread du Gestionnaire de mémoire attend que le Balance Set Manager
réduise une page du working set, ou qu’une page s’affiche dans les listes des
pages en attente, libres ou mises à  zéro (par exemple une page peut se trouver
en transition et, après avoir écrit sur le disque, apparaître dans la liste en
attente).

La nécessité de mettre à  zéro une page avant de l’attribuer au working set d’un
processus différent est une exigence de la sécurité C2. L’OS doit réinitialiser
toutes ses ressources (par exemple, mémoire, espace disque, objets) avant de les
réattribuer pour empêcher les failles de sécurité, sachant qu’un processus peut
voir les données, éventuellement sensibles, d’un autre processus.L’ultime liste
est la liste des mauvaises pages. Comme son nom l’indique, cette liste est une
zone dans laquelle le Gestionnaire de mémoire place les pages erronées qu’il a
détectées.

Le nombre de pages des listes des pages en attente, libres et mises à  zéro, définit
la mémoire libre exploitée par divers outils de gestion de la mémoire (par exemple
le Gestionnaire des tâches).

Téléchargez gratuitement cette ressource

Endpoint Security : Guide de Mise en œuvre

Endpoint Security : Guide de Mise en œuvre

Détournement d’applications légitimes, élévation de privilèges, logiciels malveillants furtifs : comment les solutions de Endpoint Security permettent elles de faire face aux nouvelles techniques d'attaques complexes ? Découvrez, dans ce Guide Endpoint Security, les perspectives associées à leur mise en œuvre.

Tech - Par iTPro - Publié le 24 juin 2010