Phil Bull
philbull@gmail.com 2011
Michael Hill
mdhillca@gmail.com 2011, 2014
El mapa de memoria de un proceso puede ayudar a diagnosticar ciertos problemas de memoria.
Daniel Mustieles
daniel.mustieles@gmail.com 2014 - 2020
Rodrigo Lledó
rodhos92@gmail.com 2021

# ¿Qué es un mapa de memoria?

La Memoria virtual es la representación de la combinación entre la memoria física y el espacio de intercambio en un sistema. Permite que los procesos en ejecución puedan acceder a más memoria que la memoria física, asignando ubicaciones de la memoria física a archivos en el disco.

Cuando se inicia un programa, el sistema le asigna un ID de proceso único (PID) y sus instrucciones y datos se cargan en la memoria en páginas. La tabla de páginas de cada proceso asigna la correspondencia entre sus páginas en la memoria virtual y su ubicación en la memoria física. El mapa de memoria muestra la memoria virtual total usada por el proceso y se puede usar para determinar el coste en memoria de ejecutar una o varias instancias del programa, para asegurarse del correcto uso de bibliotecas compartidas, para ver el resultado de ajustar varios parámetros de configuración del rendimiento que el programa pueda tener o para diagnosticar problemas como fugas de memoria.

Si se están ejecutando varias copias de un programa, las instrucciones (o texto) del programa solo deben cargarse una vez en la memoria física. Cada vez que se lanza una nueva instancia del programa (como un proceso único con sus propias páginas de memoria virtual), su tabla de páginas asigna la ubicación del texto en la memoria virtual a esas instrucciones en la ubicación de la memoria real original. Además, las bibliotecas compartidas dinámicas utilizadas por el proceso aparecen como distintas en la memoria virtual, pero son referencias compartidas a una única copia del segmento de texto de la biblioteca en la memoria real. Al contabilizar el uso total de memoria de un proceso, es importante tener en cuenta que el costo de las bibliotecas compartidas cargadas en la memoria se puede distribuir entre todos los procesos que las utilizan actualmente.

Cuando el sistema necesita más páginas de memoria de las que están disponibles, algunas de las páginas existentes serán paginadas o escritas en el espacio de intercambio. Las páginas de texto están marcadas como lectura-ejecución en la memoria y no es necesario escribirlas para intercambiarlas, ya que se pueden volver a cargar desde su ubicación original en el disco. Las páginas de datos tienen permisos de lectura y escritura y, si se modifican cuando están en la memoria, se etiquetan como sucio y, cuando se designan para el intercambio, se deben paginar. Cuando un proceso en ejecución requiere una página en el espacio de intercambio, es necesario volver a intercambiarla antes de usarla, lo que quizás haga que se pagine otra página.