Klausur 2012 Aufgabe 5

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur 2012 Aufgabe 5
Hallo,

ich hätte eine Frage zur Aufgabe 5.1):
Wenn man z.B. für das Textsegment die Anzahl der Pages berechnet, würde ich zuerst folgendes machen:
0x080ff0ea/0x800000 = ff0ea

Dann würde ich gerne ff0ea/2^12 nehmen, jedoch ist das sehr umständlich. Wie muss ich denn an diese Aufgabe rangehen?
Gibt es einen kürzeren Weg, auf die Lösung zu kommen?

AUßerdem eine Frage zur Aufgabe 5.2):
Ich dachte, dass die Tabellengröße = Pagegröße ist. Was ist bei dieser Aufgabe denn noch zu machen?

Vielen Dank und LG.


Ich hab zwar (noch) keine Ahnung, wovon du redest, aber 0xff0ea/2^12 ist 0xff,0ea (bzw. 0xff, wenns um Ganzzahldivision geht). Teilen durch 2^4 entspricht einem rechts-Shift um ein halbes Byte.

1 „Gefällt mir“

Braucht man dann 0xff,0ea Pages für das Textsegment?


Ja, es sind genau 0xff,0ea Pages. Da es aber ja keine Teil-Pages gibt, braucht man 0x100.


Vielen Dank, habs jetzt verstanden.
Bei der Teilaufgabe 2 soll man die ANzahl der Pages in den Page-Tabellen berechnen. Muss man jetzt nur die Ergebnisse aus der Aufgabe davor addieren?


Die Frage ist, wieviele Pages für die Pagetabellen gebraucht werden, nicht für die Daten (was war Teilaufgabe 1). Schau mal z.B. in die Klausur vom 14.02.2011, Aufgabe 6, die Skizze. Pro Tabelle braucht man genau eine Page, Frage hier ist jetzt, wieviele Tabellen braucht man.


Hat jemand zur 3. Teilaufgabe ne sinnvolle Lösung?
Also ich hab mir gedacht, dass der Offset 12 Bit betragen muss, weil die Page ja 4KB große ist. Wenn die Einträge der Verwaltungstabellen 64 Bit groß sind, gibt es 2^9 Einträge für den Tabellenindex, also 9 Bit, wenn eine Tabelle in eine Page passen soll (was nicht in der Aufgabe steht). Damit komm ich dann auf 5 Stufen Tabellenhierarchie (45 Bit der Adresse) 7 ungenutzten Bits und 12 Bit Offset.
Allerdings hab dich die Tabellengröße ja einfach angenommen, und mein 2. Zweifelspunkt ist, dass die letzte Tabelle in der Stufe keine Verwaltungstabelle mehr ist, oder?


Da geht’s um eine 4-stufige Hierarchie, die Pages, die die eigentlichen Daten beinhalten, gehören da nicht mehr dazu. Verzeichnisse musst du aber nur für die Breite der physikalischen Adressen (48bit) erstellen, nicht für die vollen 64bit. Dann geht die Rechnung auch sauber auf.

Hier nochmal komplett:
4KiB Daten pro Page => 12 Bit Offset.
Genauso 4KiB Daten pro Tabelle bzw. Verzeichnis => 4KiB/64bit [Größe eines Tabelleneintrags] = 512 Einträge pro Tabelle = 2^9, also brauchen wir da 9 Bit.
48bit [Breite des physikalischen Speichers] - 12bit offset => 36bit, die auf die Seitenverzeichnisse & -tabellen aufgeteilt werden müssen.
36 / 9 = 4 nicht 3 :-P[/troll]

2 „Gefällt mir“

Ok danke, macht Sinn, dass die virtuellen Adressen genauso lang sind wie die physikalischen…
Dass die Pagetable die Größe einer Page hat, steht zwar für die vorigen Teilaufgabe, aber so wirklich angegeben finde ich das für die Teilaufgabe nicht…


Das ist einfach immer so - alles andere würde ja in jeder Seite Platz verschwenden und zusätzlichen Aufwand verursachen:

