Ja, aber damit sind doch dann nur bestehende Pages gemappt. Irgendwie ist es jeztt außerhalb von meinem Vorstellungsvermögen gerade, wie ich dann die anderen Mappe. Kp. Sagen wir ich hab 2 PageTables die bereits im Directory drin sind. Wie füge ich dann eine neue ein?! Ich verstehs grad nicht -.- Ich lege PageTables eigentlich bei bedarf an, heißt wenn ich für eine bestimmte Adresse eine brauche. Ihr habt doch nich 1024 PageTables von anfang an angelegt, oder?
Ich meine, ich denke ich benutze die Virtuelle-Adresse des PD
dann mach ich ein pmm_alloc() für eine PageTable, trage diese ins PD ein und kann dann über das "virtuelle PD" (nenn ich jetzt mal so) die PageTable bearbeiten?! Also ich meine die liegen also jetzt in den letzten 4 MB die PageTables. Die PageTables sind doch jetzt als Pages gemappt, oder?
das heißt pt_virt_addr[pageTableIndex] sucht mir nun sozusagen jetzt die eben allozierte PageTable und mit pt_virt_addr[pageTableIndex][pageIndex] müsste ich doch dann Pages eintragen können.
Ich werd aus dem Tutorial nicht sehr schlau. Es ist am ende sehr knapp gehalten. Man weis nicht was man mit seinem vorherigen Code machen soll.
Ich kann nicht einfach all pmm_alloc aufrufe durch vmm_alloc ersetzen, schließlich arbeite ich vorher mit physischen adressen und ich kann keine virtuellen Adressen benutzen solange Paging noch nicht aktiv ist. So müsste ich es mir explizit verkneifen mir speicher zu holen, solange noch kein Paging nicht aktiviert ist. Ich muss vor dem Paging schon Speicher für den Context holen, muss diesen aber erstmal physisch haben. So nun verflucht, alle Pointer für die KOntexte sind momentan alle physisch. Jetzt brauch ich aber eine virtuelle Adresse für sie... Was nun?!