<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" type="topic" style="task" id="memory-map-what" xml:lang="es">

  <info>
    <revision pkgversion="3.11" date="2014-01-28" status="candidate"/>
    <link type="guide" xref="index#memory" group="memory"/>

    <include xmlns="http://www.w3.org/2001/XInclude" href="legal.xml"/>

    <credit type="author copyright">
      <name>Phil Bull</name>
      <email>philbull@gmail.com</email>
      <years>2011</years>
    </credit>

    <credit type="author copyright">
      <name>Michael Hill</name>
      <email>mdhillca@gmail.com</email>
      <years>2011, 2014</years>
    </credit>

    <desc>El mapa de memoria de un proceso puede ayudar a diagnosticar ciertos problemas de memoria.</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Daniel Mustieles</mal:name>
      <mal:email>daniel.mustieles@gmail.com</mal:email>
      <mal:years>2014 - 2020</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Rodrigo Lledó</mal:name>
      <mal:email>rodhos92@gmail.com</mal:email>
      <mal:years>2021</mal:years>
    </mal:credit>
  </info>

  <title>¿Qué es un mapa de memoria?</title>

  <p>La <gui>Memoria virtual</gui> es la representación de la combinación entre la <gui>memoria física</gui> y el <link xref="mem-swap">espacio de intercambio</link> en un sistema. Permite que los procesos en ejecución puedan acceder a <em>más</em> memoria que la memoria física, <gui>asignando</gui> ubicaciones de la memoria física a archivos en el disco.</p>

  <p>Cuando se inicia un programa, el sistema le asigna un ID de proceso único (PID) y sus <em>instrucciones</em> y <em>datos</em> se cargan en la memoria en <em>páginas</em>. 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 <gui>mapa de memoria</gui> 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.</p>

  <p>Si se están ejecutando varias copias de un programa, las instrucciones (o <em>texto</em>) 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.</p>

  <p>Cuando el sistema necesita más páginas de memoria de las que están disponibles, algunas de las páginas existentes serán <em>paginadas</em> o escritas en el <gui>espacio de intercambio</gui>. 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 <em>sucio</em> 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.</p>

</page>
