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

  <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>O mapa de memória de um processo pode ajudar a diagnosticar certos problemas de memória.</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Rafael Fontenelle</mal:name>
      <mal:email>rafaelff@gnome.org</mal:email>
      <mal:years>2017-2021</mal:years>
    </mal:credit>
  </info>

  <title>O que é um mapa de memória?</title>

  <p><gui>Memória virtual</gui>é uma representação da combinação de <gui>memória física</gui> e <link xref="mem-swap">espaço de swap</link> em um sistema. Ela permite que processos em execução acessem <em>mais</em> do que a memória física existente <gui>mapeando</gui> localizações na memória física para arquivos no disco.</p>

  <p>Quando um programa é iniciado, o sistema atribui a ele um ID de processo (PID) exclusivo e suas <em>instruções</em> e <em>dados</em> são carregados na memória em <em>páginas</em>. A tabela de páginas de cada processo mapeia a correspondência entre suas páginas na memória virtual e sua localização na memória física. O <gui>mapa de memória</gui> exibe o uso total de memória virtual do processo e pode ser usado para determinar o custo de memória de executar uma única ou múltiplas instâncias do programa, para garantir o uso das bibliotecas compartilhadas corretas, para ver os resultados de ajustar vários parâmetros de afinação de desempenho que o programa pode ter, ou para diagnosticar problemas como vazamentos de memória.</p>

  <p>Se várias cópias de um programa estiverem sendo executadas, as instruções (ou <em>texto</em>) do programa só precisam ser carregadas uma vez na memória física. Cada vez que uma nova instância do programa é iniciada (como um processo único com suas próprias páginas de memória virtual), sua tabela de páginas mapeia a localização do texto na memória virtual para essas instruções na localização da memória real original. Além disso, todas as bibliotecas compartilhadas dinâmicas usadas pelo processo aparecem como distintas na memória virtual, mas são referências compartilhadas a uma única cópia do segmento de texto da biblioteca na memória real. Ao contabilizar o uso total da memória de um processo, é importante observar que o custo das bibliotecas compartilhadas carregadas na memória pode ser distribuído por todos os processos que as utilizam atualmente.</p>

  <p>Quando o sistema precisa de mais páginas de memória do que as disponíveis, algumas das páginas existentes serão <em>paginadas</em> ou gravadas no <gui>espaço swap</gui>. As páginas de texto são marcadas como leitura/execução na memória e não precisam ser escritas para swap, pois podem ser recarregadas de seu local original no disco. As páginas de dados têm permissões de leitura e escrita e, se modificadas na memória, são rotuladas como <em>sujas</em> e, quando designadas para fazer swap, devem ser paginadas. Quando uma página no espaço swap é necessária para um processo em execução, ela precisa ser trocada de volta antes do uso, talvez fazendo com que outra página seja paginada.</p>

</page>
