免费地方网站宜城网站开发
news/
2025/9/23 21:02:42/
文章来源:
免费地方网站,宜城网站开发,网站开发gxjzdrj,有域名怎么注册邮箱说明一下这个三级页表的查询#xff0c;会需要上面的L2,L1,L0 如果在二级页表level就是2#xff0c;PGSHIFT是12#xff0c;那么就是往左移129*2位置#xff0c;在9bit就得到L2#xff0c;其他以此类推 也表查询#xff0c;首先有跟页表的地址pagetable#xff0c;…
说明一下这个三级页表的查询会需要上面的L2,L1,L0 如果在二级页表level就是2PGSHIFT是12那么就是往左移129*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那么我们有这样的最后一级页表 这个页表的地址我们需要存在上一级页表里存这个页表的物理地址地址那么很显然对于两个虚拟内存的L1来说都是xxxxxxxx0跟页表同理放次级页表的物理地址。
最后再由stap寄存器放根页表的物理地址。
那么顺着来就是这样我们需要映射一片连续的虚拟地址空间那么我们从所有物理页里面拿一份作为我们的物理地址根据索引L2来选择在根页表的某一个地方来记住这个物理地址完全是看虚拟地址的需要
然后在根据L1在次级页表选择一个地方放子页表的地址
最后根据L0来在子集页表里面放两个项用来找实际的物理地址这里面表所存的物理地址是不需要连续的这是操作系统分配的连续的只是索引。
这里的每一次索引都会到内存上去找东西也就是到物理地址上找
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913877.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!