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 WS13/14 Aufgabe 3 (Paging)
Hey Leute,
Bei den Aufgaben 3.2 und 3.3 der Klausur vom WS13/14 geht aus um die Größe von Verwaltungsinformationen und Nutzdaten bzw. die Anzahl der benötigten Seiten dafür.
Die Rechnung dazu hab ich nicht verstanden und wäre für eine Erklärung sehr dankbar.
Ich hab bei einer Suche diesen Thread (Klausur WS2013/2014 - Grundlagen der Rechnerarchitektur und -organisatio - FSI Informatik Forum) gefunden. Im Post #8 sagt „br0gr4mm3r“, dass
aber die Rechnung 0x0003ffff - 0x00030000 = 0x0000ffff macht für mich viel Sinn, während 0x10000 für mich keinen macht.
Und wenn ich das jetzt richtig verstanden habe, rechnet man die Anzahl der Seiten für die Verwaltungsinfos so aus(?):
- 0x00030000 bis 0x0003ffff = 0x10000 (<- warum auch immer)
- 0x10000 >> 3 = 0x00010
- Man braucht also 0x00010 Seiten (=16 Seiten?)
Das mit dem Shiften ist wieder kein Problem das macht alles Sinn.
Und wie sieht das mit den Nutzdaten aus? Ich hab in dem anderen Thread hauptsächlich nur massig Text gefunden, aber ich hätte einfach mal gern ein kleines simples Beispiel mit kurzer Erklärung gesehen.
Danke
es hieß doch 0x00030000 bis 0x0003ffff. wenn du auf 0x00010000 statt 0x0000ffff kommen willst brauchst du nur eins aufaddieren.
br0gr4mm3r meinte das mit dem bis sicherlich inkludierend (also die adresse 0x0003ffff inklusive).
Bei der Rechnung muss man noch 1 addieren, da man sonst die nullte Adresse nicht mitrechnet.
Die Verwaltungsinfos für den Datenbereich berechnest du so:
Anfang: 0x00 03 00 00
Ende: 0x00 03 ff ff
Dann schaut man sich an, wo der Anfang und das Ende jeweils in Page Directory Index und Page Table Index stehen. Dazu 3 Byte Offset abschneiden und die verbleibenden 5 Byte in der Mitte teilen (2x 10 Bit). Damit kommt man auf:
PD PT
Anfang: 0x0 und 0x30
Ende: 0x0 und 0x3f
Anfang und Ende liegen beide in der selben Page Table 0x0 (soll heißen: Page Table, auf die an der Stelle 0x0 im Page Directory verwiesen wird), also wird nur eine Seite für die Verwaltungsinformationen benötigt. Allerdings kommt noch das Page Directory mit einer Seite hinzu, macht insgesamt 2 Seiten.
Die Größe der Nutzdaten sieht man hier auch: 0x30 bis 0x3f macht 0x10, also 16 Einträge in der Page Table, und da jeder Eintrag auf eine Seite verweist, macht das 16 Seiten.
Wenn Anfang und Ende in unterschiedlichen Page-Tables liegen, z.B. so:
Anfang: 0x00000000
Ende: 0x00402fff
PD PT
Anfang: 0x0 und 0x0
Ende: 0x1 und 0x2
Dann benötigt man 2 Seiten für die Verwaltungsinformationen (+ eine Seite für Page Directory). Außerdem “erstreckt” sich der Speicherbereich dann auch über die komplette Page-Table 0x0 und in der Page-Table 0x1 bis einschließlich zum Eintrag 0x2 - macht insgesamt 1024 + 3 = 1027 (3 deshalb, weil man auch hier 0x0 mitrechnen muss) Seiten für die Nutzdaten. (Probe: Der Bereich ist 0x403000 lang, >> 3 ergibt 1027)
Was br0gr4mm3r geschrieben hat, fand ich ziemlich hilfreich, ansonsten sind die Übungs-Slides auch empfehlenswert:
http://www3.informatik.uni-erlangen.de/Persons/schoenwe/GRa_SS2014/10/gra-slides-10.pdf
http://www3.informatik.uni-erlangen.de/Persons/schoenwe/GRa_SS2014/09/gra-slides-09.pdf
Könnte so stimmen.
schäm
Bei der Rechnung muss man noch 1 addieren, da man sonst die nullte Adresse nicht mitrechnet.
Die Verwaltungsinfos für den Datenbereich berechnest du so:
Anfang: 0x00 03 00 00
Ende: 0x00 03 ff ffDann schaut man sich an, wo der Anfang und das Ende jeweils in Page Directory Index und Page Table Index stehen. Dazu 3 Byte Offset abschneiden und die verbleibenden 5 Byte in der Mitte teilen (2x 10 Bit). Damit kommt man auf:
PD PT
Anfang: 0x0 und 0x30
Ende: 0x0 und 0x3f
Anfang und Ende liegen beide in der selben Page Table 0x0 (soll heißen: Page Table, auf die an der Stelle 0x0 im Page Directory verwiesen wird), also wird nur eine Seite für die Verwaltungsinformationen benötigt. Allerdings kommt noch das Page Directory mit einer Seite hinzu, macht insgesamt 2 Seiten.
Die Größe der Nutzdaten sieht man hier auch: 0x30 bis 0x3f macht 0x10, also 16 Einträge in der Page Table, und da jeder Eintrag auf eine Seite verweist, macht das 16 Seiten.Wenn Anfang und Ende in unterschiedlichen Page-Tables liegen, z.B. so:
Anfang: 0x00000000
Ende: 0x00402fffPD PT
Anfang: 0x0 und 0x0
Ende: 0x1 und 0x2
Dann benötigt man 2 Seiten für die Verwaltungsinformationen (+ eine Seite für Page Directory). Außerdem „erstreckt“ sich der Speicherbereich dann auch über die komplette Page-Table 0x0 und in der Page-Table 0x1 bis einschließlich zum Eintrag 0x2 - macht insgesamt 1024 + 3 = 1027 (3 deshalb, weil man auch hier 0x0 mitrechnen muss) Seiten für die Nutzdaten. (Probe: Der Bereich ist 0x403000 lang, >> 3 ergibt 1027)Was br0gr4mm3r geschrieben hat, fand ich ziemlich hilfreich, ansonsten sind die Übungs-Slides auch empfehlenswert:
http://www3.informatik.uni-erlangen.de/Persons/schoenwe/GR…
http://www3.informatik.uni-erlangen.de/Persons/schoenwe/GR…Könnte so stimmen.
Vielen Dank euch beiden, das leuchtet mir jetzt alles ein. Die einzige Frage, die noch bleibt, ist wie sich das ganze mit den +1 für das Pagedirectory verhält.
Sagen wir, wir haben 4 Segmente mit jeweils 2 Seiten Verwaltungsinfos ohne PD, berechnen sich dann diese aus 42+1 oder 4(2+1)?
Dann wäre ich auch so kurz vor der Klausur endlich bereit :nuts:
Sagen wir, wir haben 4 Segmente mit jeweils 2 Seiten Verwaltungsinfos ohne PD, berechnen sich dann diese aus 42+1 oder 4(2+1)?
Ersteres.
Warum redest du hier von Segmenten? Ich dachte es geht um Paging.
Warum redest du hier von Segmenten? Ich dachte es geht um Paging.
Du hast natürlich recht, es ging eher um Daten-/Adressbereiche und nicht um Segmente. Ich hab mich etwas unglücklich ausgedrückt, mit den Segmenten wollte ich wörtlich auf „Teilstück“ oder „Bereich“ raus, und nicht auf den Begriff aus der Speicherverwaltung.