Wie lautet die Adresse im Prozessmonitor

Wie lautet die Adresse im Prozessmonitor

Wenn wir unter „Prozessmonitor“ einen bestimmten Prozess auswählen, wählen wir seine Eigenschaft. Unter „Ereigniseigenschaften“ zeigt die Registerkarte „Prozess“ die Adresse für jede einzelne Bibliotheksdatei an und worauf beziehen sich diese Adressen? Zeigen die Adressen unter „Stapel“ auch auf einen virtuellen oder physischen Speicherort?

Antwort1

Alle angezeigten Adressen sind virtuell. Sie sind die Startadressen der DLLs oder anderer zugeordneter Dateien im virtuellen Adressraum des Prozesses. Die auf der Registerkarte „Stapel“ angezeigten Adressen sind ebenfalls virtuell.

Sie können eine ähnliche Aufschlüsselung im Process Explorer sehen – aktivieren Sie die „DLL-Ansicht“ im unteren Bereich. Und auch in VMmap, aber mit mehr Details. VMmap enthält die Adressen der „Abschnitte“ innerhalb jeder ausführbaren Datei. Es gibt einen Abschnitt für Code, einen für schreibgeschützte Daten, einen für „Ressourcen“ usw. sowie einige Steuerinformationen.

Tatsächlich ist es für ein Betriebssystem mit virtuellem Speicher auf x86/x64 äußerst schwierig, eine physische Adresse direkt zu verwenden, d. h. zu referenzieren. Sobald das System „virtuell wird“, d. h. das Bit „Paging Enable“ in CR0 setzt – was sehr früh beim Booten geschieht – werden alle vom laufenden Code (ob Kernel- oder Benutzermodus) geltend gemachten Adressen von der CPU als virtuelle Adressen interpretiert und müssen (mithilfe von Informationen aus den Seitentabellen) in physische Adressen übersetzt werden, bevor sie dem Speichercontroller präsentiert werden.

Der Kernelcode im Betriebssystem „verwaltet“ natürlich den physischen Speicher (z. B. indem er ihn Prozessen zuweist, die ihn benötigen) und bearbeitet Seitentabelleneinträge und physische Seitenzahlen, er kann den Speicher jedoch nicht direkt über die physischen Adressen des Speichers „referenzieren“.

verwandte Informationen