转载自:https://blog.csdn.net/wesley2005/article/details/81303435
(1)虚拟地址通过pte指令,找到pfn
假设虚拟地址为0xfffff880`00d5e9e0
0: kd> !pte 0xfffff880`00d5e9e0
VA fffff88000d5e9e0
PXE at FFFFF6FB7DBEDF88 PPE at FFFFF6FB7DBF1000 PDE at FFFFF6FB7E200030 PTE at FFFFF6FC40006AF0
contains 000000007FF84863 contains 000000007FF83863 contains 000000007FF8C863 contains 8000000000BE0963
pfn 7ff84 ---DA--KWEV pfn 7ff83 ---DA--KWEV pfn 7ff8c ---DA--KWEV pfn be0 -G-DA--KW-V
找到pte对应的pfn为0xbe0,单位是4k(4096)。
(2)根据pfn和相对地址,找到虚拟地址对应物理地址位置
pfn为0xbe0,则物理页地址是0xbe0000(0xbe0 × 0x1000)。
页内偏移为0x9e0(0xfffff880`00d5e9e0)
那么 物理地址=物理页地址+页内偏移 = 0xbe0000+0x9e0 = 0xbe09e0
(3)打印物理内存和虚拟内存
打印物理内存
0: kd> !dc 0xbe09e0
# be09e0 00000114 00000006 00000001 00001db1 ................
# be09f0 00000002 00000000 00000000 00000000 ................
# be0a00 00000000 00000000 00000000 00000000 ................
打印虚拟内存
0: kd> dc 0xfffff880`00d5e9e0
fffff880`00d5e9e0 00000114 00000006 00000001 00001db1 ................
fffff880`00d5e9f0 00000002 00000000 00000000 00000000 ................
fffff880`00d5ea00 00000000 00000000 00000000 00000000 ................
发现两者相同