This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Phil Bull
philbull@gmail.com 2011
Michael Hill
mdhillca@gmail.com 2011, 2014
La carte de la mémoire d’un processus peut être utile pour diagnostiquer certains problèmes de mémoire.
naybnet
naybnet@gmail.com 2014
Alain Lojewski
allomervan@gmail.com 2014
Julien Hardelin
jhardlin@orange.fr 2014
Leonor Palazzo
leonor.palazzo@gmail.com 2015
Charles Monzat
charles.monzat@free.fr 2020-2021
Guillaume Bernard
associations@guillaume-bernard.fr 2021

# La carte de la mémoire

La Mémoire virtuelle est une combinaison de la Mémoire physique et de l’espace d’échange dans un système. Elle permet aux processus actifs d’accéder à davantage de mémoire que la mémoire existante en reliant les localisations dans la mémoire physique aux fichiers sur disque.

Lorsqu’un programme est lancé, le système lui assigne un numéro unique de processus (PID) et ses instructions ainsi que ses données sont chargées dans la mémoire dans des pages. Les cartes de la mémoire affichent l’utilisation totale de la mémoire virtuelle par un processus. Elles peuvent être utilisées pour déterminer le coût en terme de mémoire lors de l’exécution d’une ou plusieurs instances d’un programme, afin d’assurer l’utilisation correcte des bibliothèques partagées, de savoir comment ajuster les paramètres de performance disponibles dans un programme, ou de diagnostiquer des problèmes comme les fuites de mémoire.

Si de multiples copies d’un programme sont actifs, les instructions (ou code) du programme ne doivent être chargées qu’une seule fois dans la mémoire physique. À chaque nouvelle instanciation du programme (en tant que processus unique, avec ses propres pages de mémoire virtuelle), la table de mémoire associe l’emplacement du code dans la mémoire virtuelle aux instructions dans les emplacements de la mémoire physique. En outre, toute bibliothèque partagée dynamiquement utilisée par le processus apparaîtra dans une mémoire virtuelle distincte, mais aura des références partagées à une copie unique du segment de code de la bibliothèque dans la mémoire réelle. Lors de la comptabilisation de l’utilisation totale de la mémoire d’un processus, il est important de noter que le coût des bibliothèques partagées chargées en mémoire peut être réparti sur tous les processus qui les utilisent actuellement.

Lorsque le système a besoin de davantage de pages de mémoire que celles qui sont disponibles, certaines des pages existantes seront désindexées ou écrites vers l’espace d’échange. Les pages de texte sont marquées pour read-execute (lecture et exécution) en mémoire et n’ont pas besoin d’être écrites dans l’espace d’échange puisqu’elles peuvent être rechargées depuis leur emplacement d’origine sur le disque. Les pages de données ont des permissions de read-write (lecture et écriture), et si elles sont modifiées lorsqu’elles sont en mémoire, elles sont étiquetées comme modifiées. Lorsqu’elles sont désignées pour être déplacées vers l’espace d’échange, elles doivent être désindexées du système de pagination. Lorsqu’une page dans l’espace d’échange est requise par un processus en cours d’exécution, elle doit être retirée de l’espace d’échange avant d’être utilisée, ce qui peut entraîner la désindexation d’une autre page.