Speicherverwaltung - Übersetzung von virtueller in physische Adresse

1167
Wissam A Jackal

Bitte ich brauche den richtigen Weg, um eine logische (virtuelle) Adresse in eine physikalische Adresse umzuwandeln. Ich habe die folgende Frage:

Angesichts der folgenden Seitentabelle:

Speicherverwaltung - Übersetzung von virtueller in physische Adresse

Wenn Sie wissen, dass die virtuellen Seiten und der physische Rahmen 1 KBytes sind, wie lautet die Speicheradresse, die jeder der folgenden, hexadezimal codierten virtuellen Adressen entspricht: 142A und 0AF1?

Ich habe es so gelöst, aber ich weiß nicht, ob es richtig ist:

142A (hex) = 5162 (dezimal)

5162/1024 = 5 (Seitennummer) <----> Bild 1 in der Seitentabelle

5162mod1024 = 42 (Versatz)

also die physikalische Adresse entsprechend 142A = 1 (physisch) +42 (Offset) oder (1 * 1024 + 42)

also ist das richtig?!

Mit freundlichen Grüßen

0

1 Antwort auf die Frage

1
LawrenceC

1 KBytes = 1024 Byte. 1024 10 = 0400 16

  • Seite 0 = 0000 16, Seite 1 = 0400 16, Seite 2 = 0800 16, Seite 3 = 0C00 16, Seite 4 = 1000 16, Seite 5 = 1400 16

    • Also, 142A 16 ist auf Seite 5 ...
  • Die logische Seite 5 zeigt auf die physische Seite 1. Jede Seite hat 0400 16 Bytes. Die physische Seite 1 beginnt bei 0400 16 (Seite 0 würde bei 0000 16 beginnen ).

  • 142A 16 ist 2A 16 Bytes nach dem Beginn von Seite 5 bei 1400 16 ...

    • Sie fügen also 2A 16 zur Startadresse der physischen Seite 1 hinzu, die 0400 16 ist . Die logische Adresse 142A 16 ist also tatsächlich die physikalische Adresse 042A 16 .

    • Alles 1400 16 bis 17FF 16 entspricht logisch 0400 16 bis 07FF 16 physikalisch usw.


Dies ist die Art von Tabelle, die Sie erstellen könnten, um Ihnen zu helfen. Alle basieren auf Vielfachen von 0400 16, da dies die Seitengröße ist.

Logical Page Number Logical Page Address -> Physical Page Number Physical Page Address 0 0x0000 - 0x03FF 4 0x1000 - 0x13FF  1 0x0400 - 0x07FF 6 0x1800 - 0x1BFF  2 0x0800 - 0x0BFF 8 0x2000 - 0x03FF  3 0x0C00 - 0x0FFF 9 0x2400 - 0x27FF  4 0x1000 - 0x13FF 12 0x3000 - 0x33FF  5 0x1400 - 0x17FF 1 0x0400 - 0x07FF  
vielen dank für die großartige antwort, die sie mir klarer gemacht haben, deshalb ist meine lösung richtig, da dezimal (1 * 1024 + 42 = 1066) in hexadezimal (042A) Wissam A Jackal vor 7 Jahren 0