Paging: 3 Stufige Seitentabelle

OP #3700043
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
OP #3700082
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
OP #3700190
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
#3700407
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.
OP #3700476
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
#3700515
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.
OP #3700529
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren