Übung9 Aufgabe 2b

Benedikt W.
Erstie
Erstie
Beiträge: 14
Registriert: 4. Okt 2010 21:18

Übung9 Aufgabe 2b

Beitrag von Benedikt W. »

In der Aufgabe sollen ja die Tabellen gefüllt werden. Als virtuelle Seitennummer werden immer die ersten 16 Bit der virtuellen Adresse genommen.
Ich kann mir nicht wirklich erklären warum. Das einzige was mir einfällt ist, dass die Seiten Byteadressiert seien könnten und somit der Offset für die 64KB Seite 16 Bit haben muss. Also wären dann die ersten 16 Bit der virtuellen Adresse die virtuelle Seitennummer.
Ist das so richitg, oder gibt es eine korrekte Lösung die meine Frage klärt.

Danke

Toa
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 121
Registriert: 16. Feb 2011 23:58

Re: Übung9 Aufgabe 2b

Beitrag von Toa »

Implizit hast du die Antwort schon gegeben. Die virtuelle Adresse besteht aus der page number gefolgt von dem page offset. Bei gegebener virtueller Adresse musst du also nur entsprechend viele Bits aus der virtuellen Adresse "extrahieren" und erhälst die page number. Genau genommen nimmst du die ersten 14 Bit, da hier bei den Adressen die Msb Nullen sind. Schau dir die Adressen noch mal genau in Binär an.

willK
Erstie
Erstie
Beiträge: 19
Registriert: 12. Aug 2011 17:08

Re: Übung9 Aufgabe 2b

Beitrag von willK »

Hallo,

gilt nicht 4F45 => 100111101000101

und das wären doch 15 Bit, was ein Widerspruch zu den in a) berechneten Werten sind oder? Da hat man ja nur 14 Bit errechnet...

willK
Erstie
Erstie
Beiträge: 19
Registriert: 12. Aug 2011 17:08

Re: Übung9 Aufgabe 2b

Beitrag von willK »

Ah ich glaube ich habe das verwechselt.
Die a ist ja ohne TLB.

Wenn ich eine Seitengröße von 2^16 Byte habe, dann muss ich die letzten 16 Byte aus der virt. Addr. rausholen, dies ist genau der 2. Block :D

Danke ;-)

JohannesRudolph
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 7. Nov 2010 01:42

Re: Übung9 Aufgabe 2b

Beitrag von JohannesRudolph »

Für mich macht insbesondere die erste Teilaufgabe aber keine wirklichen Sinn.

Wir wissen aus der Beschreibung, dass wir 256MByte Hauptspeicher haben, 1Gbyte und 64Kbyte Seitengröße. Um Innherhalb einer Seite ein Byte adressieren zu können, brauchen wir also 64Kb=2^16 16 Bit (4 Hex Ziffern). Diese gehen also 1:1 durch die Adressübersetzung durch. Damit verbleiben 2^14 mögliche Speicherseiten (1 Gbyte = 2^30). Wir können maximal 2^12 Seiten aus dem Hintegrundspeicher (ich nehme mal an Swap) ins Ram bringen. Das reicht für die 10 Adressen die wir in der ersten Teilaufgabe betrachten locker.

Also: Warum gibt es beim zweiten Zugriff auf 0x134F einen Seitenfehler? Das die Seite ersetzt wurde ist Schwachsinn, wenn ich davon ausgehe 2^12 Seiten cachen zu können. Die Lösung geht hier wohl von nur 4 Seiten aus, aber das wäre der TLB und das ist erst im zweiten Teil gefragt (und außerdem cached der TLB ja nicht die Seite sondern nur die Adresse).

Ich verstehe die Aufgabe irgendwie nicht, insbesondere das Kommentar unten drunter ("die erste Tabelle enthält virtuelle Adressen, die mit einem virtuellen Adressraum von 1 GByte nicht darstellbar sind. Dies sind diejenigen Adressen, deren vorderste Hex-Ziffer größer als 3 ist.") verwirrt mich. Eigentlich sollten diese Adressen einen Fehler generieren?

Kann jemand da mal ein wenig Licht ins dunkle bringen?

Antworten

Zurück zu „Archiv“