Speicherverwaltungseinheit

Eine Speicherverwaltungseinheit (MMU), manchmal genannt paginierte Speicherverwaltungseinheit (PMMU), ist ein Computerhardware-Bestandteil, der dafür verantwortlich ist, Zugänge zum durch die Zentraleinheit gebetenen Gedächtnis zu behandeln. Seine Funktionen schließen Übersetzung von virtuellen Adressen zu physischen Adressen (d. h., virtuelles Speichermanagement), Speicherschutz, Kontrolle des geheimen Lagers, Busschlichtung und in einfacheren Computerarchitekturen (besonders 8 Bit Systeme) Bankschaltung ein.

Wie es arbeitet

Moderne MMUs teilen normalerweise den virtuellen Adressraum (die Reihe von Adressen, die durch den Verarbeiter verwendet sind) in Seiten, jeder, eine Größe habend, die eine Macht 2, gewöhnlich einige Kilobytes ist, aber sie können viel größer sein. Der Boden n Bit der Adresse (der Ausgleich innerhalb einer Seite) wird unverändert verlassen. Die oberen Adressbit sind die (virtuelle) Seitenummer. Der MMU übersetzt normalerweise virtuelle Seitenzahlen zu physischen Seitenzahlen über ein assoziatives geheimes Lager genannt eine Übersetzung lookaside Puffer (TLB). Wenn der TLB an einer Übersetzung Mangel hat, wird ein langsamerer Mechanismus, der mit der Hardware spezifische Datenstrukturen oder Softwarehilfe einschließt, verwendet. Die in solchen Datenstrukturen gefundenen Daten werden normalerweise Seitentabelleneinträge (PTEs) genannt, und die Datenstruktur selbst wird normalerweise einen Seitentisch genannt. Die physische Seitenummer wird mit dem Seitenausgleich verbunden, um die ganze physische Adresse zu geben.

Ein PTE oder TLB Zugang können auch Information darüber einschließen, ob die Seite dem geschrieben worden ist (das schmutzige Bit), als es verwendet letzt war (das zugegriffene Bit, für einen am wenigsten kürzlich verwendeten Seitenersatzalgorithmus), welche Prozesse (Benutzerweise, Oberaufseher-Weise) lesen und ihm schreiben können, und ob es versteckt werden sollte.

Manchmal verbieten ein TLB Zugang oder PTE Zugang zu einer virtuellen Seite vielleicht, weil kein physisches zufälliges Zugriffsgedächtnis dieser virtuellen Seite zugeteilt worden ist. In diesem Fall gibt der MMU einer Seitenschuld zur Zentraleinheit Zeichen. Das Betriebssystem (OS) behandelt dann die Situation vielleicht, indem es versucht wird, einen Ersatzrahmen des RAM zu finden und einen neuen PTE aufzustellen, um es zur gebetenen virtuellen Adresse kartografisch darzustellen. Wenn kein RAM frei ist, kann es notwendig sein, eine vorhandene Seite (bekannt als ein Opfer) mit einem Ersatzalgorithmus zu wählen, und es zur Platte zu sparen (das wird "Paginierung" genannt). Mit einem MMUs kann es auch eine Knappheit an PTEs oder TLB Einträgen geben, in welchem Fall der OS ein dafür wird befreien müssen, neu kartografisch darzustellen.

In einigen Fällen kann eine "Seitenschuld" einen Softwareprogrammfehler anzeigen. Ein Schlüsselvorteil eines MMU ist Speicherschutz: Ein OS kann es verwenden, um gegen irregeführte Programme, durch das Zurückweisen des Zugangs zum Gedächtnis zu schützen, zu dem ein besonderes Programm Zugang nicht haben sollte. Gewöhnlich teilt ein OS jedes Programm sein eigener virtueller Adressraum zu.

Ein MMU reduziert auch das Problem der Zersplitterung des Gedächtnisses. Nachdem Blöcke des Gedächtnisses zugeteilt und befreit worden sind, kann das freie Gedächtnis gebrochen (diskontinuierlich) werden, so dass der größte aneinander grenzende Block des freien Gedächtnisses viel kleiner sein kann als die Summe. Mit dem virtuellen Gedächtnis kann eine aneinander grenzende Reihe von virtuellen Adressen zu mehreren aneinander nichtgrenzenden Blöcken des physischen Gedächtnisses kartografisch dargestellt werden.

