Adressbindung erzeugt die gleiche Adresse

8

Warum Kompilierzeit & amp; Ladezeitadressenbindung erzeugt identische physikalische und logische Adressen, während Ausführungszeitadressenbindung unterschiedliche physikalische & amp; logische Adressen?

    
Green goblin 20.06.2012, 12:30
quelle

1 Antwort

11

Es ist lange her, dass diese Frage gestellt wurde, aber ich füge nur die Antwort zu Archivierungszwecken hinzu.

Sehen wir uns die folgende Definition an:

Logical address : Von der CPU generierte Adresse

Physical address : Adressen, wie sie von der Speicherverwaltungseinheit (MMU) gesehen werden

Nun gehen wir in compile time binding davon aus, dass immer ein Speicherbereich zur Verfügung steht (was für das Programm ausreicht) und absoluter Code generiert wird. Also was auch immer Adressen CPU generiert (wie Pointer-Adressen usw.) sind die gleichen wie was von MMU gesehen wird.

Eine bessere Version der Speicherauslastung besteht darin, die Bindung bis zur Ladezeit zu verzögern, so dass der Speicher nicht vom Programm verwendet wird, das auf der Festplatte sitzt. Dazu wird der Code im verlagerbaren Format generiert. Das ist load time binding .

Nun ist execution time binding etwas anders, wenn die Bindung bis zur Ausführungszeit verzögert wird. In diesem Fall erzeugt die CPU eine Adresse, sagen wir 300 , und führt alle Manipulationen an der Adresse 300 durch, aber wenn ein tatsächlicher Speicherzugriff vorhanden ist, wird diese Adresse transformiert, indem der Wert des verschiebbaren Registers addiert wird, sagen wir R , an diese Adresse. Der logische Adressbereich ist also 0-LIM , während der physische Adressraum R-(R+LIM) ist.

Lassen Sie mich das auch anhand eines Beispiels erklären, damit es klarer wird:

Wenn Sie ein Programm mit load time binding vertauscht haben, sollten Sie es tauschen. Sie müssen es an den gleichen Speicherort zurückgeben (da alle Adressen in den Anweisungen entsprechend dieser Adresse angegeben wurden), während Sie in execution time binding einen beliebigen Prozess zurückstellen können jeder Ort, weil Sie nur den Wert im verschiebbaren Register ändern müssen und es wird nur gut funktionieren. Daher wird die Speichernutzung erhöht.

    
Aman Deep Gautam 11.11.2012, 18:21
quelle

Tags und Links