Hallo!
1.) Ich habe 4GB RAM und eine Page Size von 0x1000 Bytes am Rechner.
Heißt das ist habe 4GB (Ist das Hex oder Dec?) / 0x1000 = Pages seitens des Betriebssystems die ich benutzen kann?
2.) Jetzt starte ich einen Prozess und will rein testhalber
DWORD* dwPEHeader = (DWORD*) 0x4000E8;
printf("%x\n" , *dwPEHeader);
mir diese 4 Bytes anzeigen lassen, wobei das die Baseadresse ist vom .exe Modul.
Wie komme ich dann auf die tatsächlich Adresse im RAM? Wo doch jeder Prozess diese Adresse im virtuellen Speicher völlig unabhängig verwenden kann?
Die CPU muss ja dann die Page wissen wo das steht und da dann noch den Offset hinzufügen von den Daten dort? Weil sonst lande ich ja immer bei derselben Adresse im RAM?
Ist diese Erweiterung des Adressbereiches ein Grund für das verwenden von Pages, neben der Tatsache dass es keine ungenutzten Lücken unterschiedlicher Größe gibt im RAM?
Lg