pfn叫做页帧,代表一个内存单元的物理起始地址,实际计算方法是pfn=phys/4K ,即物理内存地址除以4K就是页帧。 pfn和page的转换关系是。page = mem_map + (pfn - ARCH_PFN_OFFSET),ARCH_PFN_OFFSET 应该是第一个物理内存单元的页帧。第1个内存单元page = mem_map+( ARCH_PFN_OFFSET - ARCH_PFN_OFFSET) =...
前面我们说过其存在六个链表,虽然物理页的前后是确定的,但是相同属性的物理页却是通过 Flink 与 Blink 连接起来的,其并不是连接而是在页帧数据库中的位置,这个很好理解。 而MmPageLocationList数组中存储的各个属性物理页头部的地址,这样整个页帧数据库体系就很容易搭建起来了。 4)Windbg 遍历pfn 单个 __MMPFN数据...
假设物理内存从0地址开始,那么PFN等于0的那个页帧就是0地址(物理地址)开始的...memory的情况下,PFN(pageframe number)和mem_map数组index的关系是线性的(有一个固定偏移,如果内存对应的物理地址等于0,那么PFN就是数组index)。因此从PFN ARMv8(aarch64)页表建立过程详细分析【转】...
这样得到物理地址以后,首先将十六进制的低三位与成0,这样做是得到页的物理地址,这里指4K页的情况,然后通过页的物理地址减去mem_map的第一个元素的地址就得到了此页在mem_map数组中的下标(此处注意指针相减不是指针表示的地址相减,而是两者之间指针所表示元素类型的个数),此下标即为pfn,知道了在...