Die Seitengröße ist eine 2er Potenz, die Größe eines Eintrags (32 oder 64bit) auch. Teilen → 2er Potenz für Anzahl der Einträge. Daher kannst du für den Index immer eine bestimmte Menge Bits der virtuellen Adresse verwenden.

  • Nimmst du jetzt 1 Bit weniger, verschwendest du genau die Hälfte des Platzes - quatsch.
  • Nimmst du keine 2er Potenz, müsstest du rechnen → ganz doof.
    Was passieren könnte, wäre dass eine Stufe (vermutlich die oberste) nicht ganz voll wird, (64-12) / 9 geht ja nicht ganz auf. Da muss man dann mit 0-Bits auffüllen / diese reinshiften.

Vielleicht ist es leichter so berechen:
0x080ff
-0x08000

0x 0ff

  •     1 (weil man noch 0x08000 berücksichtigen muss)
    

0x 100

edit ++
Dann A5 ii)
Aufteilung: 10 Bit DIR, 10 Bit Page Index, 12 Bit Offset
0x08000 - 0x080ff
(DIR: 0x20, Page Index: 0x0) - (DIR: 0x20, PI: 0xff)
Datensegment: (DIR: 0x80, PI: 0x0) - (DIR: 0x80, PI: 0x100)
Library: (DIR: 0x200, PI: 0x0) - (DIR: 0x200, PI: 0xff)
Stack: (DIR: 0x2ff, PI: 0x3ff) - (DIR: 0x2ff, PI: 0x3ff)
PI braucht man eigentlich nicht.

Also 1+4= 5 tabellen = 5 Pages

Gibt es andrere schnellere Variante?


Hm, ich verstehe (trotz der Ausführlichkeit deiner Lösung) nicht, wie man jetzt auf 5 Pages kommt - magst du/jemand mir das bitte noch mal näher bringen? :slight_smile:


Eine Page fürs Seitenverzeichnis. Dann brauchst du noch die Seitentabellen - da brauchst du für jede “Belegung” der ersten 10 Bit eine
eigene. Da kein Segment so groß ist, dass sich in den ersten 10 Bit etwas ändert, braucht jedes Segment (4) eine Seitentabelle - denn die ersten 10 Bit der Segmente unterscheiden sich. 1 + 4 = 5.

1 „Gefällt mir“

Ahh, ich hatte einen Denkfehler - Vielen Dank für die Erklärung :slight_smile:


Ich hätte noch eine Frage zur Teilaufgabe 5 (die Tabelle mit TLB und Cache).
Wenn ich das mit Folie 44 Kap. 5 vergleiche, sind eigentlich alle möglich. Es kommt halt darauf an, ob das Datum im Speicher ist oder nicht - aber diese Spalte gibt es ja in der Aufgabe nicht. Soll man da dann also immer noch selbst unterscheiden… oder ist es anders gemeint?

Edit:
Noch eine Frage hierzu:

Ich stehe gerade auf dem Schlauch. Warum teilt man da jetzt die 48Bit ein und nicht die 64 virtuellen Bit?


Die Inklusionsbedingungen sind ja TLB Teilmenge von der Seitentabelle und Cache Teilmenge vom Hauptspeicherinhalt. Das ist prinzipiell unabhängig, letztlich sind die Inhalte halt ähnlich. Das hieße aber, dass überall die gleiche Begründung stünde… schon irgendwie komisch, versteh ich grad wieder eine GRa Aufgabe vollkommen falsch?^^

Öhm weils dann aufgeht und wir das Problem in der Übung nie angesprochen haben… Womöglich ist die Breite der physikalischen und die der verwendeten virtuellen Adressen gleich. Eher tendier ich dazu, dass das momentan einfach so gemacht wird, normalerweise ist die breite deines physikalischen Speichers ja deutlich geringer. Was genaues kann ich dir dazu allerdings auch net sagen - 256TB Hauptspeicher ist eh eine interessante Zahl.

1 „Gefällt mir“

Es ist einfach weniger umständlich als mit den vollen 64bit die ganze Zeit zu hantieren obwohl sowieso niemand soviel Speicher hat.


Aus der Aufgabenstellung kann man das halt nicht direkt rauslesen^^ Aber gut zu wissen.


Achso, danke! Warum hat man dann überhaupt 64 bit zur Verfügung, wenn man sie nicht nutzt… :smiley: