2011-01-16 4 views
0

Dans le lien suivant dans le 4ème image à partir du haut:page Cache pour la mémoire partagée

http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files

  • Le scénario décrit est celui de deux processus, « rendre » et « 3drender », partage un fichier. L'auteur décrit comment le mécanisme de partage joue avec le cache de pages.
  • A l'origine, les pages virtuelles étaient mappées sur le cache de pages.
  • A l'étape 4, "render" se voit attribuer une nouvelle page anonyme, qui contiendrait certaines modifications, qu'il souhaiterait faire à "scene.dat # 2".
  • Une fois que "render" fait ses changements, comment cette modification est-elle reflétée dans "3drender" qui a continué à pointer vers le cadre de page de cache de page contenant "scene.dat # 2"?
  • Aussi, ne devrait pas cette modification faite par "render", revenez au cache de page, là en remplaçant l'ancienne copie de cache de page "scene.dat # 2"? La partie qui reste floue pour moi, est ce qui se passe "après" l'un des processus écrit sur une page partagée et comment cette "mise à jour" fait son chemin vers la page cache et le disque, de sorte que d'autres processus qui partagent le même fichier, voir ce changement.

Ce serait génial si quelqu'un pouvait jeter de la lumière.

Merci, VIJAY

Répondre

1

Dans le scénario décrit dans l'article lié, Render et render3d ont des copies de mémoire mappée privées d'un seul fichier. Autant que les processus peuvent le dire, le système d'exploitation a alloué un tas de pages dans l'espace d'adressage de chaque processus et juste copié le contenu du fichier là-bas. S'ils modifient ces pages, rien ne se passe. Aucun changement ne retourne au fichier. Aucun changement entre de rendu et render3d. Voilà ce que cela signifie d'avoir une cartographie privée.

Bien sûr, donner à chaque processus une copie complète du fichier est très lent, donc le système d'exploitation utilise un tour de mémoire virtuelle. Jusqu'à ce qu'un processus écrit dans le fichier, il peut utiliser une copie partagée (partagée avec d'autres processus et le cache de page, également appelé cache de tampon). La copie privée ne se produit que lorsque le processus tente d'abord de modifier la page.