In einigen frühen Mikroprozessor-Designs wurde Speichermanagement durch einen getrennten einheitlichen Stromkreis wie der VLSI VI475 oder Motorola 68851 verwendete mit Motorola 68020 Zentraleinheit im Macintosh II oder dem mit der Familie von Zilog Z80 von Verarbeitern verwendeten Z8015 durchgeführt. Spätere Mikroprozessoren wie Motorola 68030 und der ZILOG Z280 haben den MMU zusammen mit der Zentraleinheit auf demselben einheitlichen Stromkreis gelegt, wie Intel 80286 und später x86 Mikroprozessoren getan hat.

Während sich dieser Artikel auf modernen MMUs konzentriert, der allgemein auf Seiten gestützt ist, haben frühe Systeme ein ähnliches Konzept für das Grundgrenze-Wenden verwendet, das hat sich weiter in die Segmentation entwickelt. Diejenigen sind gelegentlich auch auf modernen Architekturen anwesend. Die x86 Architektur hat Segmentation aber nicht Paginierung in den 80286 zur Verfügung gestellt, und stellt sowohl Paginierung als auch Segmentation in den 80386 und späteren Verarbeitern zur Verfügung (obwohl der Gebrauch der Segmentation in 64-Bit-Operation nicht verfügbar ist).

Beispiele

Die meisten modernen Systeme teilen Gedächtnis in Seiten, die 4 Kilobytes bis 64 Kilobytes in der Größe häufig mit der Möglichkeit sind, riesige Seiten von 2 Mb bis 512 Mb in der Größe zu verwenden. Seitenübersetzungen werden in einem TLB versteckt. Einige Systeme, hauptsächlich ältere RISC Designs, stellen in den OS Fallen, wenn eine Seitenübersetzung im TLB nicht gefunden wird. Die meisten Systeme verwenden einen Hardware-basierten Baumspaziergänger. Die meisten Systeme erlauben dem MMU, arbeitsunfähig zu sein; einige machen den MMU unbrauchbar, wenn sie in den OS-Code Fallen stellen.

VAX

VAX Seiten sind 512 Bytes, der sehr klein ist. Ein OS kann vielfache Seiten behandeln, als ob sie eine einzelne größere Seite, zum Beispiel Linux auf VAX Gruppen 8 Seiten zusammen waren, so wird das System angesehen als, 4-Kilobyte-Seiten zu haben. Der VAX teilt Gedächtnis in 4 Gebiete des festen Zwecks, jedes 1 GB in der Größe. Sie sind:

  • P0 Raum, der für das Mehrzweckgedächtnis pro Prozess wie Haufen, verwendet wird
  • P1 Raum oder Kontrollraum, der auch pro Prozess ist und normalerweise für Oberaufseher, Manager, Kern, und Benutzerstapel und andere Strukturen pro Prozesssteuerung verwendet wird, die durch das Betriebssystem, geführt sind
  • S0 Raum oder Systemraum, der zu allen Prozessen und Läden Betriebssystemcode und Daten, entweder paginiert oder nicht, einschließlich pagetables, global
ist

Seitentische sind große geradlinige Reihe. Normalerweise würde das sehr verschwenderisch sein, wenn Adressen an beiden Enden der möglichen Reihe verwendet werden, aber der Seitentisch für Anwendungen wird selbst im paginierten Gedächtnis des Kerns versorgt. So gibt es effektiv einen 2-Niveaus-Baum, Anwendungen erlaubend, spärliches Speicherlay-Out zu haben, ohne viel Raum auf unbenutzten Seitentabelleneinträgen zu vergeuden. Der VAX MMU ist bemerkenswert, für an einem zugegriffenen Bit Mangel zu haben. OSes, die Paginierung durchführen, müssen eine Weise finden, mit dem zugegriffenen Bit wettzueifern, wenn sie effizient funktionieren sollen. Gewöhnlich wird der OS Seiten regelmäßig kartografisch undarstellen, so dass Schulden "Seite nicht Gegenwart" verwendet werden können, um den OS ein zugegriffenes Bit setzen zu lassen.

ARM

ARM-Architektur hat Anwendungsverarbeiter-Werkzeug ein durch die Virtuelle Speichersystemarchitektur des ARMS definierter MMU gestützt. Die aktuelle Architektur definiert PTEs, um 4 Kilobytes und 64-Kilobyte-Seiten, 1-Mb-Abteilungen und 16-Mb-Superabteilungen zu beschreiben; Vermächtnis-Versionen haben auch 1 Kilobytes winzige Seite definiert. Der ARM verwendet einen Zwei-Niveaus-pagetable, wenn er 4 Kilobytes und 64-Kilobyte-Seiten, oder gerade ein einstufiger pagetable für 1-Mb-Abteilungen und 16-Mb-Abteilungen verwendet.

