mmu 二级页映射分析

3 篇文章 0 订阅
3 篇文章 0 订阅

上图是通过二级页表虚拟地址映射物理地址的流程图

简单的介绍下:

取出一级页表基地址(mmu c2寄存器中)的高18位和虚拟地址的高12位、低两位为large page的标志01组成了一级映射中存放相应二级映射的地址。通过一级映射中对应地址的值,我们就可以找到与二级映射中的地址有关的数据,这次只把2-9位用虚拟地址中的2-9位代替,低两位用small page的标志10组成,这样就得到了二级映射的地址。经过查询我们得到了相应二级页表中的内容,从而得到了所对应的物理地址。

如果这种解释方法太抽象,我们将用另一种解释方法:

我们把虚拟地址分成3个部分,高12位,中间8位和低12位。一级页表中用到的是虚拟地址中的高12位,这十二位可以当做一级页表的下标(页表的结构类似于数组),二级页表用到的是中间8位。其中一级页表项的内容是以1M方式对齐的(xxx00000),这里的1M是指与一级页表项对应的物理地址以1M方式对齐。二级页表项的值是以4k方式对齐的(xxxyy000),4k是指二级页表项对应的物理地址是以4k方式对齐。一级页表项(xxx00000)->二级页表项(xxxyy000)->物理内存(xxxyyzzz),其中zzz是指4k块大小中的偏移量。一级页表的大小是4k,二级页表的大小是256字节。

我们在程序中看一下二级页表的建立:


ttb_init 通过流程图建立一级页表和二级页表

一级页表项对应物理内存以1M递增,二级页表项对应物理内存以4K递增(0x100)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值