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 11.02.13 Aufgabe 3
Wir haben mal versucht Altklausuren zu machen bei Aufgabe 3 gings nicht so gut
Bei 1. haben wir
| Tag | valid | dirty | Physical Page numbe ?
| 0x00 00 71 2c | 1 | 0 | ?
| 0x00 40 31 F0 | 1 | 0 | ?
| 0x00 AC C0 F0 | 1 | 0 | ?
| 0x00 00 71 30 | 1 | 0 | ?
Wie an den fragezeichen erkennbar weis ich null was da zu tun ist. Wenn das wer erklären könnte wäre toll.
und bei 3.
Pagedirectory und Pagetable auf invalid setzen. TLB auf invalid setzen (wars das s chon?)
Der TLB speichert zu einer virtuellen Adresse die physikalische Adresse plus ein paar Attribute. Also einfach in der Page-Table nachschauen, wo die Adresse hingemappt wird. Dazu die Adresse bei 2-stufigem Paging mit 4K Seiten in 3 Teile zerlegen: 10 Bit, 10 Bit, 12 Bit (warum sollte klar sein, eine Page-Table hat 4K Platz, also 1024 4-Byte Einträge, 1024 = 2^10). Die ersten beiden sind die Indizes in die Page-Tables, der letzte ist der Offset in die Seite.
Für [m]0x00 00 71 2c[/m] ist das die Page-Table [m]0x00 00 20 00[/m] (die ersten 10 Bit sind 0), also ist der passende Eintrag [m]0x00 00 30 01[/m].
Jetzt das angegebene Format der Page-Table anschauen. Die obersten 20 Bit sind die Adresse, also [m]0x00 00 30 00[/m] (die letzten 12 Bit werden nicht gespeichert, also die Adresse um 12 Bit nach links shiften). Bleibt noch [m]0x0 01[/m] übrig, das ist also das Present-Bit auf 1, das Write-Enable-Bit ist auf 0, also ist diese Seite read-only.
Im TLB wird jetzt also [m]0x0 00 07[/m] und [m]0x0 00 03[/m] gespeichert, der Offset wird nicht mitgespeichert, da er ja nur innerhalb der Seite addressiert. Hinzu kommt noch das Valid-Bit (es gibt einen gültigen Eintrag an dieser Stelle im TLB), plus Write-Enable und ggf. Cache-Disable Bit.
Nein. Wenn du alle Einträge des Pagedirectory auf non-present (invalid gibt es da eigentlich nicht, das gibt es nur bei Caches wie den TLB), dann wäre plötzlich keine Adresse mehr gültig! Das heißt der neue Prozess würde sofort einen Page-Fault bekommen (und das BS dann gleich noch einen …).
Das Pagedirectory und die Pagetables müssen für den neuen Prozess geändert werden, also muss der CPU gesagt werden, dass sie jetzt ein anderes Pagedirectory (inklusive der dort verwendeten Pagetables) verwenden muss, nämlich das vom neuen Prozess. Zusätzlich (oder je nach Architektur implizit) muss der TLB geflushed werden, damit keine falsche Adressumsetzung stattfindet (ebenfalls je nach Architektur ganz oder teilweise).
[quote=rudis]
Das Pagedirectory und die Pagetables müssen für den neuen Prozess geändert werden, also muss der CPU gesagt werden, dass sie jetzt ein anderes Pagedirectory (inklusive der dort verwendeten Pagetables) verwenden muss, nämlich das vom neuen Prozess. [/quote]
Also ein Umsetzen des PDBR (Page Directory Base Register) / CR3-Registers.
Danke habs nun verstanden