TLB Aktualisierungen werden automatisch durch den Seitentisch durchgeführt, Hardware spazieren gehend.

PTEs schließen Lesen/Schreiben-Zugriffserlaubnis ein, die auf dem Vorzug, cacheability Information gestützt ist, ein NX, hat und ein nichtsicheres Bit gebissen

IBM System/370 und Nachfolger

IBM System/370 hat einen MMU seit dem Anfang der 1970er Jahre gehabt; es war als ein DAT (Dynamische Adressumrechnung) Kasten am Anfang bekannt. Es hat die ungewöhnliche Eigenschaft der Speicherung zugegriffener und schmutziger Bit außerhalb des Seitentisches. Sie beziehen sich auf das physische Gedächtnis aber nicht virtuelle Gedächtnis. Auf sie wird durch Instruktionen des speziellen Zwecks zugegriffen. Das nimmt oben für den OS ab, der sich würde sonst fortpflanzen müssen, hat zugegriffen und schmutzige Bit von den Seitentischen bis eine mehr physisch orientierte Datenstruktur. Das macht OS-Niveau-Virtualisierung leichter. Diese Eigenschaften sind durch folgende Großrechner-Architekturen, bis zum Strom z/Architecture geerbt worden.

Alpha im DEZ

Der Alpha-Verarbeiter im DEZ teilt Gedächtnis in 8-Kilobyte-Seiten. Nach einem TLB Fräulein, auf niedriger Stufe firmware Maschinencode (hier hat PALcode genannt), Spaziergänge ein baumstrukturierter 3-Niveaus-Seitentisch. Adressen werden wie folgt gebrochen: 21 Bit unbenutzt, 10 Bit, um das Wurzelniveau des Baums, 10 Bit mit einem Inhaltsverzeichnis zu versehen, um das mittlere Niveau des Baums, 10 Bit mit einem Inhaltsverzeichnis zu versehen, um das Blatt-Niveau des Baums, und 13 Bit mit einem Inhaltsverzeichnis zu versehen, die zur physischen modifikationsfreien Adresse durchgehen. Voll las Erlaubnis-Bit/schrieb/durchführte werden unterstützt.

MIPS

Die MIPS Architektur unterstützt 1 bis 64 Einträge im TLB. Die Zahl von TLB Einträgen ist an der Zentraleinheitskonfiguration vor der Synthese konfigurierbar. TLB Einträge sind Doppel-. Jeder TLB Zugang stellt eine virtuelle Seitenummer (VPN2) entweder zu einer von Zwei-Seite-Rahmenzahlen (PFN0 oder zu PFN1) abhängig vom am wenigsten bedeutenden Bit der virtuellen Adresse kartografisch dar, die nicht ein Teil der Seitenmaske ist. Dieses Bit und die Seitenmaske-Bit, werden im VPN2 nicht versorgt. Jeder TLB Zugang hat seine eigene Seitengröße, die jeder Wert von 1 Kilobyte bis 256 Mb in Vielfachen 4 sein kann. Jeder PFN in einem TLB Zugang hat ein Verstecken-Attribut, ein schmutziger und ein gültiger Status haben gebissen. Ein VPN2 hat ein globales Status-Bit, und ein OS hat Personalausweis zugeteilt, der an der virtuellen Adresse TLB Zugang-Match teilnimmt, wenn der globale Status gebissen hat, wird auf 0 gesetzt. Ein PFN versorgt die physische Adresse ohne die Seitenmaske-Bit.

Eine TLB-Nachfüllungsausnahme wird erzeugt, wenn es keine Einträge in den TLB gibt, die die kartografisch dargestellte virtuelle Adresse vergleichen. Eine TLB Ungültige Ausnahme wird erzeugt, wenn es ein Match gibt, aber der Zugang wird Invalide gekennzeichnet. Modifizierte Ausnahme eines TLB wird erzeugt, wenn es ein Match gibt, aber der schmutzige Status wird nicht gesetzt. Wenn eine TLB Ausnahme vorkommt, wenn sie eine TLB Ausnahme, eine doppelte Schuld TLB Ausnahme bearbeitet, wird sie seinem eigenen Ausnahme-Dressierer entsandt.

