Die CPU erzeugt * logische Adressen nicht direkt in der Art und Weise, wie ein Zufallszahlengenerator Zahlen erzeugt. Stattdessen ist die logische Adresse eine Folge der Anweisungen der CPU und der Art und Weise, wie das Betriebssystem den Speicher verwaltet. Hier ist eine Aufschlüsselung:
1. Anweisung abrufen und dekodieren: Die CPU holt Anweisungen aus dem Speicher. Diese Anweisungen enthalten häufig Operanden - Daten, an denen die Anweisung betrieben wird. Die Operanden können mit:
* Registrieren Sie die indirekte Adressierung: Die Adresse des Operanden wird in einem CPU -Register gespeichert. Die CPU verwendet den Inhalt des Registers als logische Adresse.
* Sofortige Adressierung: Der Operand selbst ist Teil der Anweisung. Es ist keine Adressberechnung erforderlich.
* direkte Adressierung: Die Anweisung gibt direkt die logische Adresse des Operanden an.
* Indirekte Adressierung: Der Anweisungen gibt einen Speicherort an, der * die Adresse des Operanden enthält. Die CPU holt die Adresse von diesem Speicherort ab, um die logische Adresse zu erhalten.
* Basis+Offset Adressierung: Eine Basisadresse (häufig aus einem Register) wird einem Offset (in der Anweisung angegeben) hinzugefügt, um die logische Adresse zu berechnen. Dies ist sehr häufig für den Zugriff auf Array -Elemente oder -strukturen.
* Indexierte Adressierung: Ähnlich wie bei Base+Offset, aber der Offset kommt von einem Indexregister. Nützlich für Array -Zugriffe.
2. Programmzähler (PC): Der PC hält die Adresse der nächsten Anweisung, die ausgeführt wird. Dies ist eine logische Adresse, die implizit durch den Anweisungsmechanismus der CPU verwendet wird. Der PC wird nach jedem Befehl abgeholt.
3. Betriebssystembeteiligung (virtueller Speicher): Das Bild wird komplexer, wenn ein virtueller Gedächtnis beteiligt ist. In diesem Fall wird das Programm nicht die physischen Speicheradressen angezeigt. Es sieht logische Adressen (auch virtuelle Adressen genannt). Die CPU generiert eine * logische Adresse * basierend auf der oben beschriebenen Anweisung.
* Speicherverwaltungseinheit (MMU): Die MMU ist eine Hardwarekomponente, die die von der CPU generierte logische Adresse in eine physische Adresse im RAM übersetzt. Diese Übersetzung umfasst die Überprüfung der logischen Adresse in Seitentabellen, die vom Betriebssystem verwaltet werden. Diese Tabellen karten logische Seiten auf physische Rahmen.
* Segmentierung: Einige Systeme verwenden neben Paging eine Segmentierung. Die Segmentierung unterteilt den Speicher in logische Segmente mit jeweils eine eigene Basisadresse und -grenze. Die CPU erstellt eine logische Adresse als Segmentauswahl und einen Offset innerhalb des Segments. Die MMU verwendet diese dann, um die physische Adresse zu finden.
Im Wesentlichen "erzeugt" die CPU eine logische Adresse in einem eigenständigen Prozess nicht. Es verwendet den Adressierungsmodus der Anweisung, um die logische Adresse (häufig mit Hilfe von Registern) zu berechnen, die dann von der MMU in eine physische Adresse weiter übersetzt werden kann. Der Prozess wird durch die ausführende Anweisung und das Speicherverwaltungsschema des Systems diktiert.