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
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
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
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
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
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.
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.
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.
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.