MIPS32 und MIPS32r2 unterstützen 32 Bit des virtuellen Adressraums und bis zu 36 Bit des physischen Adressraums.

MIPS64 unterstützt bis zu 64 Bit des virtuellen Adressraums und bis zu 59 Bit des physischen Adressraums.

Sonne 1

Die ursprüngliche Sonne 1 war ein Computer des einzelnen Ausschusses, der um Motorola 68000 Mikroprozessor gebaut ist, und hat 1982 eingeführt. Es hat die ursprüngliche Sonne 1 Speicherverwaltungseinheit eingeschlossen, die Adressumrechnung, Speicherschutz, das Speicherteilen und die Speicherzuteilung für vielfache Prozesse zur Verfügung gestellt hat, die auf der Zentraleinheit laufen. Der ganze Zugang der Zentraleinheit zum privaten RAM an Bord, dem Außenmehrfachbus-Gedächtnis, der Eingabe/Ausgabe an Bord und der Mehrfachbus-Eingabe/Ausgabe hat den MMU durchbohrt, wo sie übersetzt und auf die gleichförmige Mode geschützt wurden. Der MMU wurde in der Hardware auf dem Zentraleinheitsausschuss durchgeführt.

Der MMU hat aus einem Zusammenhang-Register, einer Segment-Karte und einer Seitenkarte bestanden. Virtuelle Adressen von der Zentraleinheit wurden in Zwischenadressen durch die Segment-Karte übersetzt, die der Reihe nach in physische Adressen durch die Seitenkarte übersetzt wurden. Die Seitengröße war 2 Kilobytes, und die Segment-Größe war 32 Kilobytes, die 16 Seiten pro Segment gegeben haben. Bis zu 16 Zusammenhänge konnten gleichzeitig kartografisch dargestellt werden. Der maximale logische Adressraum für einen Zusammenhang war 1024 Seiten oder 2 Mb. Die maximale physische Adresse, die gleichzeitig kartografisch dargestellt werden konnte, war auch 2 Mb.

Das Zusammenhang-Register war in einem stark mehrbeanspruchenden Betriebssystem wichtig, weil es der Zentraleinheit erlaubt hat, zwischen Prozessen umzuschalten, ohne die ganze Übersetzungszustandinformation umzuladen. Das 4-Bit-Zusammenhang-Register konnte zwischen 16 Abteilungen der Segment-Karte unter der Oberaufseher-Kontrolle umschalten, die 16 Zusammenhängen erlaubt hat, gleichzeitig kartografisch dargestellt zu werden. Jeder Zusammenhang hatte seinen eigenen virtuellen Adressraum. Das Teilen des virtuellen Adressraums und die Zwischenzusammenhang-Kommunikationen konnten durch das Schreiben derselben Werte in zum Segment oder den Seitenkarten von verschiedenen Zusammenhängen zur Verfügung gestellt werden. Zusätzliche Zusammenhänge konnten durch das Behandeln der Segment-Karte als ein geheimes Zusammenhang-Lager und das Ersetzen veralteter Zusammenhänge auf einer am wenigsten kürzlich verwendeten Basis behandelt werden.

Das Zusammenhang-Register hat keine Unterscheidung zwischen Benutzer- und Oberaufseher-Staaten gemacht; Unterbrechungen und Fallen haben Zusammenhänge nicht geschaltet, die verlangt haben, dass alle gültigen Unterbrechungsvektoren immer in der Seite 0 des Zusammenhangs, sowie dem gültigen Oberaufseher-Stapel kartografisch dargestellt werden.

PowerPC

In PowerPC G1, G2, G3 und G4, sind Seiten normalerweise 4 Kilobytes. Nach einem TLB Fräulein normaler PowerPC beginnt MMU zwei gleichzeitige lookups. Ein lookup versucht, die Adresse mit einem von 4 oder 8 Registern von Data Block Address Translation (DBAT), oder 4 oder 8 Befehlsblock-Adressumrechnungsregister (IBAT) als passend zu vergleichen. Die FLEDERMAUS-Register können geradlinige Klötze des Gedächtnisses so groß kartografisch darstellen wie 256 Mb, und werden normalerweise durch einen OS verwendet, um große Teile des Adressraums für den eigenen Gebrauch des OS Kerns kartografisch darzustellen. Wenn die FLEDERMAUS lookup erfolgreich ist, wird der andere lookup gehalten und ignoriert.

