Memory Management Unit
Der Begriff Memory Management Unit (MMU; deutsch Speicherverwaltungseinheit) benennt eine Hardwarekomponente eines Computers, die den Zugriff auf den Arbeitsspeicher verwaltet.
Aufgaben
Sie rechnet virtuelle Adressen in physische Adressen um.[1]:39–40 Damit ermöglicht sie den Zugriff auf den gesamten virtuellen Adressraum, der von einem Betriebssystem mit Hilfe der virtuellen Speicherverwaltung zur Verfügung gestellt wird.
Die MMU regelt auch Speicherschutzaufgaben. So können einzelne Speicherbereiche für die Ausführung von Code oder zum weiteren Beschreiben gesperrt werden. Man unterscheidet hierbei zwischen der Abschottung von
- Programmen untereinander („horizontale Trennung“): Programme können (zum Beispiel bei Fehlern) nicht auf Speicher anderer Programme zugreifen.
- 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.
Einsatz und Verwendung
MMUs waren ursprünglich als externe Zusatzkomponente für Mikroprozessoren konzipiert. Heute sind sie in den meisten Hochleistungsprozessoren direkt integriert oder in der Nähe des Prozessors angeordnet.[1]:40 Bei Rechnern mit Harvard-Architektur gibt es sogar zwei verschiedene MMUs innerhalb des Prozessors – eine für den Befehls- und eine für den Datenspeicher.
Embedded-Prozessoren und Mikrocontroller haben größtenteils keine MMU. Sie würde die Herstellungskosten erhöhen und wird in diesem Bereich nur selten benötigt. Anwendungen für diesen Einsatzbereich können daher meist nicht auf eine Adressübersetzungstechnik zurückgreifen, der physische Speicher wird direkt adressiert.[1]:223
Funktionsprinzip

Jede durch einen Prozess angeforderte virtuelle Adresse wird zuerst durch die Memory Management Unit in eine physische Adresse umgerechnet, bevor sie auf den Adressbus geschrieben wird. Selbstnachladende MMUs haben einen speziellen Cache-Speicher, den Translation Lookaside Buffer, der jeweils die letzten Adressübersetzungen in Form einer Tabelle abspeichert. Darüber hinaus enthält die MMU spezielle schnelle Register (wie etwa für Basisadressen und Offsets), um die Adressberechnung so effizient wie möglich auszuführen. Man unterscheidet die möglichen Arten der Adressübersetzung (englisch address translation) nach der Art der verwendeten Seitentabellen.
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 (englisch page fault, page miss), woraufhin das Betriebssystem die Daten von einem externen Speichermedium laden kann; dieser Vorgang läuft für eine Applikation transparent ab. Man spricht hier von „Speichervirtualisierung“.
Siehe auch
Literatur
- Andrew S. Tanenbaum: Moderne Betriebssysteme. 2., überarbeitete Auflage. Pearson Studium, 2003, ISBN 3-8273-7019-1.
- Eduard Glatz: Betriebssysteme – Grundlagen, Konzepte, Systemprogrammierung. 2., aktualisierte und überarbeitete Auflage. dpunkt Verlag, 2010, ISBN 978-3-89864-678-9.
Einzelnachweise
- ↑ a b c d Andrew S. Tanenbaum: Moderne Betriebssysteme, 2. überarbeitete Auflage. Pearson Studium, 2003, ISBN 3-8273-7019-1