关于PDE和PTE计算物理地址的问题
上一篇博客没有讲到这个问题,到多级页表就终止了,这里也算再续前缘~以作业题第四题为例,分享一下不同位机器如何通过PDE和PTE来映射物理内存。
首先我们先来回顾下一些基本概念。
PDE(页目录表项)
页目录表(PDT)的每一项元素称为页目录表项(PDE)
每个页目录表项指向一个页表(PTT)
每个页表的大小为4KB,即一个页表可以存储1024个页表项(PTE)
PTE(页表项)
页表(PTT)的每一个元素称为页表项(PTE)
页表项(PTE)所指向的才是真正的物理页
有图为:
可以理解为PDE是一级页表里的页表项,PTE是二级页表的页表项,这是一个二级页表。
你可以把PDE看成一个标号,这个编号从0开始,然后里面存的东西是一个指向下一级页表的指针,也就是PTE那个表,这个表也是从0开始编号的,类比一个数组,数组的元素是指针,指针指向一个新数组,ok,在上一个blog中呢,我们也说了,一级页表的基地址是存在一个寄存器中的,这个寄存器就是CR3。关于如何根据一个进程的页目录基地址和一个虚拟地址找到一个物理地址,接下来让我们看一下我们的这道作业题。
例题:
我们逐页分析来解答。先看条件: