物理页面大小一级地址总线宽度不同,页表的级数也不同。以AArch64运行状态,4KB大小物理页面,48位地址宽度为例,页表映射的查询过程如图:
对于多任务操作系统,每个用户进程都拥有独立的进程地址空间,也有相应的页表负责虚拟地址到物理地址之间的转换。MMU查询的过程中,用户进程的一级页表的基址存放在TTBR0。操作系统的内核空间公用一块地址空间,MMU查询的过程中,内核空间的一级页表基址存放在TTBR1。当TLB未命中时,处理器查询页表的过程如下:
• 处理器根据虚拟地址第63位,来选择使用TTBR0或者TTBR1。当VA[63]为0时,选择TTBR0,TTBR中存放着L0页表的基址。
• 处理器以VA[47:39]作为L0的索引,在L0页表中查找页表项,L0页表有512个页表项。
•L0页表的页表项中存放着L1页表的物理基址。处理器以VA[38:30]作为L1索引,在L1页表中找到相应的页表项,L1页表中有512个页表项。
•L1页表的页表项中存放着L2页表的物理基址。处理器以VA[29:21]作为L2索引,在L2页表中找到相应的页表项,L2页表中有512个页表项。
•L2页表的页表项中存放着L3页表的物理基址。处理器以VA[20:12]作为L1索引,在L3页表中找到相应的页表项,L3页表中有512个页表项。
•L3页表的页表项里,存放着4KB页面的物理基址,然后加上VA[11:0],这样就构成了物理地址,至此处理器完成了一次虚拟地址到物理地址的查询与翻译的工作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
哪位仁兄知道:MMU的一级页表为什么必须是16K对齐,最好有计算公式~~~谢谢!!!
发表于 02-14 23:46
刚开始学,好多东西都云里雾里的TT为什么在bootloader里要进行页表初始化然后开启MMU,然后在进入内核后还要创建页表开启
发表于 05-06 17:25
被用户应用程序所访问的。通过MMU可以控制地址空间的访问权限,从而保护这些代码不被破坏。MMU的实现过程,实际上就是一个查表映射的过程。建立
发表于 08-29 11:10
`访问一个MMU的页表里没有填写映射描述符的虚拟地址,会发生什么?百度没有找到明确的解答,求前辈指导。`
发表于 06-25 09:40
号为2,页框2的物理地址范围是8192~12287,故MMU将虚拟地址1026映射为物理地址9218(页框首地址+偏移量=8192+1026=9218)。以上就是
发表于 07-03 08:19
映射方式为段映射,且映射粒度为16M时,映射图如下: 虚拟地址到物理地址的映射过程如下: 虚拟地址的[31:24]位存放一级
发表于 08-17 00:53
ARM裸机1期加强版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */创建页
发表于 04-18 07:45
在看完MMU例程之后,我在原来程序的基础上把一级页表改成了两级页表,用一个粗页和一个小
发表于 08-07 22:20
嗨,大家好,我遇到了Xilinx ISE映射过程的棘手问题。当我综合我的设计时,我得到了一些FPGA资源的利用。虽然在映射过程中映射到FPGA上的LUT时,所有利用率都会达到0%。他很可能是由于
发表于 06-13 09:57
是不希望被用户应用程序所访问的。通过 MMU 可以控制地址空间的访问权限,从而保护这些代码不被破坏。二 MMU 地址映射的实现MMU 的实现过程
发表于 10-23 15:29
));//释放内存池}LOS_ArchMmuMap 生成L1,L2页表项,实现映射的过程mmu的map 就是生成L1,L2页表项的
发表于 11-19 10:52
状态,MMU页表的选取又能分为几种方式。本文首先分析异常级别、执行状态、MMU页表选取三者之间的
发表于 08-09 17:18
对于一个有MMU的CPU而言,MMU开启后,CPU是这样寻址的:CPU任何时候,一切时候,发出的地址都是虚拟地址,这个虚拟地址发给MMU后,MMU通过
发表于 02-02 14:08
•1.1w次阅读
Translation and Protection) 页表基址寄存器存储了第一级页表的基地址,通过访问该寄存器,就能知道页
发表于 10-08 11:52
•1311次阅读
页命中、缺页 (1)页命中 • a) 处理器要对虚拟地址VA进行访问。 • b) MMU的TLB没有命中,通过TWU遍历主存页表中的PTEA
发表于 11-26 16:19
•1120次阅读
评论