Der andere lookup, der nicht direkt durch alle Verarbeiter in dieser Familie unterstützt ist, ist über einen so genannten "umgekehrten Seitentisch", der als eine hashed Erweiterung außer Span des TLB handelt. Erstens werden die 4 ersten Bit der Adresse verwendet, um eines von 16 Segment-Registern auszuwählen. 24 Bit vom Segment-Register ersetzen jene 4 Bit, eine 52-Bit-Adresse erzeugend. Der Gebrauch von Segment-Registern erlaubt vielfachen Prozessen, dieselbe Hash-Tabelle zu teilen. Die 52-Bit-Adresse ist hashed, der dann als ein Index in den Tisch außer Span verwendet ist. Dort wird eine Gruppe von 8-Seite-Tabelleneinträgen für denjenigen gescannt, der zusammenpasst. Wenn niemand wegen übermäßiger Kuddelmuddel-Kollisionen zusammenpasst, versucht der Verarbeiter mit einer ein bisschen verschiedenen Kuddelmuddel-Funktion noch einmal. Wenn das auch scheitert, die Zentraleinheitsfallen in den OS (mit MMU hat unbrauchbar gemacht), so dass das Problem aufgelöst werden kann. Der OS muss einen Zugang von der Hash-Tabelle verwerfen, um Raum für einen neuen Zugang zu machen. Der OS kann den neuen Zugang von mehr - normalen baumähnlichen Seitentisch oder von pro erzeugen - Datenstrukturen kartografisch darzustellen, die wahrscheinlich langsamer und raumeffizienter sein werden. Unterstützung für nein - führt Kontrolle durch ist in den Segment-Registern, zu 256-Mb-Körnung führend.

Ein Hauptproblem mit diesem Design ist schlechte durch die Kuddelmuddel-Funktion verursachte Gegend des geheimen Lagers. Baumbasierte Designs vermeiden das durch das Stellen der Seitentabelleneinträge für angrenzende Seiten in angrenzenden Positionen. Ein Betriebssystem, das auf PowerPC läuft, kann die Größe der Hash-Tabelle minimieren, um dieses Problem zu reduzieren.

Es ist auch etwas langsam, um die Seitentabelleneinträge eines Prozesses zu entfernen; der OS kann vermeiden, Segment-Werte wiederzuverwenden, um zu verzögern, dem gegenüberzustehen, oder er kann sich dafür entscheiden, die Verschwendung des mit Hash-Tabellen pro Prozess vereinigten Gedächtnisses zu ertragen. G1 Chips suchen nach Seitentabelleneinträgen nicht, aber sie erzeugen wirklich das Kuddelmuddel mit der Erwartung, dass ein OS die Standardhash-Tabelle über die Software suchen wird. Der OS kann dem TLB schreiben. G2, G3 und frühe G4 Chips verwenden Hardware, um die Hash-Tabelle zu suchen. Die letzten Chips erlauben dem OS, jede Methode zu wählen. Auf Chips, die das fakultativ machen oder es überhaupt nicht unterstützen, kann der OS beschließen, einen baumbasierten Seitentisch exklusiv zu verwenden.

IA-32 / x86

Die x86 Architektur hat sich im Laufe einer langen Zeit entwickelt, während sie volle Softwarevereinbarkeit sogar für den OS-Code aufrechterhält. So ist der MMU mit vielen verschiedenen möglichen Betriebsweisen äußerst kompliziert. Die normale Operation der traditionellen 80386 Zentraleinheit und seiner Nachfolger (IA-32) wird hier beschrieben.

Die Zentraleinheit teilt in erster Linie Gedächtnis in 4-Kilobyte-Seiten. Segment-Register, die für die älteren 8088 und 80286 MMU Designs grundsätzlich sind, werden so viel wie möglich durch modernen OSes vermieden. Es gibt eine Hauptausnahme dazu: Der Zugang zu mit dem Faden spezifischen Daten für Anwendungen oder mit der Zentraleinheit spezifischen Daten für OS Kerne, der mit dem ausführlichen Gebrauch des FS und der GS Segment-Register getan wird. Der ganze Speicherzugang schließt ein Segment-Register ein, das gemäß dem Code gewählt ist, der wird durchführt. Das Segment-Register handelt als ein Index in einen Tisch, der einen zur virtuellen Adresse hinzuzufügenden Ausgleich zur Verfügung stellt. Außer, wenn mit FS oder GS, wie beschrieben, oben der OS sicherstellt, dass der Ausgleich Null sein wird. Nachdem der Ausgleich hinzugefügt wird, wird die Adresse maskiert, um nicht größer zu sein, als 32 Bit. Das Ergebnis kann über einen baumstrukturierten Seitentisch mit den Bit der Adresse nachgeschlagen werden, die wie folgt wird spaltet: 10 Bit für die Wurzel des Baums, 10 Bit für die Blätter des Baums und die 12 niedrigsten Bit, die zum Ergebnis direkt kopieren werden.

