Forum: Offtopic Paging: 3 Stufige Seitentabelle


von Bert S. (kautschuck)


Lesenswert?

Hallo,
ich versuche folgende Aufgabe zu verstehen:

Gegeben ist eine dreistufige Seitentabelle auf einem 32-Bit System mit 
Wortadressierung (4 Byte). Der Offset der virtuellen Adresse beträgt 14 
Bit. Die Seitentabelle der ersten Stufe enthält halb so viele Einträge 
wie eine Seitentabelle der zweiten Stufe und diese wiederum halb so 
viele Einträge wie eine der Seitentabelle der dritten Stufe. Ein Eintrag 
in einer Seitentabelle beträgt immer 32-Bit.

Berechne:

1.) Der maximal benötigte Speicherplatz für die Seitentabellen in Byte

2.) Die Seitengrösse in Byte

Nun weiss ich ja aus den 14 offset bit, dass 18 bits für die 
Adressierung der Page-Tabellen zur Verfügung stehen. Nun kann ich aber 
diese 18 bits nicht so aufteilen, dass die 3te Stufe doppelt soviele 
Einträge wie die 2te Stufe und 4mal so viele Einträge wie die 1te Stufe 
hat.

Gruss Bert

von (prx) A. K. (prx)


Lesenswert?

Bert Siegfried schrieb:
> Nun kann ich aber
> diese 18 bits nicht so aufteilen, dass die 3te Stufe doppelt soviele
> Einträge wie die 2te Stufe und 4mal so viele Einträge wie die 1te Stufe
> hat.

Du kannst also die Zahl 18 nicht als Summe der Zahlen a,b,c darstellen, 
bei denen gilt?
  b = a-1
  c = b-1
Au Weia!

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Ok, ja habe da irgendetwas falsch überlegt, wollte die bits halbieren, 
statt die Einträge. Dann gilt:

3te Tabelle: 7 bits
2te Tabelle: 6 bits
1te Tabelle: 5 bits

Ein Eintrag in der Seitentabelle ist 4byte -> Die Seitengrösse = 4byte * 
2^14 = 65536 byte.

Irgendwie sehe ich noch nicht wie ich Auf den Speicherplatzbedarf der 
Seitentabelle komme. Es müsste doch gelten:

(2^7 + 2^6 + 2^5)*Seitengrösse? Stimmt aber igrnedwie nicht, die Lösung 
ist:

1056896 Bytes

Wie kommt man darauf?

Gruss und Danke Bert

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Bert Siegfried schrieb:
> Ein Eintrag in der Seitentabelle ist 4byte -> Die Seitengrösse = 4byte *
> 2^14 = 65536 byte.

Was genau ist ein Offset einer virtuellen Adresse?
Was meinst du hier mit den 4 Bytes?

> (2^7 + 2^6 + 2^5)*Seitengrösse? Stimmt aber igrnedwie nicht, die Lösung
> ist:

Was genau steht in jeweils einer einzelnen Seitentabelle der Levels 1-3?

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

A. K. schrieb:

> Was genau ist ein Offset einer virtuellen Adresse?

Der Offset der Virtuellen Adresse ist doch log_2( Seitengrösse / 
Eintragsgrösse)? Ist der Offset der Virtuellen Adresse gleich wie der 
Offset der physikalischen Adresse? Dann hat eine Seite 2^offset Einträge 
und eine Seitentabelle 2^adressierungsbit Seiten?

> Was meinst du hier mit den 4 Bytes?

Die 32-Bit Eintragsgrösse

> Was genau steht in jeweils einer einzelnen Seitentabelle der Levels 1-3?

In einer einzelnen Seitentabelle sind doch die Seiten und diese Seiten 
haben Eintrage, die über den Seitenoffset zugänglich sind, oder?

Gruss und Danke Bert

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Sollte nicht die maximale Seitentabellengrösse = #Einträge mal grösse 
Einträge sein, also 2^18*4 byte = 1048576 byte

Wie man auf 1056896 Bytes kommen soll ist mir einfach ein Rätsel.

von (prx) A. K. (prx)


Lesenswert?

Bert Siegfried schrieb:
> Die 32-Bit Eintragsgrösse

Ja. Und was die mit den Seiten selbst zu tun?

> In einer einzelnen Seitentabelle sind doch die Seiten

Da stehen die Adressen der Seiten drin. Nicht die Seiten.

von (prx) A. K. (prx)


Lesenswert?

Bert Siegfried schrieb:
> Sollte nicht die maximale Seitentabellengrösse = #Einträge mal grösse
> Einträge sein, also 2^18*4 byte = 1048576 byte

Mein Eindruck: Du hast absolut keine Vorstellung von Paging und rätst 
nur herum. Mit etwas Glück und netten Leuten kriegt man so zwar eine 
Antwort auf die Frage, aber ohne Verständnis rasselt man trotzdem durch 
die Prüfung.

von Bert S. (kautschuck)


Lesenswert?

Doch, jetzt habe ich es glaub ich kapiert. Ich hatte mir das ganze bei 
Mehrstufigen Seitentabellen immer falsch vorgestellt. Nun gilt:

Die 1te Seitentabelle hat 2^5 Einträge, jeder Eintrag zeigt auf eine 
Seite der zweiten Seitentabelle. Jede Seite der zweiten Seitentabelle 
enthält wieder Einträge (2^6) mit Referenzen auf die Seiten der 3ten 
Seitentabelle und diese enthalten Einträgen (2^7), die auf den 
wirklichen physikalischen Speicher zeigen.

Also total (2^5 + 2^(5+6) + 2^(5+6+7))*4Byte =  1056896 Bytes

Gruss Bert

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Soweit ok.

Bert Siegfried schrieb:
> Der Offset der Virtuellen Adresse ist doch log_2( Seitengrösse /
> Eintragsgrösse)?

Ein Eintrag in einer page table ist eine Adresse und die ist hier 32 Bit 
gross. Folglich benötigt eine einzelne page table mit 2^6 Einträgen 64*4 
Bytes.

Aber was hat das mit der der Grösse einer page zu tun? Der Inhalt einer 
normalen page besteht ja nicht aus Adressen, hat also nichts mit den 
Einträgen in einer page table zu tun. log_2( Seitengrösse /
Eintragsgrösse) ist als Erklärung also falsch.

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Also der Offset einer Virtuellen Adresse ist der Offset im 
physikalischen Speicher. Die Anzahl Einträge in den Seitentabellen 
werden also hier nur durch die restlichen 18 bit festgelegt (verteilt 
5|6|7).

Ist dann die Seitengrösse die Seitenrahmengrösse (Grösse Rahmen im 
physikalischen Speicher)?

Gruss und Danke Hans

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Bert Siegfried schrieb:
> Ist dann die Seitengrösse die Framegrösse?

Tät ich schon sagen. Wobei ich den Begriff "frame" in diesem Kontext nur 
als "page frame" kenne, meist verkürzt als "page".

PS: Ich nix sprechen Deutsch. ;-)
Jedenfalls nicht bei Fachbegriffen in diesem Themenkomplex.

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Super, vielen Dank

Gruss Bert

von (prx) A. K. (prx)


Lesenswert?

Und wieviel isses nun?

von Bert S. (kautschuck)


Lesenswert?

14 offset bits, wortadressiert: 2^14 * 4Byte

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.