Какой адрес в мониторе процесса

308
FunctionBlock

В Process Monitor, если мы выбираем конкретный процесс, затем выбираем его свойство, в свойствах события на вкладке процесса отображается адрес для каждого отдельного файла библиотеки и к чему относятся эти адреса? Также адреса в стеке указывают на виртуальную или физическую память?

0

1 ответ на вопрос

1
Jamie Hanrahan

Все указанные адреса являются виртуальными. Это начальные адреса библиотек DLL или других сопоставленных файлов в виртуальном адресном пространстве процесса. Адреса, показанные на вкладке Stack, также являются виртуальными.

Вы можете увидеть похожую разбивку в Process Explorer - включите «представление DLL» в нижней панели. А также в VMmap, но более подробно. VMmap включает в себя адреса «разделов» в каждом исполняемом файле. Будет один раздел для кода, один для данных только для чтения, один для «ресурсов» и т. Д., Плюс некоторая управляющая информация.

На самом деле для операционной системы виртуальной памяти на x86 / x64 крайне сложно напрямую использовать физический адрес, то есть ссылаться на него. Как только система «становится виртуальной», то есть устанавливает бит «Paging enable» в CR0 - что происходит очень рано при загрузке - все адреса, заявленные работающим кодом (будь то ядро ​​или пользовательский режим), интерпретируются ЦП как виртуальные адреса, и должны быть переведены (используя информацию из таблиц страниц) в физическую, прежде чем они будут представлены контроллеру памяти.

Код ядра в ОС, конечно, «управляет» физической памятью (например, назначая ее нуждающимся процессам) и управляет записями таблицы страниц и номерами физических страниц, но он не может напрямую «ссылаться» на память через физические адреса памяти.

Похожие вопросы