Wie sind die base-Register, - limit-Register und relocation-Register?
Mein Verständnis in address translation-Prozess in der MMU(memory management unit)
-> logische Adresse : generiert durch die cpu.Programmierer Sorge mit dieser Adresse.
-> virtuelle Adresse : befinden sich in der Festplatte , wie eine Seiten.
-> physikalische Adresse : befinden sich im RAM. Es ist die eigentliche Adresse.
1: cpu erzeugen, die logische Adresse und senden Sie es an den MMU.
2: MMU übersetzen der logischen Adresse in die virtuelle Adresse, dann übersetzen Sie die physikalische Adresse und senden Sie die physische Adresse im RAM.
3: immer wenn der RAM voll ist , wird die Seite verwendet wird und nicht schnell wieder an die Festplatte , den Speicher zu den anderen Seiten(Prozesse).
meine Fragen sind :
1), wobei der Wert von Relocation register Hinzugefügt wird?
2), die sich entscheiden, den Wert der Umzug Anmelden?
3) was ist zu tun mit der Basis zu registrieren und Limit-register , wie es zu benutzen?
4), wo die logische Adresse geht?
Wenn jeder Körper beantworten kann , Es wäre dankbar.
Es wird gebeten, dass , lassen Sie mich wissen, es ein Missverständnis in diesem Thema.
-Dank
InformationsquelleAutor Munjal Upadhyay | 2012-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann Ihnen sagen, wie das funktioniert auf x86.
Alle Programme in nicht-64-bit-Modus betreiben mit Adressen kombiniert zwei Elemente:
segment selector
(für die Kürze, "selector" wird oft weggelassen, im text, und dass kann verwirrend sein) undoffset
. Dieseselector:offset
- pair-Mädchen namenslogical address
.Den Selektor-Teil ist nicht immer explizit angegeben, oder manipuliert mit im code, da hat die CPU "Standard" Verbände der segment-Register enthält Selektoren mit konkreten Anweisungen oder konkrete Anweisungen Kodieren. Es ist auch ungewöhnlich, um zu manipulieren-Selektoren in 32-bit-Modus, aber es ist sehr oft notwendig, in 16-bit-code.
Den
virtual address
gebildet wird aus der logischen Adresse, die entweder "direkt" (inreal
oder8086 virtual
- Modus) oder "indirekt" (inprotected
- Modus)."Direct" virtual address
=selector
* 16 +offset
."Indirect" virtual address
= SegmentDescriptorTable[selector
].Base +offset
.SegmentDescriptorTable ist entweder die
Global Descriptor Table
(AKAGDT
) oder die Lokale deskriptortabelle (AKALDT
). Es ist vom OS und beschreibt die Lage und Größe der verschiedenen Segmente des Speichers.selector
wählen Sie ein segment in der Tabelle. DieBase
Eintrag der Tabelle zeigt die segment - Anfang (virtuelle Adresse). DieLimit
Eintrag erzählt die segment-Größe (in der Regel; die details sind etwas komplexer).Wenn ein Programm versucht, auf Speicher zuzugreifen, die mit einem offset was den Zugang über das Ende des Segments (die CPU vergleicht
offset
undLimit
), die CPU erzeugt eineexception
und die OS-handles, indem in der Regel das Programm beendet.Btw, in
real/v86
- Modus, obwohl der virtuellen Adresse gebildet wird direkt vonselector:offset
gibt es noch eine 16-bit -Limit
auferlegt offsets, das ist der Grund, warum Sie brauchen, um verwenden Sie einen anderen Selektor zum Zugriff auf mehr als 64 Kb Speicher.Den
Base
Eintrag in ein segment-Deskriptor kann verwendet werden, um entweder zu isolieren, das segment vom rest des Speichers (Limit
hilft hier), oder Ort, oder bewegen Sie das gesamte segment an eine beliebige virtuelle Adresse, die zimmerreserviereung, ohne das Sie ändern etwas (oder viel) in das Programm zu der es gehört (wenn wir uns bewegen, ein segment, das die Daten verschoben werden, in der Erinnerung, offensichtlich). Im Grunde, es kann verwendet werden, für den Umzug Zwecke. Inreal/v86
- Modus für den Umzug Zwecke derselector
geändert wird.Den
virtual address
kann weiter übersetzt, um diephysical address
wenn die CPU läuft inprotected mode
und hatpage tables
. Wenn es keine Seite Tabellen, die physikalische Adresse ist die gleiche wie die virtuelle Adresse. Die übersetzung erfolgt in Blöcken von physischen Speicher und Adressbereiche, sogenanntepages
(oft 4 KB).Gibt es keine dedizierten relocation register auf x86-CPUs. Umzug kann erreicht werden indem man:
Als für
virtual address : reside in the hard disk , as a pages
ich bin mir nicht sicher, was genau du sagen willst, aber nur weil es von virtuellen zu physikalischen Adresse-übersetzung, es bedeutet nicht, dass es auch virtuelle on-disk-Speicher. Es gibt andere Anwendungen für die übersetzung neben virtuellen on-disk-Speicher. Und die Adressen befinden sich in der CPU und wo immer Ihr (und OS) - code, der Sie schreibt, nicht unbedingt auf der Festplatte.InformationsquelleAutor Alexey Frunze
Ihre Beschreibung hat eine Reihe von Fehlern, von denen kann das Resultat von unpräzisen Dokumentation und gemeinsame Nutzung.
Zuerst von allen, gibt es wirklich keine solche Sache wie eine virtuelle Adresse. Es gibt physische und logische Adressen. Leider wird der Begriff virtuelle Adresse ist Häufig (auch in der hardware-Dokumentation) verwendet, wenn logische Adresse ist, was gemeint ist..
Den CPU-instruction-stream immer operiert auf der logischen Adressen (Werte beziehen sich auf physikalische Adressen).
Wenn die CPU muss Zugriff auf eine logische Adresse, die MMU versucht zu übersetzen, es zu einer physischen Adressen. Es bedeutet, dass durch nachschlagen der Adresse in einer Seite Tisch.
Mehrere Dinge können passieren, an diesem Punkt:
(Ich übergehe Modus-Zugriff-Prüfungen).
Es ist dieser Letzte Schritt, der Letzte Schritt, in dem virtuellen Speicher ins Spiel kommt. An diesem Punkt der page fault handler des Betriebssystems braucht, um zu finden, wo die entsprechende Seite auf dem Datenträger gespeichert wurden, zu laden die Seite aktualisieren Tabelle, und starten Sie den Unterricht.
Das Betriebssystem verwaltet den verfügbaren physischen Speicher durch paging beschreibbaren Speicher (geändert hat) auf der Festplatte (nur-lese-Daten nicht geschrieben werden müssen und zurück), wenn es eine hohe Nachfrage nach physischen Speicher.
Ich noch nie gehört, dass ein "relocation-register" vor. Aber tun Sie eine GOOGLE-Suche kann ich sehen, dass einige wissenschaftliche material verwendet es als verwirrend pädagogischen Konzept (d.h., ohne Bezug zur Realität).
Einige Systeme definieren Sie die Seite, die Tabelle mit base und limit Register. Die base-Register zeigen, wo die Seite, die Tabelle beginnt in den Speicher (dies kann entweder eine physische oder logische Adressen) und die limit-register gibt die Seite des Tisches.
Den Registern sind in der Regel nicht direkt geladen. Ihre Werte sind in der Regel geschrieben, um die hardware-Prozess-Kontext-Block (PCB). Wenn der Prozess-Kontext geladen ist, wird die page table base-und limit automatisch geladen werden.
Auf einigen Systemen gibt es mehrere page tables. Wenn es system-und Benutzer-Tabellen Seite, der Seite Benutzer können Tabellen beziehen sich auf logische Adressen, die in den system-Raum und die system-Seite Tabellen beziehen sich auf physikalische Adressen.
Virtuelle und logische Adressen sind nicht die gleiche Sache in diesen Tagen. Zeuge der Android. Die physische/logische/virtuelle Unterscheidung eine wichtige Rolle im Verständnis Betriebssystem.
Sie haben nicht deutlich gemacht, in Ihre Antwort oder Ihren Kommentar, was der Unterschied zwischen einer virtuellen und einer logischen Adresse sein könnte. Klassisch gibt es keine Unterscheidung zwischen virtuellen und logischen Adressen. Es gibt einige spezielle Systeme (z.B. Segmentierung-Systeme), die Sie eventuell benötigen zusätzliche übersetzung zwischen virtuellen und physikalischen Adressen, aber diese sind die Ausnahme und nicht die Regel sein, und Sie repräsentieren nicht eine Dritte Art von Adresse. Diese Antwort sagt dies und farm mehr upvotes: stackoverflow.com/questions/15851225/...
Klassisch, in es Zeit der kleinen Speicher, da WAR kein Unterschied, aber es ist ein Unterschied, jetzt mit computer-Systemen die Umsetzung der logischen Adresse die übersetzung aber nicht virtuelle übersetzung. (Siehe Android).
Sie haben, um eine Referenz oder ein Zitat über "Finden Sie unter Android," weil Sie gesagt haben, zwei Dinge, Klang falsch. Android implementiert paging, die ist fast immer als eine virtuelle Speicher-System mit virtuellen Adressen. Android ISA verwenden Sie keine segmentierte Adressierung, die ist das einzige system, das ich kenne, wo es einen zusätzlichen Schritt zum transformieren eines segmentierten Adresse in eine lineare Adresse, bevor die lineare Adresse umgewandelt wird in eine physikalische Adresse. Wenn überhaupt, Android implementiert virtuellen Speicher aber nicht implementiert segmentiert, linear address translation.
InformationsquelleAutor user3344003