进程监视器中的地址是什么

进程监视器中的地址是什么

在进程监视器下,如果我们选择特定进程,然后选择其属性,在事件属性下,进程选项卡将显示每个单独库文件的地址,这些地址指的是什么?此外,堆栈下的地址指向虚拟或物理内存位置?

答案1

显示的所有地址都是虚拟的。它们是进程虚拟地址空间中 DLL 或其他映射文件的起始地址。“堆栈”选项卡中显示的地址也是虚拟的。

您可以在 Process Explorer 中看到类似的细分 - 在下方窗格中启用“DLL 视图”。VMmap 中也有类似的细分,但更详细。VMmap 包含每个可执行文件中“部分”的地址。将有一个部分用于代码,一个部分用于只读数据,一个部分用于“资源”等,以及一些控制信息。

实际上,x86/x64 上的虚拟内存操作系统很难直接使用(即引用)物理地址。一旦系统“虚拟化”,即在 CR0 中设置“分页启用”位(这在启动的早期发生),运行代码(无论是内核模式还是用户模式)断言的所有地址都会被 CPU 解释为虚拟地址,并且必须将其(使用页表中的信息)转换为物理地址,然后才能将其呈现给内存控制器。

操作系统中的内核代码当然会“管理”物理内存(例如,将其分配给需要它的进程)并操作页表条目和物理页码,但它不能直接通过内存的物理地址“引用”内存。

相关内容