Какой адрес в Process Monitor?

Какой адрес в Process Monitor?

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

решение1

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

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

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

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

Связанный контент