什么是页表项? 50
什么是页表项?什么是物理块大小?和逻辑地址、物理地址有什么关系……物理块占用大小和页表项占用大小又是什么关系……有点绕搞不明白……要是看得懂就不用问啦,50分都那么不给力...
什么是页表项?什么是物理块大小?和逻辑地址、物理地址有什么关系……
物理块占用大小和页表项占用大小又是什么关系……
有点绕搞不明白……
要是看得懂就不用问啦,50分都那么不给力
用点简单通俗的语言解释吧 展开
物理块占用大小和页表项占用大小又是什么关系……
有点绕搞不明白……
要是看得懂就不用问啦,50分都那么不给力
用点简单通俗的语言解释吧 展开
展开全部
以x86的机器为例,当允许paging的时候:
页表分了两级,32位地址被划分为10,10,12
CR3寄存器装了第一级页表(也叫页目录)的物理地址,这个地址一定是对齐到一个页框的边界的。这个对应的页框将装着第一级页目录,也就是说,页目录用掉了4KB,其中含有1024个页目录项,每个项占4Byte。这每个4byte就是你所要问的东西了。每个项有20位是下一级的一个页表的位置(为什么是20位呢?因为intel设计的页表是对其到4KB的边界的,于是只要20位地址,再左移12位就得到了这个地址)。而另外的12位用于存放一些控制位,常见的有present,user, dirty, accessed,r/w等,具体的查intel的开发者手册,上面讲的很详细。页表项和页目录项内容差不多,稍有区别。
为了定位一个虚拟地址(在x86里应该是分段后的地址,叫线性地址),先拆出前10位,配合CR3找到相应的页目录项,然后得到了对应页表的地址,在没有错误的情况下再把线性地址的中间10位拿出来找到相应的页表项,然后就读出了20位(还没左移12位,页框肯定是对齐到4KB的边界的)的这个线性地址对应的页框,再加上12位就得到了物理地址。
页表分了两级,32位地址被划分为10,10,12
CR3寄存器装了第一级页表(也叫页目录)的物理地址,这个地址一定是对齐到一个页框的边界的。这个对应的页框将装着第一级页目录,也就是说,页目录用掉了4KB,其中含有1024个页目录项,每个项占4Byte。这每个4byte就是你所要问的东西了。每个项有20位是下一级的一个页表的位置(为什么是20位呢?因为intel设计的页表是对其到4KB的边界的,于是只要20位地址,再左移12位就得到了这个地址)。而另外的12位用于存放一些控制位,常见的有present,user, dirty, accessed,r/w等,具体的查intel的开发者手册,上面讲的很详细。页表项和页目录项内容差不多,稍有区别。
为了定位一个虚拟地址(在x86里应该是分段后的地址,叫线性地址),先拆出前10位,配合CR3找到相应的页目录项,然后得到了对应页表的地址,在没有错误的情况下再把线性地址的中间10位拿出来找到相应的页表项,然后就读出了20位(还没左移12位,页框肯定是对齐到4KB的边界的)的这个线性地址对应的页框,再加上12位就得到了物理地址。
展开全部
分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。页表可看做简单的220个物理地址数组。线性到物理地址的映射功能可以简单地看做进行数组查找。线性地址的高20位构成这个数组的索引值,用于选择对应页面的物理(基)地址。线性地址的低12位给出了页面中的偏移量,加上页面的基地址最终形成对应的物理地址。由于页面基地址对齐在4K边界上,因此页面基地址的低12位肯定是0。这意味着高20位的页面基地址和12位偏移量连接组合在一起就能得到对应的物理地址。
页表中每个页表项的大小为32位。由于只需要其中的20位来存放页面的物理基地址,因此剩下的12位可用于存放诸如页面是否存在等的属性信息。如果线性地址索引的页表项被标注为存在的,则表示该项有效,我们可以从中取得页面的物理地址。如果页表项中信息表明(说明、指明)页不存在,那么当访问对应物理页面时就会产生一个异常。
更加详细请参考《操作系统》
页表中每个页表项的大小为32位。由于只需要其中的20位来存放页面的物理基地址,因此剩下的12位可用于存放诸如页面是否存在等的属性信息。如果线性地址索引的页表项被标注为存在的,则表示该项有效,我们可以从中取得页面的物理地址。如果页表项中信息表明(说明、指明)页不存在,那么当访问对应物理页面时就会产生一个异常。
更加详细请参考《操作系统》
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
页表项就是包含虚页号和实页号的项
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询