OK, Danke.
Aber wie muss eine Gülzige PageDir aussehen?
Egt. ist die PageDir nur eine 1024 Einheiten langer Intarray, der mit jedem eintrag auf eine PageTable mit wieder 1024 einträgen verweist.
Also nochmal mein Wissen über Paging:
Man braucht 1 PageDir, ein Array von 1024 32-Bit(int) Einträgen.
Jeder Eintrag verweist auf eine PageTable, eine Array mit 1024 einträgen à 32-Bit.
Ein Pagedireintrag hat in den oberen 20 Bit die Addresse der Page Table, der Rest sind einstellungen.
Ein PageTable eintrag hat in den Oberen 20 Bit die Adreesse des Physikalischen Speichers, der Rest sind Einstellungen.
Die Startaddresse der PageDir muss im cr3 register gespeichert werden und im cr0 register muss Bit 31(0..31) gesetzt werden.
Momentan sieht das bei mir so aus:
Code: Alles auswählen
unsigned int pagedir[1024];
unsigned int page_table[1024][1024]
pagdir[0]=(((unsigned int)&page_table[1][0])<<12) | settings);
...
Aber wie ist das mit dem PageFault Handler?
Ist ja einer von ISRs.
Und für die hab ich ja nen Standart Handler, egtl.
Gibt es da nohc einen Speziellen Interrupt oder was?
Redundanz macht wiederholen unnötig.
quod erat expectandum