一,基本概念介绍
内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。
内存管理单元主要涉及到两个方面:物理内存(Physical ADDress:PA)和虚拟内存(Virtual ADDress:VA)
(1)mmu的虚拟地址VA与物理地址PA
- 虚拟地址VA :在计算机技术中,把cpu的寻址空间简称为逻辑空间或者是虚拟空间,对应的地址成为虚拟地址也称为逻辑地址记为(Virtual chengxudoushiADDress:VA)从软件角度上看,程序都是在虚拟地址空间运行的,cpu发出的都是虚拟地址。mmu则是把虚拟地址转换成物理地址
- 物理地址PA:物理地址是指计算机中实际的内存地址,它对应着计算机中的物理存储单元。MMU通过页表或段表等数据结构,将逻辑地址映射为物理地址。逻辑地址是由程序生成的地址,它是相对于进程的虚拟地址空间的。
(2)MMU的访问权限检查
操作系统中,每个进程都有自己的地址空间,而MMU的作就是将进程的逻辑地址映射到物理地址上。在进行地址转换时,MMU会检查当前进程对内存的访问权限是否合法。
- MMU内存访问权限检查通常包括以下几个方面:
页表检查:MMU使用页表来进行地址转换,其中包含了每个页面的访问权限信息。当进行内存访问时,MMU会根据页表中的权限信息来判断当前进程是否有权访问该页面。
访问类型检查:MMU会检查当前内存访问的类型,例如读取、写入或执行。根据进程的权限设置,MMU会判断当前操作是否符合进程的访问权限。
进程权限检查:MMU会根据当前进程的权限设置来判断是否允许进行内存访问。每个进程都有自己的权限级别,例如用户态和内核态,MMU会根据进程所处的权限级别来进行权限检查。
内存保护检查:MMU还可以进行内存保护检查,例如检查是否存在内存溢出或越界访问等情况。通过设置合适的内存保护机制,可以有效地防止非法的内存访问。
总之,MMU内存访问权限检查是计算机系统中重要的一环,它通过地址转换和权限检查来确保进程对内存的访问是合法和安全的。
二:MMU的工作原理
MMU的工作原理是在CPU和内存之间建立一个地址转换的桥梁。当程序访问内存时,CPU会生成一个逻辑地址,然后将其发送给MMU。MMU根据页表或段表中的映射关系,将逻辑地址转换为物理地址,并将其发送给内存进行访问。
虚拟内存管理技术是基于程序可分段的,基本思想是将系统中的虚拟内存空间和物理内存空间划分成若干个大小相同的内存块,将虚拟内存空间中的内存块的地址映射成物理块的地址,这个地址映射可以在程序运行之前进行初始化阶段运行,也可以在程序运行时进行。
三,MMU的地址之间的转换(以S3C2440【ARM9内核】为例来了解)
(1)MMU的虚拟地址和物理地址的转换
ARM处理器的寻址空间为4GB,地址范围为0x0000 0000~0xffff ffff 。这段空间称为虚拟地址空间,在MMU使能开启后,ARM处理器所发出的地址都是虚拟地址VA。
ARM目标系统实际配置的存储器(包括外设)地址范围空间称为物理地址空间,其中的某个地址称为物理地址PA,它们对应的实际内存单元,CPU发出的虚拟地址最终必须转换成物理地址才能读写数据运行程序。
- ARM处理器(S3C2440)中虚拟地址到物理地址转换过程中,会涉及到3个地址概念:
- 虚拟地址(Virtual ADDress:VA)
- 变换后的虚拟地址(Modified Virtual ADDress)记为MVA
- 物理地址(Physical ADDress:PA)
注意:
在没有启动mmu时:
cpu,cache,mmu,外设等,所有部件都是使用物理地址(PA)实际地址
启动mmu之后,cpu发出的都是虚拟地址(VA),虚拟地址VA由硬件变换成MVA供cache,mmu使用,通过mmu转换成物理地址(PA),最后使用PA来读写内存和外设。
其中协处理器CP15也称为系统控制协处理器,它将内核cpu发出的va转换成mva
启动mmu之后:
cpu看到的使用的都是虚拟地址va
cache,mmu看到的是(输出的是)mva,它们将mva转换成PA(物理地址)
实际内存外设没看到VA,MVA,读写它们时使用的是PA
四,S3c2440是如何将cpu发出的VA转换成MVA的?
- CPU发出的虚拟地址(VA)包含了两部分:页表索引和页内偏移。
- 首先,s3c2440通过页表索引找到对应的页表项。页表是一个数据结构,用于存储虚拟地址与物理地址的映射关系。
- 通过页表项中的物理地址基址(Page Base Address)和页内偏移,可以计算出物理地址(MVA)。
- 最后,s3c2440将计算得到的物理地址(MVA)提供给存储器控制器,以完成内存访问操作。
五,MMU如何将MVA转换成PA
MMU通过页表来实现地址转换。页表是一个数据结构,它逻辑地址划分为固定大小的页,并将每个页映射到物内存中的一个或多个页帧。当访问一个逻辑地址时,MMU会根据页的映射关系将逻辑地址转为物理地址。
具体的MVA到PA的转换过程下:
1,CPU生成一个逻辑地址MVA)并发送给MMU。
2,MMU从逻辑地址中提取出页号和页内偏移。
3,MMU使用页号在页表中查找对应的页表项。
4,如果页表项有效,则从中获取对应的物理页帧号。
5,MMU将物理页帧号与页内偏移组合成物理地址(PA)。
6,MMU将物理地址返回给CPU,CPU可以使用该物理地址进行内存访问。