天才教育网合作机构 > 培训机构 >

天才领路者

欢迎您!
朋友圈

400-850-8622

全国统一学习专线 9:00-21:00

位置:培训问答 > PTE考试如何找到相对应的pte-pde指针

PTE考试如何找到相对应的pte-pde指针

日期:2019-08-19 17:57:39     浏览:202    来源:天才领路者
核心提示: 我们首先明确一下这个问题也就是说你需要通过线性地址(因为开启了分页,这里也可以叫虚拟地址,我们下文都将这样称呼,假设需要找到虚拟地址vaddr)vaddr来找到对应它的PTE指针。 我们知道通过虚拟地址vaddr

  我们首先明确一下这个问题 也就是说你需要通过线性地址(因为开启了分页,这里也可以叫虚拟地址,我们下文都将这样称呼,假设需要找到虚拟地址vaddr)vaddr来找到对应它的PTE指针。   我们知道通过虚拟地址vaddr,我们经过页变化可以找到一个确定的物理地址phy_vaddr。现在我们想要找到的是指向这个phy_vaddr的pte指针,由于页表,页表项这些都是存在于内存中的,所以其对应的是实在的物理地址。于是我们现在的目的就是:通过一个虚拟地址得到物理地址。   嗯,听起来就让人很激动呀?   让我们先来回顾一下处理器处理 32 位地址的三个步骤: (1)首先处理高 10位 的 pde索引,从而处理器得到页表物理地址。 (2)其次处理中间 10 位 的 pte 索引,进而处理器得到普通物理页的物理地址 (3)*是把低 12 位 作为普通物理页的页内偏移地址,此偏移地址加上物理页的物理地址,得到的地址之和便是最终的物理地址,处理器到此物理地址上进行读写操作。也就是说,我们要创造的一个新的虚拟地址 new vaddr,它经过处理器以上三个步骤的拆分处理,最终会落到 vaddr 自身所在的 pte 的物理地址上。   *步:高10位的构成   那么分析到这里,我们就需要知道一个知识点:在页目录表中,*一个目录表项填的是页目录表自己的地址。   所以我们在构建新的虚拟地址的时候,在高10位,我们可以直接让其指向页目录表的*一位,然后本该得到页表物理地址的我们得到的还是页目录表的物理地址。   即图中Dir我们让其指向Page Directory的*一项,然后我们得到的还是一个指向Page Directory的指针,而并不是指向Page Table的指针。   由于页目录表也是4KB,所以为4*2^10 = 2^12 = 1024,由于其实下标为0,所以*一个表项为1023,对应的16进制为0x3ff,将其左移到高10位后,变为0xffc00000   第二步:中间10位的构成   现在我们的指针是指向页目录表的,如果按照之前的规则的话,我们此时看图,应该是Table与上一个结果相加,得到Physical Address Space的地址,而我们最终想得到的是指向物理地址Phy.Addr的那个指针,也就是我们想知道的pte指针,那么这一步我们就应该找到Page Table的地址。   所以,我们构造中间10位的时候,将原本的Dir作为偏移地址,这样,通过其与*步我们得到的页目录表的地址相加,就可以得到指向Page Table的指针,也就是我们要得到的页表的地址。

PTE考试如何找到相对应的pte pde指针

  于是中间10位的构成为图中Dir的值  第三步:低12位的构成   我们现在已经有了指向Page Table的指针了,那我们如何找到指向物理地址Phy.Addr的那个指针呢?我们可以想一下,初始的时候我们是通过加上Table的值得到指向物理地址Phy.Addr的指针的,所以我们此时也是将其作为低12位。   但是这里又有一个问题了,其为10位,而我们需要的是12位,怎么办呢?我们通过将其左移2位,即可得到新的地址,即将其值乘以4即可。同样pde指针也是同理,大家自己可以思考一下哦??

免责声明:本信息由用户发布,本站不承担本信息引起的任何交易及知识产权侵权的法律责任!

如果本页不是您要找的课程,您也可以百度查找一下: