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

  <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>Das Speicherabbild eines Prozesses kann beim Diagnostizieren bestimmter Speicherprobleme helfen.</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Christian Kirbach</mal:name>
      <mal:email>christian.kirbach@gmail.com</mal:email>
      <mal:years>2014, 2015, 2021</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Benjamin Steinwender</mal:name>
      <mal:email>b@stbe.at</mal:email>
      <mal:years>2014</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Mario Blättermann</mal:name>
      <mal:email>mario.blaettermann@gmail.com</mal:email>
      <mal:years>2017, 2021</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Jürgen Benvenuti</mal:name>
      <mal:email>gastornis@posteo.org</mal:email>
      <mal:years>2023</mal:years>
    </mal:credit>
  </info>

  <title>Was ist ein Speicherabbild?</title>

  <p><gui>Virtueller Speicher</gui> ist eine Darstellungsform der Kombination von <gui>Physikalischem Arbeitsspeicher</gui> und <link xref="mem-swap">Auslagerungsspeicher</link> eines Systems. Er ermöglicht laufenden Prozessen mit <em>mehr</em> als dem vorhandenen physikalischen Speicher zu arbeiten, indem Teile des physikalischen Speichers in Dateien auf einem Datenträger <gui>abgebildet</gui> werden.</p>

  <p>Wenn ein Programm gestartet wird, weist ihm das System eine eindeutige Prozesskennung (PID) zu und die <em>Instruktionen</em> und <em>Daten</em> werden in die <em>Speicherseiten</em> geladen. Die Seitentabelle jedes Prozesses stellt die Beziehungen zwischen dessen Seiten im virtuellen Speicher und deren Ort im physischen Speicher dar. Das <gui>Speicherabbild</gui> zeigt die gesamte virtuelle Speicherbelegung des Prozesses und kann dazu eingesetzt werden, den Speicherverbrauch einer oder mehrerer laufender Instanzen eines Programms festzustellen, die korrekte Verwendung von gemeinsam verwendeten Bibliotheken sicherzustellen, die Ergebnisse einer Anpassung verschiedener Geschwindigkeitsoptimierungsparameter eines Programms zu beurteilen und Probleme wie Speicherlecks eines Programms zu diagnostizieren.</p>

  <p>Falls mehrere Kopien eines Programms laufen, müssen die Instruktionen (auch <em>Text</em> genannt) eines Programms nur einmal in den physischen Speicher geladen werden. Bei jedem Start einer neuen Instanz des Programms (als eindeutiger Prozess mit eigenen virtuellen Speicherseiten) wird in dessen Seitentabelle die Zuordnung des Textes im virtuellen Speicher zu dessen Instruktionen im realen, echten Speicherort hinterlegt. Zusätzlich erscheinen jegliche vom Prozess genutzte dynamisch geladenen Bibliotheken getrennt im virtuellen Speicher, sind aber gemeinsam genutzte Referenzen zu dem selben Textsegment der Bibliothek im realen Speicher. Bei der Berücksichtigung der gesamten Speichernutzung eines Prozesses ist zu beachten, dass die vom Laden der dynamischen Bibliotheken in den Speicher verursachte Last über alle Prozesse verteilt werden kann, welche diese gegenwärtig nutzen.</p>

  <p>Sollte das System mehr Speicherseiten benötigen als zur Verfügung stehen, werden einige der vorhandenen Seiten <em>ausgelagert</em>, das heißt, in den <gui>Auslagerungsspeicher</gui> geschrieben. Textseiten werden im Speicher als lesbar und ausführbar markiert und müssen nicht in den Auslagerungsspeicher geschrieben werden, weil sie aus dem ursprünglichen Speicherort auf dem Datenträger neu geladen werden können. Datenseiten sind auf lesbar und schreibbar gesetzt und werden auf <em>dirty</em> gesetzt, sobald sie im Speicher verändert wurden. Werden sie zur Auslagerung ausgewählt, müssen sie ausgelagert werden. Wird eine im Auslagerungsspeicher befindliche Seite von einem laufenden Prozess benötigt, muss sie vor der Nutzung aus dem Auslagerungsspeicher eingelagert werden, wodurch möglicherweise die Auslagerung einer anderen Seite ausgelöst wird.</p>

</page>
