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

  <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>Visualizzare la mappa di memoria di un processo.</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Davide Ferracin</mal:name>
      <mal:email>davide.ferracin@protonmail.com</mal:email>
      <mal:years>2022</mal:years>
    </mal:credit>
  </info>

  <title>Usare le mappe di memoria</title>

  <p>La <gui>memoria virtuale</gui> è una rappresentazione della combinazione della <gui>memoria fisica</gui> e dello <link xref="mem-swap">spazio di swap</link> in un sistema. Permette ai processi in esecuzione di accedere a <em>più</em> della memoria fisica esistente, <gui>mappando</gui> le posizioni in essa su dei file sul disco. Quando al sistema servono più pagine di memoria di quante ne abbia a disposizione, alcune delle pagine esistenti vengono spostate nello <gui>spazio di swap</gui> (in inglese si dice che vengono «paged out»).</p>

  <p>La <gui>mappa di memoria</gui> mostra la memoria virtuale complessiva usata dal processo, e può essere usata: per determinare il costo in termini di memoria dell'eseguire un'istanza singola piuttosto che multipla del programma, per assicurarsi di stare usando le librerie condivise corrette, di vedere gli effetti di aver regolato qualche parametro sulle prestazioni, e per diagnosticare problemi come le falle di memoria.</p>

  <p>Per visualizzare la <link xref="memory-map-what">mappa di memoria</link> di un processo:</p>

  <steps>
    <item><p>Fare clic sulla scheda <gui>Processi</gui>.</p></item>
    <item><p>Fare clic destro sul processo desiderato nella <gui>lista dei processi</gui>.</p></item>
    <item><p>Fare clic su <gui>Mappe memoria</gui>.</p></item>
  </steps>

<section id="read">
  <title>Leggere le mappe di memoria</title>

  <list>
    <item>
      <p>Gli indirizzi sono mostrati in esadecimale (base 16).</p>
    </item>
    <item>
      <p>Le dimensioni sono mostrati con i <link xref="units">prefissi binari della IEC</link>.</p>
    </item>
    <item>
      <p>Durante l'esecuzione, il processo può allocare dinamicamente ulteriore memoria in un'area chiamata <em>heap</em>, e immagazzinare argomenti e variabili in un'altra area chiamata <em>stack</em>.</p>
    </item>
    <item>
      <p>Il programma stesso e ognuna delle librerie condivise hanno tre voci ciascuno, una per il segmento di testo leggibile ed eseguibile, una per il segmento di dati leggibili e scrivibili e una per il segmento di dati in sola lettura. Entrambi i segmenti di dati, se è necessario l'uso dello swap, vengono spostati nello spazio di swap.</p>
    </item>
  </list>

<table shade="rows" ui:expanded="false">
<title>Proprietà</title>
  <tr>
	  <td><p>Nome file</p></td>
	  <td><p>La posizione di una libreria condivisa che è attualmente usata dal processo. Se questo campo è vuoto, le informazioni sulla memoria della riga corrispondente descrivono la memoria posseduta dal processo il cui nome è mostrato sopra alla tabella della mappa di memoria.</p></td>
  </tr>
  <tr>
	  <td><p>Inizio VM</p></td>
	  <td><p>L'indirizzo al quale comincia il segmento di memoria. Inizio VM, Fine VM ed Offset VM specificano, assieme, la posizione sul disco in cui è mappata la libreria condivisa.</p></td>
  </tr>
  <tr>
	  <td><p>Fine VM</p></td>
	  <td><p>L'indirizzo al quale termina il segmento di memoria.</p></td>
  </tr>
  <tr>
	  <td><p>Dimensione VM</p></td>
	  <td><p>La dimensione del segmento di memoria.</p></td>
  </tr>
  <tr>
	  <td><p>Flag</p></td>
	  <td><p>Le seguenti <em>flag</em> descrivono i diversi tipi di accesso al segmento di memoria che può avere il processo:</p>
    <terms>
      <item>
        <title><gui>p</gui></title>
        <p>Il segmento di memoria è riservato al processo, e altri processi non possono accedervi.</p>
      </item>
      <item>
        <title><gui>r</gui></title>
        <p>Il processo ha il permesso di leggere dal segmento di memoria.</p>
      </item>
      <item>
        <title><gui>s</gui></title>
        <p>Il segmento di memoria è condiviso con altri processi.</p>
      </item>
      <item>
        <title><gui>w</gui></title>
        <p>Il processo ha il permesso di scrivere nel segmento di memoria.</p>
      </item>
      <item>
        <title><gui>x</gui></title>
        <p>Il processo ha il permesso di eseguire istruzioni contenute all'interno del segmento di memoria.</p>
      </item>
    </terms>
    </td>
  </tr>
  <tr>
	  <td><p>Offset VM</p></td>
	  <td><p>La posizione dell'indirizzo all'interno del segmento di memoria, misurata a partire da Inizio VM.</p></td>
  </tr>
  <tr>
	  <td><p>Privata, condivisa, clean, dirty</p></td>
<!--	  <td><p>Text pages are flagged read-execute in memory and don't need to
  be written to swap since they can be re-loaded from their original location
  on disk. Data pages have read-write permissions, and if modified when in
  memory, they are labeled <em>dirty</em>, and when designated for swapping,
  must be paged out.</p></td>
-->
          <td><list><item><p>Alle pagine <em>private</em> accede un solo processo</p></item>
          <item><p>Alle pagine <em>condivise</em> possono accedere più processi</p></item>
          <item><p>Le pagine <em>clean</em> non sono ancora state modificate da quando sono in memoria, e possono essere scartate al momento dello spostamento nello spazio di swap.</p></item>
          <item><p>Le pagine <em>dirty</em> sono state modificate da quando sono in memoria, e devono essere trascritte sul disco al momento dello spostamento nello spazio di swap.</p></item></list></td>
  </tr>
  <tr>
	  <td><p>Device</p></td>
	  <td><p>Il <em>major number</em> e <em>minor number</em> del device sul quale si trova il nome del file della libreria condivisa. Presi assieme, specificano una partizione del sistema.</p></td>
  </tr>
  <tr>
	  <td><p>Inode</p></td>
	  <td><p>L'inode sul device dal quale la libreria condivisa è caricata in memoria. Un inode è la struttura che il file system usa per archiviare un file, e il numero assegnato ad esso è univoco.</p></td>
  </tr>
</table>

</section>
</page>
