Virtuelle Adresse und Rahmen < Sonstiges < Hochschule < Informatik < Vorhilfe
|
Aufgabe | Sie haben in ihrem Programm ein Array der Länge 4225 Byte allokiert. Mit einem Printf
ermitteln Sie, dass das Array bei der virtuellen Adresse 0x73b0a780 beginnt.
Wieviele physikalische Rahmen benötigt das Array im Hauptspeicher? Belegen Sie ihre
Antwort rechnerisch. |
hi
kann mir einer sagen wie ich das obige angehen muss ? die Lösung ist 4 Rahmen, aber wie komme ich darauf ?
oben stand noch "Sie haben einen 32bit virtuellen Adressraum und eine Rahmengröße von 2k."
mfg stargate
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:07 Di 07.07.2009 | Autor: | fabba |
Hallo,
die Aufgabe könnte zwar für meinen Geschmack noch etwas genauer sein, aber das Wichtigste ist ja gegeben. Ihr werdet ja sicherlich das entsprechende Verfahren so behandelt haben, dass die gegbenen Infos ausreichen.
Die Rahmengröße ist hier das wichtigste Kriterium. Ein Frame hat laut Aufgabe 2048 Bytes. Den Rahmen des physikalischen Speichers sind ggf. Seiten im virtuellen Adressraum zugeordnet. Das geht nicht wild durcheinander, sondern immer in 2KiB-Schritten. Also 0x00000000, 0x00000800, 0x00001000, ...
sind die virtuellen Startadressen der Seiten.
Dein Array beginnt bei 0x73b0a780, der Anfang ist also in der Seite mit der Startadresse 0x73b0a000.
Bei 0x73b0a800 fängt die nächste Seite an, diese ist einem anderen Rahmen zugeordnet. Die ersten 0x80=128 Bytes des Arrays befinden sich also in einem Rahmen (Seite mit Adresse 0x73b0a000), die folgenden Bytes in einem anderen (Seite mit Adresse 0x73b0a800).
Nun ist das Array noch etwas größer als 2KiB, wird also rein inhaltlich schon mehr als einen Rahmen belegen. Die ersten 128 Bytes sind also im ersten Rahmen, bleiben noch 4225-128=4097 Bytes übrig. 4096 Bytes sind genau 2 Rahmen, das 4097e geht dann über die Grenze hinaus und braucht noch einen. Also
Indizes virtuelle Startadresse der Seite davon zum Array gehörend
0-127 0x73b0a000 0x73b0a780-0x73b0a7ff
128-2175 0x73b0a800 0x73b0a800-0x73b0afff
2176-4223 0x73b0b000 0x73b0b000-0x73b0b7ff
4224 0x73b0b800 0x73b0b800-0x73b0b800
... macht vier Seiten bzw. Rahmen :)
|
|
|
|