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

  <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>Mapa paměti procesů může pomoci při diagnostice určitých problémů s pamětí.</desc>
  </info>

  <title>Co je to mapa paměti?</title>

  <p><gui>Virtuální paměť</gui> představuje kombinaci <gui>fyzické paměti</gui> a <link xref="mem-swap">odkládacího prostoru</link> v systému. Umožňuje běžícím procesům přístup k <em>většímu množství</em> paměti, než fyzicky existuje, díky <gui>mapování</gui> míst ve fyzické paměti do souborů na disku.</p>

  <p>Když je spuštěn program, přiřadí mu systém jedinečné identifikační číslo procesu (PID) a jeho strojové instrukce a data jsou načtena do paměti rozdělené na tzv. <em>stránky</em>. Tabulka stránek každého procesu mapuje vztah mezi jeho stránkami ve virtuální paměti a jejich umístěním ve fyzické paměti. <gui>Mapa paměti</gui> zobrazuje celkovou virtuální pamět použitou procesem a může být využita k určení nároků na paměť při běhu jedné nebo více instancí programu, abyste se ujistili o využití správných sdílených knihoven, abyste viděli výsledky různých vylaďovacích parametrů, které program má nebo abyste diagnostikovali problémy typu únik paměti.</p>

  <p>Když běží více kopií programu, strojové instrukce a neměnná data (označováno termínem <em>text</em>) programu stačí načíst do fyzické paměti jen jednou. Pokaždé, když je spuštěna nová instance programu (jako jedinečný proces s vlastními stránkami virtuální paměti), jeho tabulka stránek namapuje textové stránky ve virtuální paměti na původní umístění ve skutečné paměti. Navíc, případné dynamicky sdílené knihovny použité procesem se jeví jako jasně oddělené ve virtuální paměti, ale sdílí odkaz na jedinou kopii textového segmentu knihovny ve skutečné paměti. Když se počítá celková paměť použitá procesem, je důležité si uvědomit, že náklady na sdílené knihovny načtené do paměti lze rozprostřít na všechny procesy, které je právě používají.</p>

  <p>Pokud systém potřebuje více paměťových stránek, než je k dispozici, mohou být některé ze stávajících stránek „<em>odstránkovány</em>“, přičemž mohou být zapsány do <gui>odkládacího prostoru</gui>. Textové stránky jsou v paměti označené příznakem čtení-spouštění a není třeba je zapisovat do odkládacího prostoru, protože je lze znovu načíst z původního umístění na disku. Datové stránky mají oprávnění čtení-zápis a když dojde v paměti k jejich změně, jsou označeny jako <em>špinavé</em> a pokud byly odložené na disk, je kopii na disku třeba zahodit. Když je stránka v odkládacím prostoru vyžádána běžícím procesem, musí být načtena zpět, aby bylo možné ji použít, což může způsobit odstránkování jiné stránky.</p>

</page>