Geringe Revisionen des mit dem Pentium eingeführten MMU haben sehr große 4-Mb-Seiten durch das Auslassen des untersten Niveaus des Baums erlaubt. Geringe Revisionen des MMU, der mit dem Pentium Pro eingeführt ist, haben die Eigenschaft von Physical Address Extension (PAE) eingeführt, physische 36-Bit-Adressen über dreistufige Seitentische ermöglichend (mit 9+9+2 Bit für die drei Niveaus und die 12 niedrigsten Bit, die zum Ergebnis direkt kopieren werden; große Seiten werden nur 2 Mb in der Größe). Außerdem hat der Seitenattribut-Tisch Spezifizierung von cacheability durch das Aufblicken einiger hoher Bit in einem kleinen Tisch auf der Zentraleinheit erlaubt.

Nein - führen Unterstützung durch wurde ursprünglich nur auf einer Basis pro Segment zur Verfügung gestellt, es sehr ungeschickt machend, um zu verwenden. Neuere x86 Chips stellen proseitigen nein zur Verfügung - führen Bit in der PAE Weise durch. PaX ist eine Weise wettzueifern proseitigen führen Unterstützung über die Segmente, mit einem Leistungsverlust und dem Halbieren des verfügbaren Adressraums nichtdurch.

x86-64

x86-64 ist eine 64-Bit-Erweiterung von x86, der fast völlig Segmentation für das flache Speichermodell entfernt, das durch fast alle Betriebssysteme für die 386 oder neueren Verarbeiter verwendet ist. In der langen Weise werden alle Segment-Ausgleiche, abgesehen vom FS und den GS Segmenten ignoriert. Wenn verwendet, mit 4-Kilobyte-Seiten hat der Seitentabellenbaum vier Niveaus statt drei. Die virtuellen Adressen werden wie folgt zerteilt: 16 Bit unbenutzt, 9 Bit jeder für 4 Baumniveaus (ganz: 36 Bit), und die 12 niedrigsten zum Ergebnis direkt kopierten Bit. Mit 2-Mb-Seiten gibt es nur drei Niveaus des Seitentisches für insgesamt 27 Bit, die in der Paginierung und 21 Bit des Ausgleichs verwendet sind. Einige neuere Zentraleinheiten unterstützen auch eine 1-GB-Seite mit zwei Niveaus der Paginierung und 30 Bit des Ausgleichs. CPUID kann verwendet werden, um zu bestimmen, ob 1-GB-Seiten unterstützt werden. In allen drei Fällen sind die 16 höchsten Bit erforderlich, dem 48. Bit, oder in den anderen Wörtern gleich zu sein, die niedrigen 48 Bit sind zu den höheren Bit erweitertes Zeichen. Das wird getan, um eine zukünftige Vergrößerung der Addressable-Reihe zu erlauben, ohne umgekehrt Vereinbarkeit in Verlegenheit zu bringen.

In allen Niveaus des Seitentisches schließt der Seitentabellenzugang nein ein - führen Bit durch.

Unisys MCP Systeme (Burroughs B5000)

Tanenbaum u. a., kürzlich hat festgestellt, dass die B5000 (und Nachkomme-Systeme) keinen MMU haben. Um die durch einen MMU zur Verfügung gestellte Funktionalität zu verstehen, ist es aufschlussreich, um ein Gegenbeispiel eines Systems zu studieren, das diese Funktionalität durch andere Mittel erreicht.

