ss15 Aufgabe 6

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.

ss15 Aufgabe 6
Aufgabe 6 Paging)

– Bit 3: Cache-disable-Bit
– Bit 2: Execute-enable-Bit
– Bit 1: Write-enable-Bit
– Bit 0: Present-Bit

Folgendes soll fur ein Programm gelten:

• im virtuellen Adressbereich 0x00 03 00 00 bis 0x00 03 ff ff kann auf nicht ausführbare Daten zugegriffen werden,

• im virtuellen Adressbereich 0x00 20 00 00 bis 0x00 2f ff ff ist der Speicher der Grafikkarte eingeblendet,

• im virtuellen Adressbereich 0x00 e0 00 00 bis 0x00 e0 0f ff kann auf schreibgeschützten Programmcode zugegriffen werden,

• alle anderen Bereiche sollen Zugriffsfehler auslösen.
Freier Arbeitsspeicher ist ab der physikalischen Adresse 0x00 c0 00 00 verfügbar, die Grafikkarte ist
ab Adresse 0x00 01 e0 00 eingeblendet.

Ist meine Lösung korrekt ? Denn ich bin mir unsicher wie sich die physikalische Adresse in den Page tables bzw in den Page directories berechnen lässt. (damit meine ich Bit 31-12). Danke für die Mühe :slight_smile: Hilfe wäre nett


Hiho,

deine Lösung ist meiner Meinung nach fast richtig. Ich bin mir allerdings auch nicht 100 pro sicher,
da ich mir Paging auch nur aus meiner Übungsmitschrift und dem Pad zusammengereimt habe.

Einziger Kritikpunkt: der Erste Eintrag im Pagedirectory müsste meiner Meinung nach nicht 0x00 c0 10 01 sein sondern 0x00 c0 00 01 . Somit also auch bei allen folgenden 0x10 00 abziehen.

Edit: ich glaube deine Version ist doch richtig in der Klausur von WS13 ist es so wie bei dir


okay danke dir :slight_smile: da bin ich erleichtert


Könnt ihr mir sagen, woher ihr die alten Klausuren habt?


Von der offiziellen Lehrstuhl-Seite: http://www3.cs.fau.de/Lehre/GRa/SS2016/pruefungen.shtml


Die Werte passen, es empfiehlt sich aber, an den Tabellen auch noch deren eigene Anfangsadresse zu notieren:

      0x00 c0 00 00
     +---------------+
     |               |
0x3  |0x00 c1 20 01  |

[quote=Marcel[Inf]:1474272734]
Von der offiziellen Lehrstuhl-Seite: http://www3.cs.fau.de/Lehre/GRa/SS2016/pruefungen.shtml
[/quote]

Danke. :slight_smile:


Hey,

also ich saß lange an diesen Paging-Aufgaben, aber habe die nicht komplett verstanden(konnte am Tag der Klausurfragestunde auch nicht kommen).
Kann mir jemand erklären, wie man da auf die Lösung/Zeichnung kommt? :-/

Was ich bis jetzt verstanden hab:
Page Directory beginnt ab der Adresse des freien Arbeitsspeicher(0x00 c0 00 00).
In der Aufgabenstellung steht, “im virtuellen Adressbereich 0x00 03 00 00 bis 0x00 03 ff ff kann auf nicht ausführbare Daten zugegriffen werden,”. Das bedeutet, dass im Page Table genau dieser Bereich not executable ist.

Wie kommt man aber auf die Adressen 0x00 c0 20 03 - 0x00 c1 10 03?
Und warum steht der schreibgeschützte Programmcode(virtueller Adressbereich 0x00 e0 00 00 bis 0x00 e0 0f ff) in einem anderem Page Table?

Ich hab jetzt für mich noch kein wirkliches “Schema” gefunden, wie ich an solche Aufgabenstellungen(das Zeichnen von dem Teil) rangehe.

Danke schonmal für die Hilfe!


http://www3.cs.fau.de/Persons/schoenwe/GRa_SS2014/09/gra-slides-09.pdf
schau mal hier auf den Folien, da ist es ganz gut erklärt


@phush ok dann will ich dir mal meinen Lösungsweg zeigen.
die Pages sind 4KiB groß → 2^12 → 12 Bits für den Offset.
zweidimensionales Paging, je stufe 1024 Einträge → 1024 Page Directory Einträge mit jeweils 1024 Page Table Einträgen (0x0 - 0x3FF)
in diesen Einträgen bilden die ersten 20 Bits die physikalische Adresse - 11-4 unbenutzt - und die letzten 4 Bits die Rechte.

im virtuellen Adressbereich 0x00 03 00 00 bis 0x00 03 ff ff kann auf nicht ausführbare Daten zugegriffen werden
in Binär: 0000 0000 0000 0011 0000 0000 0000 0000 bis 0000 0000 0000 0011 1111 1111 1111 1111
Page Directory Page table
d.h Page Directory = 0x0 und Page Tables sind 0x30 -0x3F. → 16 Seiten
Nun zu der Bildung der ersten 20 Bits in den Tables.
Nun ist die Adresse für die Page Directory 0x0 zuerst dran.
Der Hauptspeicher beginnt ab 0x00c00000. Das ist der Anfang der Page Directories. Die nächte verfügbare physikalische Adresse wären dann 0x00c01000. Da die Page Directory present ist → 0x00c01001. Dies ist die Anfangsadresse der Pagetables → d.h die nächste verfügbare physikalische Adresse im Hauptspeicher ist 0x00c02000. Dies ist die Anfangsadresse der Seite für den Page table Eintrag 0x30.
Nun zu den letzten 12 Bits → 11-4 unbenutzt d.h 00-X
zum X:
not executable heißt:
cache disabled executable write enabled present

  0                     0                   1                 1        -> 3

und das geht bis zum Page table Eintrag 0x3F. 0x00c02003
+F (16 Seiten)
=0x00c11003
die nächste verfügbare Adresse im Hauptspeicher wäre dann 0x00c12000. Beim Speicher Bereich der Grafikarte geht das genauso mit dem Unterschied, dass die Grafikarte physikalisch ab Adresse 0x0001e000 vorhanden ist → die ersten 20 Bits 0x0001e - 00 - B.
Geht von 0x200 bis 0x2FF in den Pagetables → 0xFF Seiten.
Sprich die letze physikalische Adresse der Pages für die Grafikarte ist 0x0001e00B
+FF
0x0011D00B (also eig. bis zu 0x0011DFFF)


falls ich das richtig verstanden habe :slight_smile: sry for fail post


Geil, danke für die antworten!
Hat echt geholfen :smiley:


Eine Frage zu Paging:
Folie 5-23
Hat jmd. die Beispielrechnung und kann sie erklären?