[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位的虚拟地址。
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位的虚拟地址。
相关文章推荐
- 6.艰难学习Linux系统之内存管理MMU
- [Linux内存]linux内存学习(四)——MMU
- 轻松学习Linux之认识内存管理机制
- Linux学习记录--内存交换空间的构建
- [Linux内存]slub分配器学习笔记(一)--基本概念
- linux内存操作--ioremap和mmap学习笔记
- [linux内存]伙伴系统学习笔记(三)--分配器API
- Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
- linux内存学习笔记(二)——设备地址到用户空间
- Linux(ubuntu)下30天自制os学习引导,第3.0天(读取u盘第二扇区到内存)
- arm-linux内存管理学习笔记(1)-内存页表的硬件原理
- linux学习之二十三---共享内存
- Linux学习记录--内存交换空间的构建
- Linux学习总结—内存结构、启动和进程空间
- linux内存操作--ioremap和mmap学习笔记
- Linux内存管理学习笔记——内存寻址
- Linux进程间通信——IPC共享内存学习笔记
- Linux内核驱动学习(四)----内存管理子系统
- linux内存操作--ioremap和mmap学习笔记
- linux 进程学习笔记-共享内存