2.3.6 MMU - Memory Management Unit

[gesichtete Version][gesichtete Version]
K (Physikalisch -> Physisch. Siehe: https://www.freist.de/itblog/archives/2010/06/entry_16.html)
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=MMU - Memory Management Unit=
<p>
<p>
<loop_index>MMU|Memory Management Unit</loop_index>Die '''Memory Management Unit''', kurz '''MMU''', ist eine Hardware-Komponente, welche üblicherweise direkt auf der CPU beheimatet ist. Sie unterstützt das Betriebssystem bei der <loop_index>Verwaltung Hauptspeicher|Hauptspeicher, Verwaltung mit MMU</loop_index>Verwaltung des Hauptspeichers, und trägt so zu einer größeren Flexibilität und besseren Ausnutzung des vorhandenen <loop_index>physikalischer Speicher|Speicher, physikalischer</loop_index>physikalischen Speichers (<loop_index>RAM</loop_index>RAM) bei.
<loop_index id="5fa978690e83c">MMU|Memory Management Unit</loop_index>Die '''Memory Management Unit''', kurz '''MMU''', ist eine Hardware-Komponente, welche üblicherweise direkt auf der CPU beheimatet ist. Sie unterstützt das Betriebssystem bei der <loop_index id="5fa978690e850">Verwaltung Hauptspeicher|Hauptspeicher, Verwaltung mit MMU</loop_index>Verwaltung des Hauptspeichers, und trägt so zu einer größeren Flexibilität und besseren Ausnutzung des vorhandenen <loop_index id="5fa978690e860">physischer Speicher|Speicher, physischer</loop_index>physischen Speichers (<loop_index id="5fa978690e86f">RAM</loop_index>RAM) bei.
</p>
</p>


Zeile 28: Zeile 27:


<p>
<p>
<loop_index>Wir brauchen ein Betriebssystem|Notwendigkeit Betriebssystem</loop_index>
<loop_index id="5fa978690e87e">Wir brauchen ein Betriebssystem|Notwendigkeit Betriebssystem</loop_index>
<loop_area type="important">'''Wir brauchen ein Betriebssystem!'''
<loop_area type="important">'''Wir brauchen ein Betriebssystem!'''
<p>
<p>
Zeile 40: Zeile 39:
== Virtuelle Speicherverwaltung ==
== Virtuelle Speicherverwaltung ==
<p>
<p>
<loop_index>Virtuelle Speicherverwaltung|Speicherverwaltung, virtueller Speicher</loop_index>
<loop_index id="5fa978690e88d">Virtuelle Speicherverwaltung|Speicherverwaltung, virtueller Speicher</loop_index>
Die virtuelle Speicherverwaltung kann sehr kompliziert erscheinen, wenn man sie allein durch Worte und ein paar Abbildungen beschreiben, bzw. verstehen soll. Glücklicherweise gibt es das folgende Video, welches die Grundlagen anschaulich zeigt.
Die virtuelle Speicherverwaltung kann sehr kompliziert erscheinen, wenn man sie allein durch Worte und ein paar Abbildungen beschreiben, bzw. verstehen soll. Glücklicherweise gibt es das folgende Video, welches die Grundlagen anschaulich zeigt.
</p>
</p>
Zeile 46: Zeile 45:
<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>{{#ev:youtube|PpyWObQw70o|700}}
<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="5fa978690e89c">{{#ev:youtube|PpyWObQw70o|700}}
</loop_media>
</loop_media>
</loop_area>
</loop_area>
Zeile 58: Zeile 57:
<br />
<br />


== Definition: Physikalischer Speicher ==
== Definition: Physischer Speicher ==
<p>
<p>
<loop_area type="definition">
<loop_area type="definition">
<p>
<p>
Unter dem '''physikalischen Speicher eines Computers''' versteht man den tatsächlich in dieses Gerät verbauten Speicher, soweit er direkt von der CPU oder der MMU angesprochen werden kann.
Unter dem '''physischen Speicher eines Computers''' versteht man den tatsächlich in dieses Gerät verbauten Speicher, soweit er direkt von der CPU oder der MMU angesprochen werden kann.
</p>
</p>
</loop_area>
</loop_area>
Zeile 70: Zeile 69:
== Definition: Virtueller Speicher ==
== Definition: Virtueller Speicher ==
<p>
<p>
<loop_index>Virtueller Speicher|Speicher, virtuell</loop_index>
<loop_index id="5fa978690e8ab">Virtueller Speicher|Speicher, virtuell</loop_index>
<loop_area type="definition">
<loop_area type="definition">
<p>
<p>
Zeile 86: Zeile 85:
<loop_area type="important">
<loop_area type="important">
<p>
<p>
Der physikalische Speicher bezieht sich auf den Computer, während der virtuelle Speicher auf einen Prozess bezogen wird!
Der physische Speicher bezieht sich auf den Computer, während der virtuelle Speicher auf einen Prozess bezogen wird!
</p>
</p>
</loop_area>
</loop_area>
Zeile 98: Zeile 97:
<br />
<br />


== Definition: Physikalische Speicheradresse ==
== Definition: Physische Speicheradresse ==
<p>
<p>
<loop_index>Physikalische Speicheradresse|Physikalische Adresse|Speicheradresse, physikalisch|Adresse, physikalisch</loop_index>
<loop_index id="5fa978690e8b9">Physische Speicheradresse|Physische Adresse|Speicheradresse, physisch|Adresse, physisch</loop_index>
<loop_area type="definition">
<loop_area type="definition">
<p>
<p>
Unter einer '''physikalischen Speicheradresse''' versteht man eine Adresse innerhalb des physikalischen Speichers eines Rechners.
Unter einer '''physischen Speicheradresse''' versteht man eine Adresse innerhalb des physischen Speichers eines Rechners.
</p>
</p>
</loop_area>
</loop_area>
Zeile 111: Zeile 110:
== Definition: Virtuelle Speicheradresse ==
== Definition: Virtuelle Speicheradresse ==
<p>
<p>
<loop_index>Virtuelle Speicheradresse|Virtuelle Adresse|Speicheradresse, virtuell|Adresse, virtuell</loop_index>
<loop_index id="5fa978690e8c7">Virtuelle Speicheradresse</loop_index><loop_index id="5fa978b5c727c">Virtuelle Adresse</loop_index><loop_index id="5fa978b5c728c">Speicheradresse, virtuell</loop_index><loop_index id="5fa978b5c7293">Adresse, virtuell</loop_index>
<loop_area type="definition">
<loop_area type="definition">
<p>
<p>
Zeile 123: Zeile 122:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Eindeutig oder mehrdeutig?">
<loop_task title="Eindeutig oder mehrdeutig?" id="5fa978690e8d7">
<p>
<p>
Eine physikalische Adresse ist eindeutig, d.h. es gibt sie nur einmal pro Rechner. Wie ist das bei einer virtuellen Adresse? Ist diese auch eindeutig, oder ist sie mehrdeutig? Erläutere!
Eine physische Adresse ist eindeutig, d.h. es gibt sie nur einmal pro Rechner. Wie ist das bei einer virtuellen Adresse? Ist diese auch eindeutig, oder ist sie mehrdeutig? Erläutere!
</p>
</p>
</loop_task>
</loop_task>
Zeile 134: Zeile 133:
== Was sich durch die MMU ändert ==
== Was sich durch die MMU ändert ==
<p>
<p>
<loop_index>MMU, Arbeitsweise|Arbeitsweise, MMU</loop_index>
<loop_index id="5fa978690e8e5">MMU, Arbeitsweise</loop_index><loop_index id="5fa978695f978">Arbeitsweise, MMU</loop_index>
Wie im [http://youtu.be/PpyWObQw70o Video] zu sehen ist, wird durch die Einführung einer Memory Management Unit das Betriebssystem bei der Umrechnung von virtuellen in physikalische Speicheradressen unterstützt. Da die MMU als Hardware auf genau diese Tätigkeit optimiert wurde, kann sie diese Umrechnung sehr viel schneller durchführen, und so bei jedem einzelnen Hauptspeicherzugriff einen Geschwindigkeitsvorteil erzielen.
Wie im [http://youtu.be/PpyWObQw70o Video] zu sehen ist, wird durch die Einführung einer Memory Management Unit das Betriebssystem bei der Umrechnung von virtuellen in physische Speicheradressen unterstützt. Da die MMU als Hardware auf genau diese Tätigkeit optimiert wurde, kann sie diese Umrechnung sehr viel schneller durchführen, und so bei jedem einzelnen Hauptspeicherzugriff einen Geschwindigkeitsvorteil erzielen.
</p>
</p>


Zeile 150: Zeile 149:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Umrechnung und was noch?">
<loop_task title="Umrechnung und was noch?" id="5fa978690e8f2">
<p>
<p>
Eine der Aufgaben der MMU ist die Umrechnung von virtuellen in physikalische Speicheradressen. Aber das kann noch nicht alles sein. Denk' mal daran, was durch die MMU auf der CPU alles weggefallen ist.
Eine der Aufgaben der MMU ist die Umrechnung von virtuellen in physische Speicheradressen. Aber das kann noch nicht alles sein. Denk' mal daran, was durch die MMU auf der CPU alles weggefallen ist.
</p>
</p>
<p>
<p>
Zeile 165: Zeile 164:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Virtuelle Größen">
<loop_task title="Virtuelle Größen" id="5fa978690e900">
<p>
<p>
Ein Computer besitzt 2 GiB physikalischen Speicher. Jeder gestartete Prozess besitzt 4 GiB virtuellen Speicher. Die typische Größe einer einzelnen virtuellen Seite bei Verwendung der virtuellen Speicherverwaltung beträgt 4 KiB.
Ein Computer besitzt 2 GiB physischen Speicher. Jeder gestartete Prozess besitzt 4 GiB virtuellen Speicher. Die typische Größe einer einzelnen virtuellen Seite bei Verwendung der virtuellen Speicherverwaltung beträgt 4 KiB.
* Wie groß ist dann ein einzelner Seitenrahmen des physikalischen Speichers?
* Wie groß ist dann ein einzelner Seitenrahmen des physischen Speichers?
* In wieviele Seiten ist der gesamte virtuelle Speicher eines Prozesses unterteilt?
* In wieviele Seiten ist der gesamte virtuelle Speicher eines Prozesses unterteilt?
* Wieviele Seitenrahmen gibt es insgesamt?
* Wieviele Seitenrahmen gibt es im physischen Speicher insgesamt?
* Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt ein einzelner Seitenrahmen?
* Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt ein einzelner Seitenrahmen des physischen Speichers?
* Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt eine einzelne Seite?
* Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt eine einzelne Seite des virtuelle Speichers?
</p>
</p>
<p>
<p>
Zeile 187: Zeile 186:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Swapping bei virtueller Speicherverwaltung?">
<loop_task title="Swapping bei virtueller Speicherverwaltung?" id="5fa978690e90d">
<p>
<p>
[[Swapping: Aus- und Einlagern von kompletten Prozessen|Swapping]] kennst du bereits. Es bezeichnet das Aus- und Einlagern eines '''kompletten''' Prozesses. Diskutiere die folgenden Fragen in deiner Lerngruppe:
[[Swapping: Aus- und Einlagern von kompletten Prozessen|Swapping]] kennst du bereits. Es bezeichnet das Aus- und Einlagern eines '''kompletten''' Prozesses. Diskutiere die folgenden Fragen in deiner Lerngruppe:
* Funktioniert Swapping deiner Meinung nach auch bei der virtuellen Speicherverwaltung?
* Funktioniert Swapping deiner Meinung nach auch bei der virtuellen Speicherverwaltung?
* Falls ja: Sollten dann die leeren Seiten auch ausgelagert werden?
* Falls ja: Sollten dann die leeren Seiten auch ausgelagert werden?
* Ist es bei der virtuellen Speicherverwaltung vielleicht auch möglich, dass nur einzelne Seitenrahmen aus- und später wieder eingelagert werden, während die restlichen Seitenrahmen die ganze Zeit im physikalischen Speicher verbleiben?<br /><small>(Das wäre dann eine große Änderung zum Swapping, da hier immer der '''komplette''' Prozess ausgelagert werden musste.)</small>
* Ist es bei der virtuellen Speicherverwaltung vielleicht auch möglich, dass nur einzelne Seitenrahmen aus- und später wieder eingelagert werden, während die restlichen Seitenrahmen die ganze Zeit im physischen Speicher verbleiben?<br /><small>(Das wäre dann eine große Änderung zum Swapping, da hier immer der '''komplette''' Prozess ausgelagert werden musste.)</small>
</p>
</p>
</loop_task>
</loop_task>
</loop_area>
</loop_area>
</p>
</p>
<div class="autoit_do_not_print">
<br />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>
</div>

Aktuelle Version vom 29. Oktober 2021, 09:59 Uhr

Die Memory Management Unit, kurz MMU, ist eine Hardware-Komponente, welche üblicherweise direkt auf der CPU beheimatet ist. Sie unterstützt das Betriebssystem bei der Verwaltung des Hauptspeichers, und trägt so zu einer größeren Flexibilität und besseren Ausnutzung des vorhandenen physischen Speichers (RAM) bei.


Wie es bisher ohne MMU ist

Bevor die konkrete Arbeitsweise der MMU erläutert wird, sei kurz an den bisherigen Stand der Hauptspeicherverwaltung erinnert:

Wichtig

Die bisher betrachtete Hauptspeicherverwaltung hat mit Hilfe des Basisregisters jeweils zusammenhängende Speicherbereiche für jeden im RAM eingelagerten Prozess zugreifbar gemacht. Der Speicherschutz wurde mit Hilfe des Limitregisters realisiert.


Nachteilig, weil wenig flexibel, ist hierbei der Zwang zum zusammenhängenden Speicherbereich. Es muss bereits ganz zu Beginn festgelegt werden, wie groß dieser Speicherbereich ist. Nachträgliche Änderungen dieser Größe (d.h. zur Laufzeit des betreffenden Prozesses) sind zwar nicht unmöglich, aber i.d.R. sehr zeitintensiv und damit in der Durchführung nicht zu empfehlen.

Um eine Flexibilisierung der Speicherverwaltung zu erreichen, wurden in Betriebssystemen Konzepte einer virtuellen Speicherverwaltung integriert. Die bereits von vorangegangenen Seiten bekannte Forderung wird hier wiederholt:

Wichtig

Wir brauchen ein Betriebssystem!

Und eine der Aufgaben des Betriebssystems wird die Verwaltung des Hauptspeichers und die Versorgung aller Prozesse mit benötigten Teilen des Hauptspeichers sein.


Virtuelle Speicherverwaltung

Die virtuelle Speicherverwaltung kann sehr kompliziert erscheinen, wenn man sie allein durch Worte und ein paar Abbildungen beschreiben, bzw. verstehen soll. Glücklicherweise gibt es das folgende Video, welches die Grundlagen anschaulich zeigt.

video


Aus dem Video folgen einige Definitionen:


Definition: Physischer Speicher

Definition

Unter dem physischen Speicher eines Computers versteht man den tatsächlich in dieses Gerät verbauten Speicher, soweit er direkt von der CPU oder der MMU angesprochen werden kann.


Definition: Virtueller Speicher

Definition

Unter dem virtuellen Speicher eines Prozesses versteht man den Speicherbereich, der einem Prozess durch das Betriebssystem zur Verfügung gestellt wird.


Man bemerke hier eine entscheidende Kleinigkeit in den Definitionen:

Wichtig

Der physische Speicher bezieht sich auf den Computer, während der virtuelle Speicher auf einen Prozess bezogen wird!


Da bei den vorangegangenen Definitionen der Speicher an sich unterschieden wurde, gibt es auch bzgl. der Speicheradressen eine Unterscheidung:


Definition: Physische Speicheradresse

Definition

Unter einer physischen Speicheradresse versteht man eine Adresse innerhalb des physischen Speichers eines Rechners.


Definition: Virtuelle Speicheradresse

Definition

Unter einer virtuellen Speicheradresse versteht man eine Adresse innerhalb des virtuellen Speichers eines Prozesses.


Aufgabe 1

Aufgabe

Eine physische Adresse ist eindeutig, d.h. es gibt sie nur einmal pro Rechner. Wie ist das bei einer virtuellen Adresse? Ist diese auch eindeutig, oder ist sie mehrdeutig? Erläutere!


Was sich durch die MMU ändert

Wie im Video zu sehen ist, wird durch die Einführung einer Memory Management Unit das Betriebssystem bei der Umrechnung von virtuellen in physische Speicheradressen unterstützt. Da die MMU als Hardware auf genau diese Tätigkeit optimiert wurde, kann sie diese Umrechnung sehr viel schneller durchführen, und so bei jedem einzelnen Hauptspeicherzugriff einen Geschwindigkeitsvorteil erzielen.

Basis- und Limitregister fallen durch den Einsatz der MMU weg. Sie werden nicht mehr benötigt.

Eine etwas detailliertere Betrachtung der virtuellen Speicherverwaltung geschieht später im Kapitel Betriebssysteme.


Aufgabe 2

Aufgabe

Eine der Aufgaben der MMU ist die Umrechnung von virtuellen in physische Speicheradressen. Aber das kann noch nicht alles sein. Denk' mal daran, was durch die MMU auf der CPU alles weggefallen ist.

Was ist also eine weitere Aufgabe der MMU?


Aufgabe 3

Aufgabe

Ein Computer besitzt 2 GiB physischen Speicher. Jeder gestartete Prozess besitzt 4 GiB virtuellen Speicher. Die typische Größe einer einzelnen virtuellen Seite bei Verwendung der virtuellen Speicherverwaltung beträgt 4 KiB.

  • Wie groß ist dann ein einzelner Seitenrahmen des physischen Speichers?
  • In wieviele Seiten ist der gesamte virtuelle Speicher eines Prozesses unterteilt?
  • Wieviele Seitenrahmen gibt es im physischen Speicher insgesamt?
  • Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt ein einzelner Seitenrahmen des physischen Speichers?
  • Wieviele Speicherzellen zu je 8 Bit (= 1 Byte) besitzt eine einzelne Seite des virtuelle Speichers?

Gib jeweils kurz den Rechenweg mit an!
Hier findest du Hinweise zu den Schreibweisen GiB und KiB.


Aufgabe 4

Aufgabe

Swapping kennst du bereits. Es bezeichnet das Aus- und Einlagern eines kompletten Prozesses. Diskutiere die folgenden Fragen in deiner Lerngruppe:

  • Funktioniert Swapping deiner Meinung nach auch bei der virtuellen Speicherverwaltung?
  • Falls ja: Sollten dann die leeren Seiten auch ausgelagert werden?
  • Ist es bei der virtuellen Speicherverwaltung vielleicht auch möglich, dass nur einzelne Seitenrahmen aus- und später wieder eingelagert werden, während die restlichen Seitenrahmen die ganze Zeit im physischen Speicher verbleiben?
    (Das wäre dann eine große Änderung zum Swapping, da hier immer der komplette Prozess ausgelagert werden musste.)