Der B5000 war das erste kommerzielle System, um virtuelles Gedächtnis nach dem Atlas zu unterstützen. Es stellt die zwei Funktionen eines MMU unterschiedlich zur Verfügung. Erstens, von virtuellen Speicheradressen kartografisch darzustellen. Anstatt einen MMU zu brauchen, sind die MCP Systeme gestützter Deskriptor. Jeder zugeteilte Speicherblock wird ein Master-Deskriptor mit den Eigenschaften des Blocks, d. h., die Größe, Adresse, und ob Gegenwart im Gedächtnis gegeben. Wenn eine Bitte gemacht wird, auf den Block zuzugreifen, um zu lesen oder zu schreiben, überprüft die Hardware, dass seine Anwesenheit über die Anwesenheit (pbit) im Deskriptor gebissen hat.

Ein pbit 1 zeigt die Anwesenheit des Blocks an. In diesem Fall kann auf den Block über die physische Adresse im Deskriptor zugegriffen werden. Wenn der pbit Null ist, wird eine Unterbrechung für den MCP (Betriebssystem) erzeugt, um die Block-Gegenwart zu machen. Wenn das Adressfeld Null ist, ist das der erste Zugang zu diesem Block, und es wird (ein init pbit) zugeteilt. Wenn das Adressfeld Nichtnull ist, ist es eine Plattenadresse des Blocks, der vorher ausgerollt worden ist, so wird der Block von der Platte herbeigeholt und der pbit auf 1 und die physische Speicheradresse gesetzt wird, die aktualisiert ist, um zum Block im Gedächtnis (ein anderer pbit) hinzuweisen. Das macht Deskriptoren gleichwertig zu einem Seitentisch-Zugang in einem MMU System. Systemleistung kann durch die Zahl von pbits kontrolliert werden. Init pbits zeigen anfängliche Zuteilungen an, aber ein hohes Niveau anderen pbits zeigt an, dass das System verdreschen kann.

Bemerken Sie, dass die ganze Speicherzuteilung deshalb völlig automatisch ist (eine der Eigenschaften von modernen Systemen) und es keine Weise gibt, Blöcke außer diesem Mechanismus zuzuteilen. Es gibt keine solche Anrufe wie malloc oder dealloc, da Speicherblöcke auch automatisch verworfen werden. Das Schema ist auch faul, da ein Block nicht zugeteilt wird, bis darin wirklich Verweise angebracht wird. Wenn Gedächtnis fast voll ist, untersucht der MCP den Arbeitssatz, compaction versuchend (da das System segmentiert, nicht paginiert wird), deallocating Read-Only-Segmente (wie Codesegmente können die aus ihrer ursprünglichen Kopie wieder hergestellt werden), und als ein letzter Ausweg, schmutzige Datensegmente zur Platte auswalzend.

Zweitens, Schutz. Da alle Zugänge über den Deskriptor sind, kann die Hardware überprüfen, dass alle Zugänge innerhalb von Grenzen, und im Fall von einem Schreiben sind, dass der Prozess hat, schreiben Erlaubnis. Das MCP System ist von Natur aus sicher und hat so kein Bedürfnis nach einem MMU, dieses Niveau des Speicherschutzes zur Verfügung zu stellen. Deskriptoren werden nur zu Benutzerprozessen gelesen und können nur durch das System (Hardware oder MCP) aktualisiert werden. (Deskriptoren haben ein Anhängsel 5, und sonderbar markierte Wörter werden gelesen nur - Codewörter haben ein Anhängsel 3.)

Blöcke können zwischen Prozessen über Kopie-Deskriptoren im Prozess-Stapel - so geteilt werden einige Prozesse können haben schreiben Erlaubnis, wohingegen andere nicht. Ein Codesegment wird nur gelesen, so einspringend und geteiltes zwischen Prozessen. Kopie-Deskriptoren enthalten ein 20-Bit-Adressfeld das Geben des Index des Master-Deskriptors in der Master-Deskriptor-Reihe. Das führt auch einen sehr effizienten und sicheren IPC Mechanismus durch. Blöcke können seitdem nur die Master-Deskriptor-Bedürfnis-Aktualisierung leicht umgesiedelt werden, wenn sich ein Status eines Blocks ändert.

Der einzige weitere Aspekt ist Leistung - tun MMU- oder non-MMU-based Systeme stellen bessere Leistung zur Verfügung? MCP Systeme können oben auf der Standardhardware durchgeführt werden, die wirklich einen MMU (z.B, ein Standard-PC) hat. Selbst wenn die Systemdurchführung den MMU irgendwie verwendet, wird das überhaupt am MCP Niveau nicht sichtbar sein.

Siehe auch


Eric Bana / Puppenhafter Zoom
Impressum & Datenschutz