3.3.1 Virtuelle Speicherverwaltung

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(25 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<p>
 
Die Grundlagen der [[MMU - Memory Management Unit|virtuellen Speicherverwaltung mit MMU]] waren bereits in dem folgenden Video erläutert worden. Es schadet an dieser Stelle nicht, sich die erklärten Inhalte noch einmal in Erinnerung zu rufen:
<loop_index id="5fa978847e0f1">virtuelle Speicherverwaltung|Speicherverwaltung, virtuell</loop_index>
Die Grundlagen der [[MMU - Memory Management Unit|virtuellen Speicherverwaltung mit MMU]] waren bereits in dem folgenden Video erläutert worden. Es schadet an dieser Stelle nicht, sich die erklärten Inhalte noch einmal in Erinnerung zu rufen.
</p>
</p>


<br />
== Grundlagen ==
<p>
<p>
<loop_area icon="Video.png" icontext="Video">
<loop_area icon="Video.png" icontext="Video">
<loop_media type="video" title="Grundlagen virtueller Speicherverwaltung mit MMU (04:47)" description="http://youtu.be/PpyWObQw70o" copyright="CC-BY" index=true show_copyright=true>
<loop_media type="video" title="Grundlagen virtueller Speicherverwaltung mit MMU (04:47)" description="http://youtu.be/PpyWObQw70o" copyright="CC-BY" index=true show_copyright=true id="5fa978847e0fd">
{{#ev:youtube|PpyWObQw70o|700}}
{{#ev:youtube|PpyWObQw70o|700}}
</loop_media>
</loop_media>
Zeile 16: Zeile 19:


<br />
<br />
==== Grundgedanken der virtuellen Speicherverwaltung ====
== Grundgedanken der virtuellen Speicherverwaltung ==
<p>
<loop_index id="5fa978847e107">virtuelle Speicherverwaltung, Grundgedanken|Grundgedanken, virtuelle Speicherverwaltung</loop_index>
<cite id="5fa978847e112">Mandl+2013</cite> fasst die Grundgedanken der virtuellen Speicherverwaltung treffend in drei Punkten zusammen:
</p>
<p>
<p>
<cite>Mandl+2013</cite> fasst die Grundgedanken der virtuellen Speicherverwaltung treffend zusammen:
* Ein Prozess sollte auch dann noch ablaufen können, wenn er nur teilweise im Hauptspeicher ist. Wichtig ist hierbei, dass die Teile des Prozesses (Daten und Code) im physikalischen Speicher sind, die gerade benötigt werden.
* Ein Prozess sollte auch dann noch ablaufen können, wenn er nur teilweise im Hauptspeicher ist. Wichtig ist hierbei, dass die Teile des Prozesses (Daten und Code) im physikalischen Speicher sind, die gerade benötigt werden.
* Der Speicherbedarf eines Pogramms sollte größer als der physikalisch vorhandene Hauptspeicher sein können.
</p>
* Ein Programmierer sollte am besten nur einen kontinuierlichen (linearen) Speicherbereich, beginnend bei Adresse 0 sehen und sich nicht um die Zerstückelung (Fragmentierung) des Hauptspeichers auf mehrere BEnutzer kümmern müssen.
<p>
* Der Speicherbedarf eines Prozesses sollte größer als der physikalisch vorhandene Hauptspeicher sein können.
</p>
<p>
* Ein Programmierer sollte am besten nur einen kontinuierlichen (linearen) Speicherbereich, beginnend bei Adresse 0 sehen und sich nicht um die Zerstückelung (Fragmentierung) des Hauptspeichers auf mehrere Benutzer kümmern müssen.
</p>
 
<br />
 
== Grundbegriffe ==
<p>
Die virtuelle Speicherverwaltung definiert eine Reihe von Grundbegriffen, welche in den folgenden Erläuterungen immer wieder verwendet werden.
</p>
 
<p>
Bereits bekannt sind die Fachbegriffe:
* [[MMU_-_Memory_Management_Unit#Definition:_Physikalischer_Speicher|Physikalischer Speicher]]
* [[MMU_-_Memory_Management_Unit#Definition:_Physikalische_Speicheradresse|Physikalische Speicheradresse]]
* [[MMU_-_Memory_Management_Unit#Definition:_Virtueller_Speicher|Virtueller Speicher]]
* [[MMU_-_Memory_Management_Unit#Definition:_Virtuelle_Speicheradresse|Virtuelle Speicheradresse]]
</p>
<p>
Gegebenenfalls sollten die Definitionen noch einmal nachgelesen werden.
</p>
 
<p>
Zusätzlich werden weitere Fachbegriffe benötigt, die teilweise bereits in dem [http://youtu.be/PpyWObQw70o obigen Video] benutzt wurden.
</p>
 
<br />
 
== Definition: Seitenrahmen ==
<p>
<loop_index id="5fa978847e11b">Seitenrahmen</loop_index><loop_index id="5fa978c668109">Pageframe</loop_index><loop_index id="5fa978c668114">Frame</loop_index><loop_index id="5fa978c66811c">Rahmen</loop_index>
<loop_area type="definition">
<p>
Unter einem '''Seitenrahmen''' (englisch: '''Pageframe''', oder kurz: '''Frame''' bzw. '''Rahmen''') versteht man einen zusammenhängenden Block von Speicherzellen des ''physikalischen'' Speichers.
</p>
</loop_area>
</p>
<p>
Typische Größen für einen Seitenrahmen in der Praxis sind 1, 4, 8, 16 oder 64 [[GiB,_MiB,_KiB_im_Vergleich_zu_GB,_MB,_KB|KiB]]. Alle Seitenrahmen eines Systems haben stets die gleiche Größe.
</p>
 
<br />
 
== Definition: Seite ==
<p>
<loop_index id="5fa978847e127">Seite</loop_index><loop_index id="5fa97884bd8f2">Page</loop_index><loop_index id="5fa97884bd903">virtuelle Seite</loop_index>
<loop_area type="definition">
<p>
Unter einer (virtuellen) '''Seite''' (englisch: '''Page''') versteht man einen zusammenhängenden Block von Speicherzellen des ''virtuellen'' Speichers. Die Blockgröße einer Seite entspricht immer exakt der Größe eines Seitenrahmens.
</p>
</loop_area>
</p>
<p>
Alle Seiten eines Systems haben stets die gleiche Größe.
</p>
 
<br />
== Aufgabe 1 ==
<p>
<loop_area type="task">
<loop_task title="Rahmen vs. Seite" id="5fa978847e130">
<p>
Was ist der Unterschied zwischen einem ''Seitenrahmen'' und einer ''Seite''?
</p>
<p>
Anhand des [http://youtu.be/PpyWObQw70o Videos] kann nachvollzogen werden, warum die Größe eines ''Seitenrahmens'' und einer ''Seite'' stets identisch sein muss. Erläutere warum!
</p>
</loop_task>
</loop_area>
</p>
<br />
<p>
Die folgende Aufgabe ist besonders wichtig, um alle weiteren Details der virtuellen Speicherverwaltung verstehen zu können.
</p>
<br />
== Aufgabe 2 ==
<p>
<loop_area type="task">
<loop_task title="Rechne nach!" id="5fa978847e13b">
<p>
Ein Rechnersystem verfügt über 1 [[GiB,_MiB,_KiB_im_Vergleich_zu_GB,_MB,_KB|GiB]] physikalischen Speicher. Jedem gestarteten Prozess wird vom Betriebssystem ein virtueller Speicher von 4 [[GiB,_MiB,_KiB_im_Vergleich_zu_GB,_MB,_KB|GiB]] zugewiesen. Die Größe eines Seitenrahmens beträgt 64 [[GiB,_MiB,_KiB_im_Vergleich_zu_GB,_MB,_KB|KiB]].
</p>
<p>
a) Wie viele Seitenrahmen gibt es insgesamt?
</p>
<p>
b) Wie viele Seiten gibt es insgesamt (pro Prozess)?
</p>
<br />
<p>
Angenommen, ein einzelner [[Vom_Quellcode_zum_Prozessor#Befehle_in_Maschinencode|Maschinensprachebefehl]] hat eine Größe von 32 Bit:
</p>
<p>
c) Wie viele Befehle passen in einen Seitenrahmen?
</p>
<p>
d) Und wie viele Befehle passen demnach in eine Seite?
</p>
<br />
<p>
Innerhalb eines Seitenrahmens kann jede einzelne Speicherzelle (= 8 Bit) adressiert werden. Demnach beginnt der erste Befehl bei Adresse 0 innerhalb des Rahmens, der zweite Befehl bei Adresse 4, der dritte Befehl bei Adresse 8, usw.
</p>
<p>
e) Wie viele Adressen existieren pro Seitenrahmen insgesamt?
</p>
<p>
f) Und wie viele Adressen existieren demnach pro Seite?
</p>
<p>
g) Wie viele Bit werden benötigt, um diese Adressen angeben zu können?
</p>
<br />
<p>
Merke dir die gerade errechnete Bitanzahl, du wirst sie gleich wieder brauchen!
</p>
<p>
Oben hattest du bereits die Anzahl der Rahmen und die Anzahl der Seiten berechnet:
</p>
<p>
h) Wie viele Bit werden benötigt, um die Anzahl der Seitenrahmen damit codieren zu können?
</p>
<p>
i) Und wie viele Bit benötigt man für die Codierung der Seitenanzahl?
</p>
<br />
<p>
Jetzt kannst du den Schluss ziehen:
</p>
<p>
j) Aus wie vielen Bit besteht eine physikalische Adresse des betrachteten Rechnersystems?
</p>
<p>
k) Und aus wie vielen Bit besteht eine virtuelle Adresse?
</p>
<spoiler text="Tipp">
<p>
Die Bit-Länge einer ''physikalischen'' Adresse ist die Anzahl der Bits für die Gesamtzahl an Seitenrahmen addiert mit der Anzahl der Bits für die Gesamtzahl an Adressen innerhalb eines Rahmens.
</p>
<p>
Die Bit-Länge einer ''virtuellen'' Adresse ist die Anzahl der Bits für die Gesamtzahl an Seiten addiert mit der Anzahl der Bits für die Gesamtzahl an Adressen innerhalb einer Seite.
</p>
</spoiler>
</loop_task>
</loop_area>
</p>
 
<br />
<p>
Das Endergebnis der vorangegangenen Aufgabe zeigt, dass eine physikalische Adresse eine andere Bit-Länge als eine virtuelle Adresse besitzt. Zusammen mit dem [http://youtu.be/PpyWObQw70o Video] wird nun klar, dass eine Umrechnung von virtuellen Adressen in physikalische Adressen erfolgen muss.
</p>
<p>
Genau dies ist die Aufgabe der [[MMU - Memory Management Unit|Memory Management Unit (MMU)]].
</p>
</p>



Aktuelle Version vom 10. November 2020, 13:54 Uhr

Die Grundlagen der virtuellen Speicherverwaltung mit MMU waren bereits in dem folgenden Video erläutert worden. Es schadet an dieser Stelle nicht, sich die erklärten Inhalte noch einmal in Erinnerung zu rufen.


Grundlagen

video

Mit den Erläuterungen des Videos ergibt sich eine grundlegende Vorstellung davon, was die virtuelle Speicherverwaltung ausmacht. Im Folgenden geht es um einen tieferen Einblick in die Thematik.


Grundgedanken der virtuellen Speicherverwaltung

Mandl 2013 fasst die Grundgedanken der virtuellen Speicherverwaltung treffend in drei Punkten zusammen:

  • Ein Prozess sollte auch dann noch ablaufen können, wenn er nur teilweise im Hauptspeicher ist. Wichtig ist hierbei, dass die Teile des Prozesses (Daten und Code) im physikalischen Speicher sind, die gerade benötigt werden.

  • Der Speicherbedarf eines Prozesses sollte größer als der physikalisch vorhandene Hauptspeicher sein können.

  • Ein Programmierer sollte am besten nur einen kontinuierlichen (linearen) Speicherbereich, beginnend bei Adresse 0 sehen und sich nicht um die Zerstückelung (Fragmentierung) des Hauptspeichers auf mehrere Benutzer kümmern müssen.


Grundbegriffe

Die virtuelle Speicherverwaltung definiert eine Reihe von Grundbegriffen, welche in den folgenden Erläuterungen immer wieder verwendet werden.

Bereits bekannt sind die Fachbegriffe:

Gegebenenfalls sollten die Definitionen noch einmal nachgelesen werden.

Zusätzlich werden weitere Fachbegriffe benötigt, die teilweise bereits in dem obigen Video benutzt wurden.


Definition: Seitenrahmen

Definition

Unter einem Seitenrahmen (englisch: Pageframe, oder kurz: Frame bzw. Rahmen) versteht man einen zusammenhängenden Block von Speicherzellen des physikalischen Speichers.

Typische Größen für einen Seitenrahmen in der Praxis sind 1, 4, 8, 16 oder 64 KiB. Alle Seitenrahmen eines Systems haben stets die gleiche Größe.


Definition: Seite

Definition

Unter einer (virtuellen) Seite (englisch: Page) versteht man einen zusammenhängenden Block von Speicherzellen des virtuellen Speichers. Die Blockgröße einer Seite entspricht immer exakt der Größe eines Seitenrahmens.

Alle Seiten eines Systems haben stets die gleiche Größe.


Aufgabe 1

Aufgabe

Was ist der Unterschied zwischen einem Seitenrahmen und einer Seite?

Anhand des Videos kann nachvollzogen werden, warum die Größe eines Seitenrahmens und einer Seite stets identisch sein muss. Erläutere warum!


Die folgende Aufgabe ist besonders wichtig, um alle weiteren Details der virtuellen Speicherverwaltung verstehen zu können.


Aufgabe 2

Aufgabe

Ein Rechnersystem verfügt über 1 GiB physikalischen Speicher. Jedem gestarteten Prozess wird vom Betriebssystem ein virtueller Speicher von 4 GiB zugewiesen. Die Größe eines Seitenrahmens beträgt 64 KiB.

a) Wie viele Seitenrahmen gibt es insgesamt?

b) Wie viele Seiten gibt es insgesamt (pro Prozess)?


Angenommen, ein einzelner Maschinensprachebefehl hat eine Größe von 32 Bit:

c) Wie viele Befehle passen in einen Seitenrahmen?

d) Und wie viele Befehle passen demnach in eine Seite?


Innerhalb eines Seitenrahmens kann jede einzelne Speicherzelle (= 8 Bit) adressiert werden. Demnach beginnt der erste Befehl bei Adresse 0 innerhalb des Rahmens, der zweite Befehl bei Adresse 4, der dritte Befehl bei Adresse 8, usw.

e) Wie viele Adressen existieren pro Seitenrahmen insgesamt?

f) Und wie viele Adressen existieren demnach pro Seite?

g) Wie viele Bit werden benötigt, um diese Adressen angeben zu können?


Merke dir die gerade errechnete Bitanzahl, du wirst sie gleich wieder brauchen!

Oben hattest du bereits die Anzahl der Rahmen und die Anzahl der Seiten berechnet:

h) Wie viele Bit werden benötigt, um die Anzahl der Seitenrahmen damit codieren zu können?

i) Und wie viele Bit benötigt man für die Codierung der Seitenanzahl?


Jetzt kannst du den Schluss ziehen:

j) Aus wie vielen Bit besteht eine physikalische Adresse des betrachteten Rechnersystems?

k) Und aus wie vielen Bit besteht eine virtuelle Adresse?


Das Endergebnis der vorangegangenen Aufgabe zeigt, dass eine physikalische Adresse eine andere Bit-Länge als eine virtuelle Adresse besitzt. Zusammen mit dem Video wird nun klar, dass eine Umrechnung von virtuellen Adressen in physikalische Adressen erfolgen muss.

Genau dies ist die Aufgabe der Memory Management Unit (MMU).



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png