| Zeile 52: | Zeile 52: | ||
== Speicher mappen == | == Speicher mappen == | ||
| − | Um | + | Um eine beliebige physikalische Adresse auf eine beliebige virtuelle Adresse zu mappen, muss man erst den richtigen Eintrag im Pagedirectory und den in der Pagetable berechnen um schließlich die physikalische Page(mit den passenden Flags) in der Pagetable eintragen zu können. Es wird immer von virtuell nach physikalisch zugeordnet, d.h wenn man 0xB8000(phys.) auf 0x12345000(virt.) mappen will, muss man erst den Pagedirectory- und Pagetable-Eintrag von 0x12345000 berechnen. Das geht am besten so: |
| − | + | Pagedirectory_Eintrag = virtuelle_adresse >> 22 (= 0x48) | |
| − | + | Pagetable_Eintrag = (virtuelle_adresse >> 12) % 1024 (= 0x345) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | Nun suche | + | Nun suche man erst die Adresse der Pagetable (im eben berechneten ''Pagedirectory_Eintrag'' schauen). '''Achtung:''' Es handelt sich hier um die physikalische adresse. |
| + | Mit der Adresse der Pagetable kann man jetzt in den ''Pagetable_Eintrag'' die physikalische Adresse eintragen, die passenden Flags setzen und schon ist die Page gemappt. | ||
== In physikalischen Speicher schreiben == | == In physikalischen Speicher schreiben == | ||