您的位置:首页 > 运维架构 > Linux

[Linux内存]linux内存学习(四)——MMU

2014-04-09 19:54 323 查看
1,ARM MMU

ARM体系结构与编程第五章

MMU的基本概念:

MMU基本原理

系统通过MMU将物理地址映射成虚拟地址,最小单位为页,虚拟地址空间一个页对应物理地址的一个页框

ARM MMU原理

虚拟地址映射到物理地址的原理:页表是实现虚拟地址到物理地址转换的一个重要手段。我们在使用MMU以前,需要在内存中新建一个页表。表中的每一行(即一个字的大小)

存放的是一个物理内存页的基地址,该页的访问权限和缓冲特性等,这里将页表中这样的一行称为一个地址变换条目。页表存放在内存中,CP15的C2寄存器用来存放页表的基地址。虚拟地址被MMU分为两部分,,第一部分是页号索引(page Index),第二部分则是相对该页首地址的偏移量(offset)当CPU访问一个地址时,该地址是虚拟地址,于是该地址被送到MMU,MMU再根据虚拟地址的高几位作为页号索引,在页表中寻找对应的地址变换条目。从地址变换条目中找到物理地址的页基地址,再加上虚拟地址中的偏移量,便得到了真正的物理地址,然后由MMU将物理地址发送到地址总线上,访问物理内存。

一级页表举例:CPU要访问0x300008的地址,此地址为虚拟地址。MMU会根据页索引号(也就是 0x3 )找到相对页表基地址偏移量为0x3的项。

这个项中的物理段基地址为0x006。物理地址 = (0x006<<20)+0x8=0x600008

2,ARM64 MMU

ARM64位(ARMv-8)中可以支持48位的虚拟地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: