> Tech > Mémoire partagée et TVP prototypes

Mémoire partagée et TVP prototypes

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

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

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ée
br>

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

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010