Pain-maker
Mitglied
So überraschend ist das nicht. Wenn bei jedem Programmlauf die selbe Folge von Speicherallokationen erfolgt, ist es doch nachvollziehbar, dass das Betriebssystem immer dieselben Speicherbereiche vergibt. Ich denke ihr macht bei euren Überlegungen den Fehler, dass ihr davon ausgeht, diese Speicheradressen wären physische Adressen. In Wirklichkeit handelt es sich aber um virtuelle Adressen.
Dass man im Allgemeinen nicht davon ausgehen kann, ist klar. Aber verwunderlich ist es auch nicht, wenn es mal passiert. Wo andere Programme im physischen Adressraum liegen hat ja keine Auswirkung auf meinen virtuellen Adressraum.
Der Einstiegspunkt eines Programms befindet sich immer an derselben virtuellen Speicheradresse. Und nur mit virtuellen Adressen hat man es in einem Benutzer-Programm zu tun. Ich glaube so ganz hast du das Prinzip der virtuellen Speicherverwaltung noch nicht verstanden…
Grüße,
Matthias
Welche virtuelle Adresse ist das denn? Abgesehen davon rede ich die ganze Zeit ja von virtuellen und NICHT von physikalischen Adressen.
Hab eben mal 2 exakt gleiche Programme geschireben und die Adresse von main() geprüft, aber beide haben eine andere.
Wenn beide aber die gleiche Startadresse hätten, müsste ja auch demnach die Adresse der main() identisch sein, oder?
Mfg Pain-maker
Edit: Meines Wissens nach ist das mit dem Einstiegspunkt übrigens Compiler und/oder OS abhängig. Aber wenn ich da was missverstanden hab, lasse ich mich gerne belehren
Zuletzt bearbeitet: