多级页表查询

说明一下这个三级页表的查询,会需要上面的L2,L1,L0

下面的函数是用来遍历页表的时候对虚拟地址使用的

对于PX,如果在二级页表level就是2,PGSHIFT是12,那么就是往左移12+9*2位置,在&9bit就得到L2,其他以此类推

页表查询,首先有根页表的地址pagetable,这是一个指针,然后我们拿到L2作为索引,就可以在根页表里面找512个项

下一级页表地址测试右移10位(去掉标志),然后填充12个零得到,这个就是下一级页表的地址

这里返回了最后一级页表的某一项,然后我们把这个项拿到拼上最后12位,就得到了物理地址

下面说说页表到底怎么映射

首先,一共56位,12位是4096,是一页,所以理论上物理内存有2^44个页表

假设我们现在程序内存上站两个物理页大小,那么虚拟地址上表现就是

|    25    |  L2(9) |   L1(9)  | xxxxxxxx1 | offset(12) |

|    25    |  L2(9) |   L1(9)  | xxxxxxxx0 | offset(12) |

这样是两个物理页大小连续的虚拟地址,

那么页表需要映射这两页,

offset提供索引,所以最后一级页表内存肯定是这俩物理页的实际地址,分配物理地址的页表不需要连续,我们只需要拿出两个物理地址页就好了,假设物理地址分别是x和y,那么我们有这样的最后一级页表

也就是说L0用来索引,是最后一级页表的哪两个位置放着这俩物理页,然后存的是物理页的起始地址,那么那这个起始地址,使用最后的offset来索引,就能使用两个物理页,一共4096*2的内存空间

这个页表的地址,我们需要存在上一级页表里,存这个页表的物理地址地址,那么很显然对于两个虚拟内存的L1来说,都是xxxxxxxx0,跟页表同理,放次级页表的物理地址。

最后再由stap寄存器放根页表的物理地址。

那么顺着来就是这样,我们需要映射一片连续的虚拟地址空间,那么我们从所有物理页里面拿一份作为我们的根页表,然后这个页表地址我们在进程运行的时候会放进寄存器里,根据从虚拟地址中提取的索引(L2)来选择在根页表的某一个地方来记住这个物理地址(完全是看虚拟地址的需要,因为2^9是512,L2的9bit就决定了是512中的哪一个)

然后在根据L1在次级页表选择一个地方,放子页表的地址

最后根据L0来在子集页表里面放两个项,用来找实际的物理地址,这里面表所存的物理地址是不需要连续的,这是操作系统分配的,连续的只是索引。

这里的每一次索引,都会到内存上去找东西,也就是到物理地址上找

  • 29
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值