<?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" lang="ru">

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

    <license xmlns="http://projectmallard.org/1.0/" href="http://creativecommons.org/licenses/by-sa/3.0/">

  <p>This work is licensed under a
  <link href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
  Attribution-ShareAlike 3.0 Unported License</link>.</p>

</license>

    <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>Просмотр карты памяти процесса.</desc>
  <credit type="translator copyright"><name>Алексей Кабанов</name><email>ak099@mail.ru</email><years>2016</years></credit></info>

  <title>Использование карт памяти</title>

  <p><gui>Виртуальная память</gui> — это сочетание <gui>физической памяти</gui> и <link xref="mem-swap">пространства подкачки</link> в системе. Она позволяет запущенным процессам получать доступ к <em>большему</em> объёму памяти, чем существующий физический объем оперативной памяти, посредством <gui>отображения</gui> мест в оперативной памяти в файлы на диске. Когда системе требуется больше страниц памяти, чем доступно, некоторые из существующих страниц будут<em>вытеснены</em> из ОЗУ и записаны в область подкачки.</p>

  <p><gui>Карта памяти</gui> показывает использование процессом общей виртуальной памяти и может применяться, чтобы определить затраты памяти на выполнение одного или нескольких экземпляров программы, чтобы убедиться в правильном использовании разделяемых библиотек, чтобы увидеть результаты подстройки различных параметров, влияющих на быстродействие или для диагноза некоторых проблем, таких как утечка памяти.</p>

  <p>Чтобы увидеть <link xref="memory-map-what">карту памяти </link> процесса:</p>

  <steps>
    <item><p>Зайдите на вкладку <gui>Процессы</gui>.</p></item>
    <item><p>Щёлкните правой кнопкой на нужном процессе в <gui>списке процессов</gui>.</p></item>
    <item><p>Выберите <gui>Карты памяти</gui>.</p></item>
  </steps>

<section id="read">
  <title>Чтение карты памяти</title>

  <list>
    <item>
      <p>Адреса отображаются в шестнадцатеричном формате (основание 16).</p>
    </item>
    <item>
      <p>Размеры отображаются с использованием <link xref="units">двоичных приставок МЭК</link>.</p>
    </item>
    <item>
      <p>Во время выполнения процесс может динамически выделять больше памяти в область, называемую <em>кучей</em>, и хранить аргументы и переменные в другой области, называемой <em>стеком</em>.</p>
    </item>
    <item>
      <p>Сама программа и каждая из разделяемых библиотек имеют по три записи: одна для текстового сегмента чтения-исполнения, одна для сегмента данных чтения-записи и одна для сегмента данных только для чтения. Оба сегмента данных должны быть выведены на страницу во время подкачки.</p>
    </item>
  </list>

<table shade="rows" ui:expanded="false">
<title>Свойства</title>
  <tr>
	  <td><p>Имя файла</p></td>
	  <td><p>Расположение разделяемой библиотеки, которая в настоящее время используется процессом. Если это поле пустое, информация о памяти в этой строке описывает память, принадлежащую процессу, имя которого отображается над таблицей Карты памяти.</p></td>
  </tr>
  <tr>
	  <td><p>Начало VM</p></td>
	  <td><p>Адрес, с которого начинается сегмент памяти. Начало VM, Окончание VM и Смещение VM вместе определяют местоположение на диске, в которое отображается разделяемая библиотека.</p></td>
  </tr>
  <tr>
	  <td><p>Окончание VM</p></td>
	  <td><p>Адрес, по которому заканчивается сегмент памяти.</p></td>
  </tr>
  <tr>
	  <td><p>Размер VM</p></td>
	  <td><p>Размер сегмента памяти.</p></td>
  </tr>
  <tr>
	  <td><p>Флаги</p></td>
	  <td><p>Следующие флаги описывают разные типы доступа к сегменту памяти, которые может иметь процесс:</p>
    <terms>
      <item>
        <title><gui>p</gui></title>
        <p>Сегмент памяти является частным для процесса и недоступным для других процессов.</p>
      </item>
      <item>
        <title><gui>r</gui></title>
        <p>Процесс имеет право на чтение из сегмента памяти.</p>
      </item>
      <item>
        <title><gui>s</gui></title>
        <p>Сегмент памяти используется совместно с другими процессами.</p>
      </item>
      <item>
        <title><gui>w</gui></title>
        <p>Процесс имеет право на запись в сегмент памяти.</p>
      </item>
      <item>
        <title><gui>x</gui></title>
        <p>Процесс имеет право на исполнение инструкций, содержащихся в сегменте памяти.</p>
      </item>
    </terms>
    </td>
  </tr>
  <tr>
	  <td><p>Смещение VM</p></td>
	  <td><p>Расположение адреса в сегменте памяти, отсчитывая от Начала VM.</p></td>
  </tr>
  <tr>
	  <td><p>Неразделяемая, разделяемая, чистая, использованная</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><em>Неразделяемая</em> — доступ к страницам имеет один процесс</p></item>
          <item><p><em>Разделяемая</em> — доступ к страницам может осуществляться более чем одним процессом</p></item>
          <item><p><em>Чистые</em> страницы еще не были изменены, пока находятся в памяти, и могут быть отброшены при назначении на выгрузку</p></item>
          <item><p><em>Грязные</em> страницы были изменены, находясь в памяти, и должны быть записаны на диск при назначении на выгрузку</p></item></list></td>
  </tr>
  <tr>
	  <td><p>Устройство</p></td>
	  <td><p>Главный и младший номера устройства, на котором находится имя файла разделяемой библиотеки. Вместе они определяют раздел в системе.</p></td>
  </tr>
  <tr>
	  <td><p>Inode</p></td>
	  <td><p>Узел inode на устройстве, с которого загружается в память местоположение разделяемой библиотеки. Inode - это структура, которую файловая система использует для хранения файла, и присвоенный ей номер является уникальным.</p></td>
  </tr>
</table>

</section>
</page>
