Les valeurs de la base de données PFN contiennent diverses informations, selon l'état dans lequel se trouvent les pages correspondantes. Dans la plupart des cas, une ligne de la base de données PFN contient un pointeur désignant une TVP qui fait référence à une page. Mais si deux ou plusieurs
Mémoire partagée et TVP prototypes
processus partagent la
même page, plusieurs TVP font référence à la page : une TVP est la cartographie
d’adresse virtuelle de chaque processus partageant la page.
Au lieu de désigner la valeur de la base de données PFN à l’un de ces TVP, le
Gestionnaire de mémoire la désigne à une structure de données qu’il alloue, baptisée
TVP Prototype (TVPP), comme sur la figure 3. Voyons comment le Gestionnaire de
mémoire utilise les TVPP pour gérer la mémoire partagée et mappée.
Lorsqu’un processus affecte un objet de Section, le Gestionnaire de
mémoire attribut une autre structure de données baptisée segment
Nous avons vu le mois dernier que pour partager la mémoire, un processus doit
créer un Section Object. Les objets de Section détiennent des informations
sur le nom d’un fichier, sa taille et la proportion du fichier qui est mappée.
Leur création définit les données partageables et chaque processus supplémentaire
voulant participer au partage doit mapper une partie des données dans son espace
d’adresse.
Lorsqu’un processus affecte un objet de Section, le Gestionnaire de mémoire attribut
une autre structure de données baptisée segment. Les segments offrent un
espace suffisant pour contenir assez de TVP pour décrire toutes les pages de L’objet
de Section. Habituellement, lorsqu’une page se déplace du working set d’un processus
vers les listes de pages en attente ou modifiées, le Gestionnaire
de mémoire marque sa TVP comme étant invalide et définit un bit dans la page pour
indiquer qu’elle peut être en » erreur passagère « , ce qui signifie que le PFN
de la page reste dans la TVP.
Les TVP marquées comme invalides ne continuent pas à stocker les PFN ; le Gestionnaire
de mémoire les modifie pour qu’elles désignent le TVPP de la page partagée. Cette
astuce facilite au Gestionnaire de mémoire la mise à jour du PFN d’une page partagée
sans mettre à jour manuellement les TVP qui font référence à tous les processus
utilisant la page.Prenons un exemple dans lequel deux processus partagent une
page. Lorsque les données de la page sont en mémoire, chaque processus a une TVP
valide qui stocke le PFN où les données de la page résident en mémoire physique.
Si le Gestionnaire de mémoire supprime les TVP des working sets des deux processus
et envoie les données de la page à un fichier de pagination, les TVP sont tous
deux invalides et contiennent des pointeurs vers le TVPP. Lorsqu’il renvoie les
données de la page en mémoire physique, le Gestionnaire de mémoire met à jour
le TVPP pour refléter le nouveau PFN de la page. Lorsque l’un des processus essaie
d’accéder à la page, il génère une erreur de page.
Puis le Gestionnaire de mémoire examine la TVP, trouve le nouveau PFN dans le
TVPP vers lequel pointe la TVP, marque la TVP comme étant valide et met à jour
son PFN.
Lorsque le second processus accède à la page, le Gestionnaire de mémoire met à
jour la TVP de ce processus de la même manière. Sans cette optimisation, le Gestionnaire
de mémoire devrait rechercher les deux TVP (ou plus si un plus grand nombre de
processus partagent une page) et les mettre à jour lorsqu’il retourne la page
en mémoire – une opération coûteuse et sans doute peu rentable.
TABLEAU 1 : Etats des pages physiques | |
Etat des pages physiques | Description |
Valide (ou active) | La page fait partie du working set d’au moins un processus |
Transition | La page ne se trouve sur aucune liste de pages. Le Gestionnaire de mémoire est train de mettre la page en mémoire ou de l’extraire d’un fichier (par exemple un fichier de pagination) |
En attente | Le Gestionnaire de mémoire vient de supprimer une page d’un working set et toute copie de la page sur le disque est cohérente avec la copie en mémoire |
Modifiée | Le Gestionnaire de mémoire vient de supprimer la page d’un working set, mais le processus l’a modifiée et une copie du fichier sur le disque (par exemple dans un fichier de pagination) n’a pas le nouveau contenu |
Modifiée sans écriture | Le Gestionnaire de mémoire vient de supprimer la page d’un working set, mais quelque chose, généralement un driver du file system, a marqué la page de sorte qu’elle ne s’est pas automatiquement réécrite dans un fichier, même si un processus l’a modifiée. Le Gestionnaire de mémoire n’a pas encore besoin d’écrire les données sur disque |
Libre | La page ne fait partie d’aucun working set, et le processus qui l’a référencée a supprimé toutes autres références à elle (par exemple, elle a été libérée). Le thread zero-page n’a pas vidé la page (c’est-à -dire ne l’a pas remplie de zéros) |
Mise à zéro | Le Gestionnaire de mémoire a libéré la page et le thread zero-page l’a vidée |
Mauvaise | La MMU a détecté la page comme étant erronée et la page est à présent interdite |
FIGURE 1 : La base de données PFN et les working sets
Processus A
- Liste des working sets
- Liste des pages libres
- Liste des pages modifiées
- Liste des pages mises à zéroListe des mauvaises pagesListe des pages sans
écriture modifiées - Liste des pages en attente
Processus B
- Liste des working sets
- Etat des pages
- Valide
- En attente
- Modifiée
- Transition
- Libre
- Mise à zéro
FIGURE 2 : Transitions des états de pages
Page ajoutée au working set | ||||||||
Page propre supprimée des working sets | ||||||||
Active | Modifiée | En attente | Libre | Mise à zéro | ||||
Page sale supprimée du working set | Le programme d’écriture de pages modifiées termine les E/S de renvoi de page |
Page libérée | Le thread zero-page vide la page | |||||
Working sets du processus | Liste des pages modifiées | Liste des pages en attente | Liste des pages libres | Liste des pages mises à zéro |
FIGURE 3 : Deux processus avec des vues mappées de la même Section
de mémoire partagéebr>
Cartographie d’adresse virtuelle du Process A |
Table de pages du Process A | |||
Page 55 | Adresse virtuelle du process A | Objet de Section | Page 55 | |
Zone de contrôle | Segment | Page 89 | ||
Page 89 | Adresse virtuelle du process A | Table de pages du process B | ||
TVPP | Base de données PFN |
Téléchargez cette ressource

Rapport Forrester sur les services de réponse aux incidents de cybersécurité
Dans ce rapport, basé sur 25 critères, Forrester Consulting passe au crible les 14 principaux fournisseurs de services de réponse aux incidents de cybersécurité du marché. Cette analyse complète permet aux professionnels de la sécurité et de la gestion des risques d’évaluer et de sélectionner les solutions les plus adaptées à leurs besoins.