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

  <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>Картата на паметта на даден процес може да помогне за оправяне на определени проблеми с паметта.</desc>
  </info>

  <title>Какво е карта на паметта?</title>

  <p><gui>Виртуалната памет</gui> представлява комбинираната <gui>физическа памет</gui> и <link xref="mem-swap">пейджинг паметта</link> в дадена система. То позволява на работещите процеси да имат достъп до <em>повече</em> от съществуващата физическа памет чрез <gui>задаване</gui> на места във физическата памет към файлове на диска.</p>

  <p>Когато се стартира програма, системата ѝ присвоява уникален идентификатор на процеса (PID или ИдПр) и нейните <em>инструкции</em> и <em>данни</em> се зареждат в паметта в <em>страници</em>. Таблицата на страниците на всеки процес задава съответствието между неговите страници във виртуалната памет и местоположението им във физическата памет. <gui>Картата на паметта</gui> показва общото ползване на виртуалната памет от процеса и може да се използва за определяне на разходите за памет при стартиране на една или няколко инстанции на програмата, за да се гарантира използването на правилните споделени библиотеки, за да се видят резултатите от настройването на различни параметри за настройка на производителността, които програмата може да има, или за оправяне на проблеми като изтичане на памет.</p>

  <p>Ако се изпълняват няколко копия на дадена програма, инструкциите (или <em>текстът</em>) на програмата трябва да се заредят само веднъж във физическата памет. Всеки път, когато се стартира нова инстанция на програмата (като уникален процес със свои собствени страници във виртуалната памет), неговата таблица на страниците задава местоположението на текста във виртуалната памет с тези инструкции в оригиналното място в реалната памет. Освен това всички динамично споделени библиотеки, използвани от процеса, се появяват като отделни във виртуалната памет, но са споделени препратки към едно копие на текстовия сегмент на библиотеката в реалната памет. При отчитане на общото използване на паметта от даден процес е важно да се отбележи, че разходите за заредените в паметта споделени библиотеки могат да бъдат разпределени между всички процеси, които ги използват в момента.</p>

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

</page>
