<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Memory_Management_Unit</id>
	<title>Memory Management Unit - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Memory_Management_Unit"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Memory_Management_Unit&amp;action=history"/>
	<updated>2026-05-19T15:30:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Memory_Management_Unit&amp;diff=20194&amp;oldid=prev</id>
		<title>imported&gt;ⵓ: Vorlage {{rp}} ersetzt/ →</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Memory_Management_Unit&amp;diff=20194&amp;oldid=prev"/>
		<updated>2025-11-21T13:21:25Z</updated>

		<summary type="html">&lt;p&gt;Vorlage {{&lt;a href=&quot;/index.php?title=Vorlage:Rp&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Vorlage:Rp (Seite nicht vorhanden)&quot;&gt;rp&lt;/a&gt;}} ersetzt/ &lt;a href=&quot;/index.php?title=Benutzer:%E2%B5%93/ARreplace&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:ⵓ/ARreplace (Seite nicht vorhanden)&quot;&gt;→&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Redundanztext&lt;br /&gt;
|3=IOMMU&lt;br /&gt;
|4=Memory Management Unit&lt;br /&gt;
|5=Memory Mapping|2=Mai 2023|1=[[Spezial:Beiträge/141.30.244.2|141.30.244.2]] 00:33, 14. Mai 2023 (CEST)}}&lt;br /&gt;
Der Begriff &amp;#039;&amp;#039;&amp;#039;Memory Management Unit&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;MMU&amp;#039;&amp;#039;&amp;#039;; {{deS|&amp;#039;&amp;#039;&amp;#039;Speicherverwaltungseinheit&amp;#039;&amp;#039;&amp;#039;}}) benennt eine [[Hardware]]komponente eines [[Computer]]s, die den Zugriff auf den [[Arbeitsspeicher]] verwaltet.&lt;br /&gt;
&lt;br /&gt;
== Aufgaben ==&lt;br /&gt;
Eine MMU rechnet [[virtuelle Adresse]]n jedes einzelnen Prozesses in physische Adressen des externen Speichers um.&amp;lt;ref name=&amp;quot;TanenMOS&amp;quot;  details=&amp;quot;59&amp;quot;/&amp;gt; Damit ermöglicht sie die Trennung zwischen Prozessspeicher und Hauptspeicher, was folgende Konzepte erlaubt:&lt;br /&gt;
* Auslagern von zurzeit nicht benötigtem Speicher&lt;br /&gt;
* Verzögertes Bereitstellen von angefordertem, aber noch nicht genutztem Speicher.&lt;br /&gt;
* Isolation von Prozessen untereinander und zwischen Prozess und Betriebssystem&lt;br /&gt;
* Sharing von einzelnen Seiten zwischen Prozessen ([[Shared Memory]])&lt;br /&gt;
* Non-Sharing von Seiten zwischen Threads eines Prozesses ([[Thread-local storage]])&lt;br /&gt;
* Einblenden von Dateien als Speicher ([[Memory-mapped file]]s)&lt;br /&gt;
&lt;br /&gt;
Die MMU regelt auch [[Speicherschutz]]aufgaben. So können einzelne [[Speicherbereich]]e für die Ausführung von Code, zum weiteren Beschreiben oder zum Lesen gesperrt werden. Man unterscheidet hierbei zwischen der Abschottung von&lt;br /&gt;
* Programmen untereinander („horizontale Trennung“): Programme können (zum Beispiel bei Fehlern) nicht auf Speicher anderer Programme zugreifen.&lt;br /&gt;
* Programmen gegen das Betriebssystem („vertikale Hierarchie“): Das Funktionieren des Betriebssystems darf nicht durch (fehlerhafte) Anwendungsprogramme gefährdet werden. Dadurch ist der sichere Betrieb im Multitasking wesentlich einfacher, da die Hardware verhindert, dass ein Fehler in einem Prozess zu einem direkten Zugriff auf Daten eines anderen Prozesses oder des Betriebssystems führt. Außerdem kann durch die MMU jedem Prozess ein initial unfragmentierter, exklusiver Speicherraum präsentiert werden.&lt;br /&gt;
&lt;br /&gt;
== Einsatz und Verwendung ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color:#f9f9f9; border:1px solid #aaa; float:right; margin:6px 0 6px 15px; padding:0.2em 0.4em; width:265px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; Block Diagramm Skylake CPU&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;[https://en.wikichip.org/w/images/thumb/e/ee/skylake_server_block_diagram.svg/1900px-skylake_server_block_diagram.svg.png Link zum Bild]&amp;lt;/small&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;(Bitte [[Hilfe:FAQ zu Bildern#Wann ist eine Datei gemeinfrei („Public Domain“)?|Urheberrechte beachten]])&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
MMUs waren ursprünglich als externe und optionale Zusatzkomponenten für [[Mikroprozessor]]en konzipiert. Typische Beispiele sind die 16-Bit-CPU Motorola MC68010, die MMU war in einem externen Baustein MC68451 untergebracht. Andere Hersteller wie Zilog und Intel integrierten die MMU direkt in den [[Prozessor]] (Z8001, Intel 80286). Mit dem Aufkommen von [[Cache]]s in CPUs ist die MMU in die CPU verlagert worden.&lt;br /&gt;
&lt;br /&gt;
Dies ist zwingend notwendig, da sich die MMU zwischen CPU-Kern und dem/den Caches befinden muss.&lt;br /&gt;
Sie arbeitet mit physischen Adressen, um nicht bei jedem Thread- oder Taskwechsel geflusht werden zu müssen.&lt;br /&gt;
Multicore-Systeme mit geteiltem Cache erfordern zwingend die MMU vor diesem geteilten Cache.&lt;br /&gt;
&lt;br /&gt;
{{Stammbaum/Start|style=margin:1em;}}&lt;br /&gt;
{{Stammbaum | | | |,|MMUI |-|L1IC |.| | | | | | | | | | | |MMUI=MMU-Instruction |L1IC=L1I-Cache }}&lt;br /&gt;
{{Stammbaum | CPU |(| | | | | | | |)| L2C |-| L3C |-|Haupt|CPU=CPU-Kern |L2C=L2-Cache |L3C=L3-Cache |Haupt=Hauptspeicher }}&lt;br /&gt;
{{Stammbaum | | | |`|MMUD |-|L1DC |&amp;#039;| | | | | | | | | | | |MMUD=MMU-Data |L1DC=L1D-Cache }}&lt;br /&gt;
{{Stammbaum | | | | | | | | | | | | | | | | | | | | | | | }}&lt;br /&gt;
{{Stammbaum | | | |,|MMUI |-|L1IC |.| | | | | | | | | | | |MMUI=MMU-Instruction |L1IC=L1I-Cache }}&lt;br /&gt;
{{Stammbaum |CPU1 |(| | | | | | | |)| L2C |.| | | | | | | |CPU1=CPU-Kern 1 |L2C=L2-Cache }}&lt;br /&gt;
{{Stammbaum | | | |`|MMUD |-|L1DC |&amp;#039;| | | |!| | | | | | | |MMUD=MMU-Data |L1DC=L1D-Cache }}&lt;br /&gt;
{{Stammbaum | | | | | | | | | | | | | | | |)|sL3C |-|Haupt|sL3C=shared L3-Cache |Haupt=Hauptspeicher }}&lt;br /&gt;
{{Stammbaum | | | |,|MMUI |-|L1IC |.| | | |!| | | | | | | |MMUI=MMU-Instruction |L1IC=L1I-Cache }}&lt;br /&gt;
{{Stammbaum |CPU2 |(| | | | | | | |)| L2C |&amp;#039;| | | | | | | |CPU2=CPU-Kern 2 |L2C=L2-Cache }}&lt;br /&gt;
{{Stammbaum | | | |`|MMUD |-|L1DC |&amp;#039;| | | | | | | | | | | |MMUD=MMU-Data |L1DC=L1D-Cache }}&lt;br /&gt;
{{Stammbaum/Ende}}&lt;br /&gt;
&lt;br /&gt;
Bei Rechnern mit [[Harvard-Architektur]] gibt es zwei MMUs pro Kern – eine für den Befehls- und eine für den Datenspeicher jedes Kerns. Waren früher MMUs „Luxusartikel“, so sind sie heutzutage teilweise selbst in CPUs im Preisbereich um 1 US$ Standard (BCM2835).&lt;br /&gt;
&lt;br /&gt;
== Funktionsprinzip ==&lt;br /&gt;
[[Datei:MMU principle updated.png|mini|hochkant=1.4|Schematischer Ablauf der Umrechnung einer virtuellen in eine physische Adresse&amp;lt;ref name=&amp;quot;TanenMOS&amp;quot;  details=&amp;quot;223&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Jeder durch einen Befehl angeforderte Lese- oder Schreibzugriff wird zuerst auf seine Gültigkeit geprüft und bei Validität durch die &amp;#039;&amp;#039;Memory Management Unit&amp;#039;&amp;#039; in eine physische Adresse umgerechnet. Selbstnachladende MMUs haben einen speziellen Cache-Speicher, den [[Translation Lookaside Buffer]], der jeweils die letzten Adressübersetzungen cacht und so häufige Zugriffe auf die Übersetzungstabelle reduziert. Darüber hinaus enthält die MMU spezielle schnelle Register (wie etwa für Basisadressen und [[Speicheradresse#Segmentierte Adressen|Offsets]]), um die Adressberechnung so effizient wie möglich auszuführen. Man unterscheidet die möglichen Arten der Adressübersetzung ({{enS|address translation}}) nach der Art der verwendeten [[Seitentabelle]]n.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich gab es zwei Methoden der Adressumsetzung, diejenige nach Segmenten (segmented MMU) und diejenige nach Seiten (paged MMU). Bei der Adressumsetzung nach Segmenten werden jeweils logische Speicherbereiche variabler Größe auf einen physischen Speicherbereich gleicher Größe umgesetzt. Da dieses Verfahren jedoch nicht gut mit der Speicherverwaltung moderner Betriebssysteme mit virtueller Speicherverwaltung zusammenpasst, ist es kaum noch in Verwendung. Die Adressumsetzung nach Seiten verwendet normalerweise feste Blockgrößen und ist heute die übliche Methode. Den Mechanismus der Übersetzung von logischen Adressen in physische Adressen bezeichnet man daher im Fall der festen Blockgrößen auch als [[Paging]]. Bei Prozessen mit sehr großem Adressraum würde bei fester Blockgröße eine sehr große Anzahl von Tabelleneinträgen in der MMU nötig. Daher können einige Betriebssysteme, bei Vorhandensein einer entsprechenden MMU, Teile des Adressraums durch Seiteneinträge zusammenfassen, die wesentlich größere Blockgrößen verwenden. Einer logischen Adresse muss nicht jederzeit eine physische zugeordnet sein. Wird eine solche Adresse angesprochen, erfolgt ein sogenannter [[Seitenfehler]] ({{enS|page fault, page miss}}), woraufhin das Betriebssystem die Daten von einem externen Speichermedium laden kann; dieser Vorgang läuft für eine Applikation [[Transparenz (Computersystem)|transparent]] ab. Man spricht hier von „Speichervirtualisierung“.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Privilegienstufe]], bei der x86-Architektur von Intel auch bekannt als „Ring“&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Andrew S. Tanenbaum: &amp;#039;&amp;#039;Moderne Betriebssysteme&amp;#039;&amp;#039;. 4., überarbeitete Auflage. Hallbergmoos: Pearson-Studium, 2016, ISBN 978-3-86894-270-5.&lt;br /&gt;
* Eduard Glatz: &amp;#039;&amp;#039;Betriebssysteme – Grundlagen, Konzepte, Systemprogrammierung&amp;#039;&amp;#039;. 2., aktualisierte und überarbeitete Auflage. dpunkt Verlag, 2010, ISBN 978-3-89864-678-9.&lt;br /&gt;
* Erich Ehses et al.: &amp;#039;&amp;#039;Betriebssysteme. Ein Lehrbuch mit Übungen zur Systemprogrammierung in UNIX/Linux.&amp;#039;&amp;#039; München: Pearson-Studium 2005. ISBN 3-8273-7156-2. S. 273 ff.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;TanenMOS&amp;quot;&amp;gt;Andrew S. Tanenbaum: &amp;#039;&amp;#039;Moderne Betriebssysteme&amp;#039;&amp;#039;, 4. überarbeitete Auflage. Hallbergmoos: Pearson Studium, 2016. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Hardware]]&lt;br /&gt;
[[Kategorie:Rechnerarchitektur]]&lt;br /&gt;
[[Kategorie:Speicherverwaltung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ⵓ</name></author>
	</entry>
</feed>