关键词:内存管理单元(Memory Management Unit, MMU)、虚拟内存的机制、页式内存管理
1. 内存管理单元(Memory Management Unit, MMU)
- 现代处理器中对内存进行高效管理的功能单元
- 操作系统利用内存管理单元能够实现以下功能:
虚拟内存:有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序。为了使用虚拟内存,操作系统通常要设置一个交换分区(通常时硬盘),通过将内存中不活跃的数据放入交换分区以腾出物理内存来为其他的程序服务。
内存保护:将特定的内存块设置为读、写和可执行属性。
2. 问题:下面的程序两次运行的输出是否完全相同?为什么?
问题分析:理论上,不同进程在内存中的不同位置执行;因此全局变量的地址不同
输出结果:
两次运行结果全局变量的地址值相同,与理论分析的结果完全相反。
结果分析:
1)应用程序开发时,面对的内存为虚拟存储
2)虚拟内存模式下使用的内存地址为虚拟地址
3)每一个进程拥有独立私有的虚拟地址空间
4) 虚拟内存与实际物理内存无关,是一个假象的足够大的内存
3. 思考:内存需求量为1G的应用程序是否能够运行于硬件内存为256M的计算机?
程序在特定的时间内只执行程序中的局部代码,因此将需要执行的代码放入内存中,将执行过后的或暂时不需要执行的代码放入交换区中,这样就可以将一个大内存需求量的进程,在某个时间点或时间段内所需要的物理内存量是非常小的。
虚拟内存的意义:虚拟内存能够支持多个大内存需求量的进程同时运行于较小的物理内存中
交换区的作用:暂时存放当前执行的进程的多数代码
4. 虚拟内存的机制
- 虚拟内存需要重新映射到物理内存
- 虚拟地址映射到物理内存中的实地址
- 每次只有进程的少量代码在物理内存中运行
- 大部分进程代码位于存储器(交换区)中
5. 页式内存管理
- 页是内存单位,指的是定义好的一定的内存(如4K),根据不同的系统页可能不相同
- 虚拟内存和物理内存以页为单位管理
- 进程的活动页被载入内存时,记录页地址的映射关系
- 页式管理将内存分为两部分:(p, d)
p:地址高位,代表页面号
d:地址地位,代表页内偏移量
活动页中存放的时进程代码,当不需要这段进程代码时,活动页在交换区,当需要这段进程代码时,活动页就会加载到内存中
活动页在交换区时就会有一个虚拟地址,这个虚拟地址就是程序员做应用开发时所面对的地址,其地址分为地址高位(页面号)和地址低位(页内偏移量),地址值代表活动页的起始地址
当活动页加载到内存中时,活动页对应一个物理地址即为程序的实际物理地址,先将物理地址分为地址高位(页面号)和地址低位(页内偏移量)
活动页加载过程中会生成一个页映射表,这个映射表将虚拟页号和物理页号建立对应关系,以及这个页的属性(即这个页的内存特性)
-
当需要映射的虚拟地址没有在内存管理的页映射表中时,内存管理单元如何操作?
声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件和《专业嵌入式软件开发》所有!