Im folgenden Link gibt die Antwort von Sdaz MacSkibbons einen kurzen Überblick über den Prozessadressraum auf virtuellen Adresssystemen.Prozessadressraum auf virtuellen Adresssystemen
What happens when a computer program runs?
Nehmen wir nun an jeder Prozessraum 4 GB virtuellen Adresse bekommt. Nun bedeutet das, dass die oberen Adressen dieses virtuellen Adressraums einen Stack-Teil erhalten (angenommen, die Stack-Adresse beginnt bei 0) und der Adressraum von unten wird Text, Daten, Globals und Heap zugewiesen. Da sich die Größe des Heapspeichers ändert, werden neue malloc-Zuordnungen die virtuellen Adressraumseiten direkt dem realen Speicher zuordnen oder prüfen, ob die zuvor zugewiesenen virtuellen Adressseiten frei/verfügbar sind. Und wie wäre es, wenn wir eine große Menge an Heap-Speicher, wie zum Beispiel mehr als 4 GB, benötigen, als wie unterstützt der Prozess das?
Vielen Dank im Voraus.
Hängt vom Betriebssystem ab. Erstellen Sie ein C-Programm mit printf mit% p, um die Adressen lokaler Variablen (stacK) im Vergleich zu zugewiesenen (malloc()) Variablen im Vergleich zu Adressen von statischen Variablen (Programmdaten) im Vergleich zu Adressen von Funktionen (Zeiger auf Funktion) auszugeben. .... Ein Teil des virtuellen Adressraums wird für das Betriebssystem verwendet. Es gibt auch einige Daten, die sich auf jeden laufenden Thread beziehen (wie der Startwert für rand()) (FS- oder GS-Segmentregister können verwendet werden, um auf diesen zuzugreifen, oder er könnte in den virtuellen Adressraum abgebildet werden). – rcgldr