Speicherverwaltungseinheit
A Speicherverwaltungseinheit (MMU), manchmal genannt PAGED MEMORE Verwaltungseinheit (PMMU),[1] ist ein Computerhardware Einheit mit allen Erinnerung Referenzen haben sich selbst durchgesetzt und hauptsächlich die Übersetzung von durchgeführt Virtuelle Speicheradressen zu physische Adressen.
Eine MMU führt effektiv durch virtueller Speicher Management, gleichzeitig umgehen Gedächtnisschutz, Zwischenspeicher Kontrolle, Bus Schiedsverfahren und in einfacheren Computerarchitekturen (insbesondere in 8 Bit Systeme),, Bankwechsel.
Überblick
Moderne MMUs teilen typischerweise die virtuelle Adressraum (Der Bereich der Adressen, die vom Prozessor verwendet werden) in Seiten, jeweils eine Größe, die eine Kraft von 2 ist, normalerweise einige Kilobytes, aber sie mögen viel größer sein. Die unteren Teile der Adresse (der Offset innerhalb einer Seite) bleiben unverändert. Die oberen Adressbits sind die virtuellen Seitenzahlen.[3]
Page Table -Einträge
Die meisten MMUs verwenden eine In-Memory-Tabelle mit Elementen, die als "als" bezeichnet werden "Seitentabelle", enthält einen"Page Table -Eintrag"(Pte) pro Seite[zweifelhaft ], um virtuelle Seitenzahlen auf physische Seitenzahlen im Hauptspeicher zuzuordnen. Ein assoziativer Cache von PTES wird als a genannt Übersetzungs -Lookaside -Puffer (TLB) und wird verwendet, um die Notwendigkeit zu vermeiden, jedes Mal auf das Hauptspeicher zugreifen zu können, wenn eine virtuelle Adresse zugeordnet wird. Andere MMUs können eine private Reihe von Speicher haben[4] oder Register, die eine Reihe von Seitenstabeinträgen enthalten. Die physische Seitennummer wird mit dem Seitenversatz kombiniert, um die vollständige physische Adresse anzugeben.[3]
Eine PTE kann auch Informationen darüber enthalten, ob die Seite auf (die "geschrieben wurde"schmutziges Stück"), als es zuletzt verwendet wurde (das" Zugriff auf Bit "für a zuletzt benutzt (LRU) Seitenersatzalgorithmus), welche Art von Prozessen (Benutzermodus oder Supervisor -Modus) kann es lesen und schreiben und ob es sein sollte zwischengespeichert.
Manchmal verbietet ein PTE den Zugriff auf eine virtuelle Seite, vielleicht weil kein physischer Fall ist Arbeitsspeicher (RAM) wurde dieser virtuellen Seite zugeteilt. In diesem Fall signalisiert die MMU a Seitenfehler zur CPU. Das Betriebssystem . Wenn kein RAM kostenlos ist, kann es erforderlich sein, eine vorhandene Seite (als "Opfer" bezeichnet) zu wählen, indem Sie einen Ersatz verwenden Algorithmusund speichern Sie es auf der Festplatte (ein Prozess namens "Paging"). Mit etwas MMUs kann es auch einen Mangel an PTEs geben. In diesem Fall muss das Betriebssystem einen für die neue Mapping freigeben.[3]
Die MMU kann auch illegale Zugriffsfehlerbedingungen erzeugen oder Ungültige Seitenfehler bei illegalem oder nicht existierendem Speicherzugriff, der zu dem führen, was zu Segmentierungsfehler oder Busfehler Bedingungen, wenn sie vom Betriebssystem behandelt werden.
Vorteile
In einigen Fällen kann ein Seitenfehler a anzeigen Softwarefehler, was durch die Verwendung verhindert werden kann Gedächtnisschutz Als einer der wichtigsten Vorteile einer MMU: Ein Betriebssystem kann es verwenden, um vor fehlerhaften Programmen zu schützen, indem er den Zugriff auf den Speicher nicht zulässt, auf den ein bestimmtes Programm keinen Zugriff haben sollte. In der Regel weist ein Betriebssystem jedem Programm seinen eigenen virtuellen Adressraum zu.[3]
Eine MMU mildert auch das Problem von Zersplitterung des Gedächtnisses. Nachdem die Speicherblöcke zugewiesen und befreit wurden, kann das freie Gedächtnis fragmentiert (diskontinuierlich), so dass der größte zusammenhängende Block des freien Speichers viel kleiner als der Gesamtbetrag sein kann. Mit virtuellem Speicher kann ein zusammenhängender Bereich virtueller Adressen auf mehrere nicht zusammenhängende physische Speicherblöcke abgebildet werden. Diese nicht übereinstimmende Zuordnung ist einer der Vorteile von Paging.[3]
In einigen frühen Mikroprozessor Entwürfe, Speicherverwaltung wurde von einem separaten durchgeführt Integrierter Schaltkreis so wie die VLSI -Technologie VI475 (1986), die Motorola 68851 (1984) mit dem verwendet Motorola 68020 CPU in der Macintosh II, oder der Z8010[5] und Z8015 (1985)[6][7] verwendet mit dem Zilog Z8000 Verarbeitungsfamilie. Später Mikroprozessoren (wie die Motorola 68030 und die Zilog Z280) platzierte die MMU zusammen mit der CPU auf demselben integrierten Schaltkreis, ebenso wie die Intel 80286 und später x86 Mikroprozessoren.
Während sich dieser Artikel auf moderne MMUs konzentriert, die üblicherweise auf Seiten basieren Segmentierung. Diese sind gelegentlich auch auf modernen Architekturen vorhanden. Das x86 Architektur bereitete Segmentierung eher als Paging in der 80286und bietet sowohl Paging als auch Segmentierung in der 80386 und spätere Prozessoren (obwohl die Verwendung der Segmentierung im 64-Bit-Betrieb nicht verfügbar ist).
Beispiele
Die meisten modernen Systeme teilen den Speicher in Seiten ein, die sind 4-64 KB in Größe, oft mit der Fähigkeit, so genannte riesige Seiten von zu verwenden 2 Mb oder 1 GB Größe (oft sind beide Varianten möglich). Seitenübersetzungen werden in a zwischengespeichert Übersetzungs -Lookaside -Puffer (TLB). Einige Systeme, hauptsächlich älter RISC Entwürfe, fangen in das Betriebssystem, wenn eine Seitenübersetzung in der TLB nicht gefunden wird. Die meisten Systeme verwenden einen Hardware-basierten Baumwanderer. Die meisten Systeme ermöglichen es der MMU, deaktiviert zu werden, einige deaktivieren die MMU, wenn sie in den OS -Code fangen.
Vax
Vax Seiten sind 512 Bytes, was sehr klein ist. Ein Betriebssystem kann mehrere Seiten behandeln, als ob es sich um eine einzelne größere Seite handelt. Zum Beispiel, Linux auf Vax -Gruppen acht Seiten zusammen. Somit wird das System als haben 4 kb Seiten. Der VAX unterteilt den Speicher in vier Fixierregionen, jeweils 1 Gb in Größe. Sie sind:
- P0 Raum
- Wird für den allgemeinen PRO-Prozess-Speicher wie Haufen verwendet.
- P1 Raum
- (Oder Kontrollraum), der ebenfalls pro Prozess ist und in der Regel für Supervisor, Executive, verwendet wird, Kernel, Benutzer Stapel und andere vom Betriebssystem verwaltete Kontrollstrukturen pro Prozess.
- S0 Raum
- (Oder Systemraum), der für alle Prozesse global ist und Betriebssystemcode und Daten speichert, ob ausgelegt oder nicht, einschließlich Pagetables.
- S1 Raum
- Das ist ungenutzt und "reserviert Digital".
Seitentabellen sind große lineare Arrays. Normalerweise wäre dies sehr verschwenderisch, wenn Adressen an beiden Enden des möglichen Bereichs verwendet werden, aber die Seitentabelle für Anwendungen ist selbst im PAGE -Speicher des Kernels gespeichert. Somit gibt es effektiv eine zweistufige Baum, sodass Anwendungen ein spärliches Speicherlayout haben, ohne viel Platz für nicht verwendete Seitenstabereinträge zu verschwenden. Die VAX MMU ist bemerkenswert, dass er ein Zugriff auf Bit fehlt. OSS, die Paging implementieren, müssen einen Weg finden, um das aufgerufene Bit zu emulieren, wenn sie effizient arbeiten sollen. In der Regel werden das Betriebssystem in regelmäßigen Abständen die Seiten abgeleitet, sodass nicht vorgefertigte Fehler verwendet werden können, um das Betriebssystem ein Zugriff auf Bit festlegen zu lassen.
ARM
Armarchitektur-Basierte Anwendungsprozessoren implementieren eine MMU, die durch die Virtual Memory System Architecture von ARM definiert ist. Die aktuelle Architektur definiert Ptes zum Beschreiben 4 kb und 64 kb Seiten, 1 MB Abschnitte und 16 MB Superabschnitte; Legacy -Versionen definierten auch a 1 kb winzige Seite. Arm verwendet eine zweistufige Seitentabelle, wenn verwendet 4 kb und 64 kb Seiten oder nur eine einstufige Seitentabelle für 1 MB Abschnitte und 16 MB Abschnitte.
TLB -Updates werden automatisch per Seitentabellen -Wanderhardware durchgeführt. PTEs umfassen die Berechtigung zur Lese-/Schreibzugriff auf der Grundlage von Privilegien, Informationen zur Präsentabilität, eine Nx bitund ein nicht sicheres Stück.[8]
IBM System/360 Modell 67, IBM System/370 und Nachfolger
Das IBM System/360 Modell 67, die August 1965 eingeführt wurde, enthielt eine MMU namens Dynamic Adress Translation (DAT).[9][10] Es hat das ungewöhnliche Merkmal des Speicherns auf Zugriffe und schmutzige Teile außerhalb der Seitentabelle (zusammen mit dem vier Bit Schutzschlüssel für alle S/360 -Prozessoren). Sie beziehen sich eher auf den physischen Speicher als auf virtuelles Speicher und werden durch Sonderanweisungen zugegriffen.[10] Dies reduziert den Overhead für das Betriebssystem, was ansonsten zugegriffen und schmutzige Bits von den Seitentabellen zu einer physikalisch orientierten Datenstruktur ausbreiten müsste. Das macht Virtualisierung auf OS-Ebene, später gerufen Paravirtualisierung, Einfacher.
Ab August 1972 die IBM System/370 hat eine ähnliche MMU, obwohl es zunächst nur einen 24-Bit-virtuellen Adressraum als den 32-Bit-virtuellen Adressraum des Systems/360 Modell 67 unterstützte. Es wird auch die zugegriffenen und schmutzigen Bits außerhalb der Seitentabelle gespeichert. Anfang 1983 erweiterte das System/370-XA-Architektur den virtuellen Adressraum auf 31 Bits und im Jahr 2000 die 64-Bit Z/Architektur wurde eingeführt, wobei der Adressraum auf 64 Bit erweitert wurde; Diese speichern weiterhin die aufgerufenen und schmutzigen Teile außerhalb des Seitentisches.
Dec Alpha
Das Dec Alpha Prozessor unterteilt den Speicher in 8 kb Seiten. Nach einem TLB-Miss, niedriger Ebene Firmware Maschinencode (hier genannt Palcode) Geht eine dreistrukturierte Seitenstabisch. Die Adressen werden wie folgt abgebaut: 21 Bit unbenutzt, 10 Bit, um die Wurzelebene des Baumes zu indizieren, 10 Bit, um die mittlere Ebene des Baumes zu indizieren, 10 Bit, um die Blattpegel des Baumes zu indizieren, und 13 Bit, die durchlaufen an die physische Adresse ohne Änderung. Vollständige Lese-/Schreib-/Ausführen von Berechtigungsbits werden unterstützt.
MIPS
Das MIPS -Architektur Unterstützt ein bis 64 Einträge in der TLB. Die Anzahl der TLB -Einträge ist vor der Synthese in der CPU -Konfiguration konfigurierbar. TLB -Einträge sind doppelt. Jeder TLB -Eintrag bildet eine virtuelle Seitennummer (VPN2) entweder auf eine von zwei Seitenrahmennummern (PFN0 oder PFN1) ab, abhängig vom am wenigsten signifikanten Bit der virtuellen Adresse, die nicht Teil der Seite ist Maske. Dieses Bit und die Seitenmaskenbits werden im VPN2 nicht gespeichert. Jeder TLB -Eintrag hat eine eigene Seitengröße, die einen beliebigen Wert haben kann 1 kb zu 256 MB in mehreren vier. Jeder PFN in einem TLB -Eintrag verfügt über ein Caching -Attribut, ein schmutziges und gültiges Statusbit. Ein VPN2 verfügt über ein globales Statusbit und ein Betriebssystem zugewiesene ID, das an der TLB -Eintragsübereinstimmung der virtuellen Adresse teilnimmt, wenn das globale Statusbit auf Null gesetzt ist. Ein PFN speichert die physische Adresse ohne die Seitenmaskenbits.
Eine TLB -Nachfüllausnahme wird generiert, wenn in der TLB keine Einträge vorhanden sind, die der zugeordneten virtuellen Adresse entsprechen. Eine TLB -ungültige Ausnahme wird bei einer Übereinstimmung generiert, der Eintrag ist jedoch ungültig gekennzeichnet. Eine TLB -modifizierte Ausnahme wird generiert, wenn eine Speicheranweisung auf eine zugeordnete Adresse verweist und der schmutzige Status des Matching -Eintrags nicht festgelegt ist. Wenn bei der Verarbeitung einer TLB -Ausnahme eine TLB -Ausnahme auftritt, wird eine Doppelfehler -TLB Ausnahmebehandler.
MIPS32 und MIPS32R2 Unterstützung 32 Bit virtueller Adressraum und bis zu 36 Bit physischer Adressraum. MIPS64 unterstützt bis zu 64 Teile virtueller Adressraum und bis zu 59 Bits physischer Adressraum.
Sonne 1
Das Original Sonne 1 ist ein Single-Board-Computer gebaut um die Motorola 68000 Mikroprozessor und 1982 eingeführt. Es enthält die ursprüngliche Sun 1 -Speicherverwaltungseinheit, die Adressübersetzung, Speicherschutz, Speicherfreigabe und Speicherzuweisung für mehrere auf der CPU ausgeführte Prozesse bietet. Der gesamte Zugang der CPU zu privatem RAM an Bord, extern, Multibus Speicher, an Bord I/o und der Multibus -E/O läuft durch die MMU, wo Adressübersetzung und -schutz auf einheitliche Weise durchgeführt werden. Die MMU ist in Hardware auf der CPU -Karte implementiert.
Die MMU besteht aus einem Kontextregister, a Segment Karte und eine Seitenkarte. Virtuelle Adressen der CPU werden von der Segmentkarte in Zwischenadressen übersetzt, die wiederum von der Seitenkarte in physikalische Adressen übersetzt werden. Die Seitengröße ist 2 kb und die Segmentgröße ist 32 kb das gibt 16 Seiten per Segment. Bis zu 16 Kontexte können gleichzeitig zugeordnet werden. Der maximale logische Adressraum für einen Kontext ist 1024 Seiten oder 2 MB. Die maximale physische Adresse, die gleichzeitig zugeordnet werden kann, ist auch 2 MB.
Das Kontextregister ist in einem Multitasking -Betriebssystem wichtig, da die CPU zwischen den Prozessen wechseln kann, ohne alle Informationen zur Übersetzungsstatus neu zu laden. Das 4-Bit-Kontextregister kann zwischen 16 Abschnitten der Segmentkarte unter Supervisor Control wechseln, wodurch 16 Kontexte gleichzeitig zugeordnet werden können. Jeder Kontext hat seinen eigenen virtuellen Adressraum. Die Freigabe virtueller Adressraum und Interkontextkommunikation kann durch das Schreiben der gleichen Werte in das Segment oder die Seitenkarten verschiedener Kontexte bereitgestellt werden. Zusätzliche Kontexte können behandelt werden, indem die Segmentkarte als Kontext-Cache behandelt und veraltete Kontexte auf einer am wenigsten verwendeten Basis ersetzt werden.
Das Kontextregister unterscheidet keinen Unterschied zwischen Benutzer- und Vorgesetzten. Interrupts und Fallen wechseln die Kontexte nicht, wodurch alle gültigen Interrupt -Vektoren in Seite 0 des Kontextes sowie im gültigen Supervisor -Stack immer zugeordnet werden.[11]
Powerpc
Im Powerpc G1-, G2-, G3- und G4 -Seiten sind normalerweise 4 kb. Nach einem TLB -Fehlschlag beginnt die Standard -Powerpc -MMU zwei gleichzeitige Lookups. Eine Suche versucht, die Adresse mit einer von vier oder acht Datenblockadressen -Übersetzungsregistern (DBAT) oder vier oder acht Anweisungsblockadressen -Übersetzungsregistern (IBAT) abzustimmen. Die Fledermausregister können lineare Speicherbrocken so groß wie groß wie 256 MB, und werden normalerweise von einem Betriebssystem verwendet, um große Teile des Adressraums für die eigene Verwendung des OS -Kernels abzubilden. Wenn die Fledermaus -Lookup erfolgreich ist, wird die andere Suche angehalten und ignoriert.
Die andere Suche, die nicht direkt von allen Prozessoren in dieser Familie unterstützt wird, erfolgt über eine sogenannte. "Umgekehrte Seitentabelle, "die als Hashed-Off-Chip-Erweiterung der TLB fungiert. Zuerst werden die oberen vier Bits der Adresse verwendet, um eine von 16 auszuwählen Segment Register. Dann ersetzen Sie 24 Bit aus dem Segmentregister diese vier Bits und erzeugen eine 52-Bit-Adresse. Durch die Verwendung von Segmentregistern können mehrere Prozesse dasselbe teilen Hash-tabelle.
Die 52-Bit-Adresse wird gehasht und dann als Index in der Off-Chip-Tabelle verwendet. Dort wird eine Gruppe von achtseitigen Tischeinträgen für eine gescannt, die übereinstimmt. Wenn keiner zu übermäßigem Übereinstimmung passt Hash -KollisionenDer Prozessor versucht wieder mit einem etwas anderen Hash-Funktion. Wenn dies auch fehlschlägt, fällt die CPU in das Betriebssystem (mit MMU deaktiviert) ein, damit das Problem behoben werden kann. Das Betriebssystem muss einen Eintrag aus der Hash -Tabelle verwerfen, um Platz für einen neuen Eintrag zu schaffen. Das Betriebssystem kann den neuen Eintrag aus einer ormalen baumartigen Seitentabelle oder aus per-Mapping-Datenstrukturen erzeugen, die wahrscheinlich langsamer und platzwirksamer sind. Unterstützung für Nichts Die Kontrolle liegt in den Segmentregistern und führt zu 256 MB Die Granularität.
Ein großes Problem bei diesem Design ist schlecht Cache -Lokalität verursacht durch die Hash -Funktion. Bäume-basierte Designs vermeiden dies, indem die Seitentabelleneinträge für benachbarte Seiten an benachbarten Stellen platziert werden. Ein Betriebssystem, das auf dem PowerPC ausgeführt wird, kann die Größe der Hash -Tabelle minimieren, um dieses Problem zu verringern.
Es ist auch etwas langsam zu entfernen, um die Seitentabelleneinträge eines Prozesses zu entfernen. Das Betriebssystem kann vermeiden, dass die Segmentwerte wiederverwendet werden, um diese gegenüberzugeben, oder es kann sich dafür entscheiden, die mit pro-prozess-Hash-Tabellen verbundene Speicherverschwendung zu erleiden. G1 -Chips suchen nicht nach Seiteneinträgen, aber sie generieren den Hash, mit der Erwartung, dass ein Betriebssystem die Standard -Hash -Tabelle über Software durchsucht. Das Betriebssystem kann an die TLB schreiben. G2, G3 und frühe G4 -Chips verwenden Hardware, um die Hash -Tabelle zu durchsuchen. Mit den neuesten Chips kann das Betriebssystem eine der beiden Methoden auswählen. Bei Chips, die dies optional machen oder es überhaupt nicht unterstützen, kann das Betriebssystem ausschließlich eine baumbasierte Seitentabelle verwenden.
IA-32 / x86
Das x86 Die Architektur hat sich über eine sehr lange Zeit entwickelt und gleichzeitig die vollständige Softwarekompatibilität beibehalten, selbst für OS -Code. Somit ist die MMU extrem komplex, mit vielen verschiedenen möglichen Betriebsmodi. Normaler Betrieb des traditionellen Betriebs 80386 CPU und seine Nachfolger (IA-32) wird hier beschrieben.
Die CPU unterteilt das Gedächtnis in erster Linie in 4 kb Seiten. Segmentregister, grundlegend für die Älteren 8088 und 80286 MMU -Designs werden in modernen Osen nicht verwendet, mit einer großen Ausnahme: Zugang zu Faden-Spezifische Daten für Anwendungen oder CPU-spezifische Daten für OS-Kernel, die mit explizitem Einsatz der FS- und GS-Segmentregister durchgeführt werden. Der gesamte Speicherzugriff beinhaltet ein Segmentregister, das gemäß dem ausführenden Code ausgewählt wurde. Das Segmentregister fungiert als Index in eine Tabelle, in der ein Offset für die virtuelle Adresse hinzugefügt wird. Außer bei Verwendung von FS oder GS stellt das Betriebssystem sicher, dass der Offset Null ist.
Nach dem Hinzufügen des Versatzes wird die Adresse maskiert, um nicht größer als 32 Bit zu sein. Das Ergebnis kann über eine baumstrukturierte Seitentabelle nachgeschlagen werden, wobei die Bits der Adresse wie folgt aufgeteilt werden: 10 Bit für den Zweig des Baumes, 10 Bit für die Blätter des Asts und die 12 niedrigsten Bits sind direkt kopiert in das Ergebnis. Einige Betriebssysteme, wie z. OpenBSD mit W^x Funktion und Linux mit dem Exec -Schild oder Pax Patches können auch die Länge des Codesegments einschränken, wie im CS -Register angegeben, um die Ausführung des Codes in veränderbaren Regionen des Adressraums zu verringern.
Kleinere Überarbeitungen der MMU mit dem eingeführt Pentium haben sehr groß zugelassen 4 MB Seiten durch Überspringen der unteren Ebene des Baumes (dies lässt 10 Bits für die Indexierung der ersten Seitenhierarchie auf, wobei die verbleibenden 10+12 -Bit direkt in das Ergebnis kopiert werden). Kleinere Überarbeitungen der MMU mit dem eingeführt Pentium Pro stellte die vor Erweiterung der physischen Adresse (PAE) Feature und aktivieren 36-Bit-physische Adressen mit 2+9+9 Bit für dreistufige Seitentabellen und 12 niedrigste Bits, die direkt in das Ergebnis kopiert werden. Große Seiten (2 MB) sind auch erhältlich, indem die untere Ebene des Baums überspringt (was zu 2+9 Bit für zweistufige Tabellenhierarchie und die verbleibenden 9+12 niedrigsten Bits direkt kopiert). zusätzlich Page Attributtabelle Erlaubte Spezifikation der Bilanzierbarkeit, indem Sie ein paar hohe Teile in einer kleinen On-CPU-Tabelle nachschlagen.
Nichts Die Unterstützung wurde ursprünglich nur auf der Basis pro Segment bereitgestellt, was es sehr unangenehm macht. Neuere X86-Chips bieten im PAE-Modus ein Bit pro Seiten ohne Execute. Das W^x, Exec -Schild, und Pax Die oben beschriebenen Mechanismen emulieren Sie pro PAGE nicht exezute Unterstützung auf Maschinen X86-Prozessoren, denen das NX-Bit fehlt, indem Sie die Länge des Codessegments mit einem Leistungsverlust und einer Verringerung des verfügbaren Adressraums festlegen.
x86-64
x86-64 ist eine 64-Bit-Erweiterung von x86, die die Segmentierung fast vollständig zugunsten des Modellmodell für Flachspeicher Wird von fast allen Betriebssystemen für die 386 oder neueren Prozessoren verwendet. Im langen Modus werden alle Segment -Offsets mit Ausnahme der FS- und GS -Segmente ignoriert. Wenn mit verwendet 4 kb Seiten, der Seitentabellenbaum hat vier Ebenen anstelle von drei.
Die virtuellen Adressen sind wie folgt geteilt: 16 Bits nicht verwendet, jeweils neun Bits für vier Baumstufen (für insgesamt 36 Bit) und die 12 niedrigsten Bits direkt in das Ergebnis kopiert. Mit 2 MB Seiten, es gibt nur drei Pagentabellenstufen für insgesamt 27 Bit, die in Paging und 21 Bit Offset verwendet werden. Einige neuere CPUs unterstützen auch a 1 GB Seite mit zwei Stufen an Paging und 30 Bit Offset.[12]
CPUID kann verwendet werden, um festzustellen, ob 1 GB Seiten werden unterstützt. In allen drei Fällen die 16 höchste Bits müssen gleich dem 48. Bit oder mit anderen Worten das niedrige sein 48 Bit sind Zeichen erweitert zu den höheren Teilen. Dies geschieht, um eine zukünftige Erweiterung des adressierbaren Bereichs zu ermöglichen, ohne die Kompatibilität rückwärts zu beeinträchtigen. In allen Ebenen der Seitentabelle enthält der Eintrag von Seitentabellen a Nichts bisschen.
UNISYS MCP Systems (Burroughs B5000)
Das Burroughs B5000 Ab 1961 war das erste kommerzielle System, das den virtuellen Speicher unterstützte (nach dem Atlas), obwohl es keine MMU hat [13] Es bietet die beiden Funktionen einer MMU - virtuelle Speicheradressen und des Speicherschutzes - einen anderen architektonischen Ansatz.
Erstens, bei der Zuordnung virtueller Speicheradressen, anstatt eine MMU zu benötigen, die MCP Systeme sind Deskriptor-basierend. Jeder zugewiesene Speicherblock erhält einen Master -Deskriptor mit den Eigenschaften des Blocks (d. H. Die Größe, Adresse und ob im Speicher vorhanden). Wenn eine Anfrage zum Zugriff auf den Block zum Lesen oder Schreiben gestellt wird, überprüft die Hardware ihre Anwesenheit über das Vorhandensein Bit (PBIT) im Deskriptor.
Ein Pbit von 1 zeigt das Vorhandensein des Blocks an. In diesem Fall kann der Block über die physische Adresse im Deskriptor zugegriffen werden. Wenn der PBIT Null ist, wird für das MCP (Betriebssystem) ein Interrupt erzeugt, um den Block vorhanden zu machen. Wenn das Adressfeld Null ist, ist dies der erste Zugriff auf diesen Block und es wird zugewiesen (ein Init -Pbit). Wenn das Adressfeld ungleich Null ist, handelt es sich um eine Festplattenadresse des Blocks, die zuvor eingeführt wurde, so im Speicher (ein anderer Pbit). Dadurch entspricht Deskriptoren einem Seiteneintrag in einem MMU-System. Die Systemleistung kann über die Anzahl der Pbits überwacht werden. Init Pbits zeigen anfängliche Zuordnungen an, aber ein hohes Maß an anderen Pbits zeigt an, dass das System möglicherweise verprügeln kann.
Die gesamte Speicherzuweisung ist daher vollständig automatisch (eines der Merkmale moderner Systeme[14]) Und es gibt keine Möglichkeit, andere Blöcke als diesen Mechanismus zuzuweisen. Es gibt keine Anrufe wie Malloc oder OVERLOC, da Speicherblöcke auch automatisch verworfen werden. Das Schema ist auch faulDa ein Block erst zugewiesen wird, bis er tatsächlich verwiesen wird. Wenn der Speicher nahezu voll ist, untersucht der MCP den Arbeitssatz und versuchte die Verdichtung (da das System segmentiert, nicht ausgeliefert ist), mit schreibgeschützten Segmenten (z. Letzter Ausweg, rollen schmutzige Datensegmente auf die Festplatte.
Eine andere Möglichkeit, wie der B5000 eine Funktion einer MMU bietet, ist im Schutz. Da alle Zugriffe über den Deskriptor erfolgen, kann die Hardware prüfen, ob alle Zugriffe innerhalb von Grenzen liegen und im Falle eines Schreibens die Schreibberechtigung verfügt. Das MCP -System ist von Natur aus sicher und benötigt daher keine MMU, um diesen Speicherschutz zu bieten. Deskriptoren werden nur in Benutzerprozesse gelesen und dürfen nur vom System (Hardware oder MCP) aktualisiert werden. (Wörter, deren Tag eine ungerade Zahl ist, sind nur schreibgeschützt; Deskriptoren haben ein Tag von 5 und Codewörter haben ein Tag von 3.)
Blöcke können zwischen den Prozessen über Copy -Deskriptoren im Prozessstapel geteilt werden. Somit können einige Prozesse eine Schreibberechtigung haben, während andere dies nicht tun. Ein Codesegment wird nur gelesen, somit wieder eingetragen und zwischen den Prozessen geteilt. Kopierdeskriptoren enthalten ein 20-Bit-Adressfeld, das den Index des Masterdeskriptors im Master-Deskriptor-Array enthält. Dies implementiert auch einen sehr effizienten und sicheren IPC -Mechanismus. Blöcke können leicht verschoben werden, da nur der Master -Deskriptor aktualisiert werden muss, wenn sich der Status eines Blocks ändert.
Der einzige andere Aspekt ist die Leistung. MMU-basierte oder nicht-MMU-basierte Systeme bieten eine bessere Leistung? MCP -Systeme können auf Standardhardware mit einer MMU (z. B. einem Standard -PC) implementiert werden. Selbst wenn die Systemimplementierung die MMU in irgendeiner Weise verwendet, ist dies auf MCP -Ebene überhaupt nicht sichtbar.
Siehe auch
Verweise
- ^ Speicherverwaltungseinheit Bei der Kostenloses Online-Wörterbuch des Computers
- ^ Tanenbaum, Andrew S. (2009). Moderne Betriebssysteme. Upper Saddle River (New Jersey): Prentice-Hall. ISBN 978-0-13-600663-3.
- ^ a b c d e Frank Uyeda (2009). "Vorlesung 7: Speicherverwaltung" (PDF). CSE 120: Grundsätze der Betriebssysteme. UC San Diego. Abgerufen 2013-12-04.
- ^ Spectra 70 70-46 Prozessorhandbuch (PDF). RCA. März 1968. p. 4. Abgerufen 15. August, 2013.
- ^ "Z8010 Z8000 MMU Speicherverwaltungseinheit Produktspezifikation" (PDF). Zilog. April 1985.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "1983/84 Datenbuch" (PDF). Zilog: 215–234. Abgerufen 2021-04-27.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ Schmidt, Stephen (April 1983). "Virtueller Speicher für Mikrocomputer". Byte. Vol. 8, nein. 4. S. 234–235.
- ^ "Cortex-A8 Technisches Referenzhandbuch" (PDF). Infoventer.arm.com. Abgerufen 2017-05-03.
- ^ "IBM Archives: System/360 Daten und Eigenschaften". 03.ibm.com. Abgerufen 2017-05-03.
- ^ a b "IBM System/360 Modell 67 Funktionseigenschaften, dritte Ausgabe" (PDF). Februar 1972. GA27-2719-2. Abgerufen 29. Oktober, 2021.
- ^ Sun 68000 Board User's Manual, Sun Microsystems, Inc, Februar 1983, Revision B
- ^ "AMD64 Architekturprogrammierer Handbuch Band 2: Systemprogrammierung" (PDF). März 2017. Abgerufen 2017-12-05.
- ^ Tanenbaum, Andrew S.; Herder, Jorrit N.; Bos, Herbert (Mai 2006). "Können wir Betriebssysteme zuverlässig und sicher machen?". Computer. 39 (5): 44–51. Citeseerx 10.1.1.112.3028. doi:10.1109/mc.2006.156. S2CID 99779.
- ^ Daniel H. H. Ingalls (August 1981). "Designprinzipien hinter SmallTalk". Byte Magazine. Archiviert von das Original am 2007-09-27.