0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MMU多级页表映射过程

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-11-26 16:28 次阅读

物理页面大小一级地址总线宽度不同,页表的级数也不同。以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],这样就构成了物理地址,至此处理器完成了一次虚拟地址到物理地址的查询与翻译的工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18298

    浏览量

    222217
  • 操作系统
    +关注

    关注

    37

    文章

    6290

    浏览量

    121898
  • MMU
    MMU
    +关注

    关注

    0

    文章

    91

    浏览量

    17945
收藏 人收藏

    评论

    相关推荐

    关于MMU的一级为什么必须是16K对齐

    哪位仁兄知道:MMU的一级为什么必须是16K对齐,最好有计算公式~~~谢谢!!!
    发表于 02-14 23:46

    关于MMU的问题

    刚开始学,好多东西都云里雾里的TT为什么在bootloader里要进行初始化然后开启MMU,然后在进入内核后还要创建开启
    发表于 05-06 17:25

    关于ARM地址映射的理解

    (用于段模式)二级(用于页模式)什么是呢?就是存储在内存中(会被拷贝到SDRAM中存
    发表于 12-08 09:37

    带你走进嵌入式ARM MMU神秘的内部世界

    说了。针对这种section page translation,mmu硬件执行虚拟地址转物理地址的过程如下: 以上在初始化过程使用的临时
    发表于 08-22 11:22

    ARM MMU 理解(基于ARM 920T)

    被用户应用程序所访问的。通过MMU可以控制地址空间的访问权限,从而保护这些代码不被破坏。MMU的实现过程,实际上就是一个查表映射过程。建立
    发表于 08-29 11:10

    MMU映射的地址访问会怎么处理?

    `访问一个MMU表里没有填写映射描述符的虚拟地址,会发生什么?百度没有找到明确的解答,求前辈指导。`
    发表于 06-25 09:40

    MMU的产生及MMU工作过程详解

    号为2,框2的物理地址范围是8192~12287,故MMU将虚拟地址1026映射为物理地址9218(框首地址+偏移量=8192+1026=9218)。以上就是
    发表于 07-03 08:19

    ARM11 S3C6410的地址

    映射方式为段映射,且映射粒度为16M时,映射图如下: 虚拟地址到物理地址的映射过程如下: 虚拟地址的[31:24]位存放一级
    发表于 08-17 00:53

    裸机加强版MMU章节创建,地址映射相同

    ARM裸机1期加强版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */创建
    发表于 04-18 07:45

    为什么我把MMU裸机程序修改成两级后程序编译时提示找不到‘memset’函数?

    在看完MMU例程之后,我在原来程序的基础上把一级改成了两级,用一个粗和一个小
    发表于 08-07 22:20

    映射过程映射到FPGA上的LUT时利用率都会达到0%是为什么?

    嗨,大家好,我遇到了Xilinx ISE映射过程的棘手问题。当我综合我的设计时,我得到了一些FPGA资源的利用。虽然在映射过程映射到FPGA上的LUT时,所有利用率都会达到0%。他很可能是由于
    发表于 06-13 09:57

    ARM的内存管理(MMU)是如何实现的?

    是不希望被用户应用程序所访问的。通过 MMU 可以控制地址空间的访问权限,从而保护这些代码不被破坏。二 MMU 地址映射的实现MMU 的实现过程
    发表于 10-23 15:29

    【HarmonyOS】虚拟地址<->物理地址是如何映射

    池}LOS_ArchMmuMap 生成L1,L2表项,实现映射过程mmu的map 就是生成L1,L2表项的
    发表于 11-03 16:20

    鸿蒙内核源码分析(内存映射篇):虚拟地址与物理地址之间是如何映射

    ));//释放内存池}LOS_ArchMmuMap 生成L1,L2表项,实现映射过程mmu的map 就是生成L1,L2表项的
    发表于 11-19 10:52

    详解ARMv8-A系列CPU的MMU隐射查找过程

    状态,MMU的选取又能分为几种方式。本文首先分析异常级别、执行状态、MMU选取三者之间的
    发表于 08-09 17:18