文章目录
旨在系统理解mmu,带着问题来理解原理,本文以armv7进行说明。
1.虚拟地址 物理地址 逻辑地址 线性地址 运行地址之间的联系?
逻辑地址是由编译器所产生的符号表里面的地址(可以使用binutils工具查看可执行文件的符号表);
(逻辑地址通过段映射为线性地址(虚拟地址为中间层),如果未开启二级映射,其实就是物理地址。这个是x86中的说法)因为arm将最开始的地址称为VA即virtual address,即虚拟地址,然后有一个中间层的地址,最后到物理地址。
不要被这些地址的名字所蒙蔽,先看原理再回过头看看就是有清晰的认知。
物理地址、运行地址是一样的,比如符号表产生的汇编代码的地址为0x12345678,在没有mmu的情况下,运行地址也必须是0x1234567才能保证指令的正确运行,否则有可能会出错。mmu的出现便是一种较好的解决方法。
2.MMU是什么?以及有mmu有什么作用?
MMU即memory management unit内存管理单元,提供了关于内存的重要功能,使得多任务变得可能,可以使得内核任务的所访问地址是独立的,然后通过mmu转换为实际的物理地址,而无需人为的重定位。
3.MMU、RAM与arm core之间的关系?

arm核访问虚拟地址,通过mmu转换为实际的物理地址,可以简单认为mmu就是一个转换表,实现虚拟地址到物理地址之间的转换。
4.MMU的TLB与配置
何为TLB,缩写为Translation Lookaside Buffe,其实还是个表格,只不过这个表格的查找速率远远大于RAM内部的表格,转换虚拟地址至物理

本文深入探讨了ARMv7架构下的内存管理单元(MMU)及其工作原理,包括虚拟地址、物理地址、线性地址之间的关系,MMU的作用,以及MMU如何通过TLB进行地址转换。详细阐述了一级映射的1M Section和二级映射的4K Page映射方式,解析了页表项格式和地址计算过程,为理解MMU在多任务环境中的内存管理和地址转换提供了清晰的指导。

8563

被折叠的 条评论
为什么被折叠?



