Wie legt der Compiler den Code im Speicher an?

Ok, ich habe ein bisschen eine noob Studentenfrage.

Ich bin also mit der Tatsache vertraut, dass Stacks Unterprogrammaufrufe und Heaps Datenstrukturen variabler Länge enthalten und globale statische Variablen permanenten Speicherorten zugewiesen werden.

Aber wie funktioniert das alles auf einer weniger theoretischen Ebene?

Nimmt der Compiler nur an, dass er einen gesamten Speicherbereich von der Adresse 0 bis zur Adresse unendlich für sich alleine hat? Und dann einfach anfangen, Sachen zuzuweisen?

Und wo werden die Anweisungen, der Stapel und der Haufen angeordnet? Oben im Speicherbereich, Ende des Speicherbereichs?

Und wie funktioniert das dann mit virtuellem Speicher? Der virtuelle Speicher ist für das Programm transparent?

Es tut mir leid, dass ich ein paar Fragen habe, aber ich nehme Programmiersprachenstrukturen und sie beziehen sich immer auf diese Regionen und ich möchte sie auf einer praktischeren Ebene verstehen.

Vielen Dank im Voraus!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage