ARM·MMU
时间:11-24
来源:互联网
点击:
MMU的主要功能:1)设置权限 2)地址映射
(这里我们主要讲的是地址映射)
问题一:为什么要虚拟地址?
原因1:我们先来看一个问题,A程序需要10MB的内存,B程序需要110MB的内存,A和B同时运行就需要20M的内存,这时如果只剩下10M的内存,如果C程序需要20M的内存又该如何呢?所以这样对我们的物理内存的容量要求就十分的大。
原因2:如果这时候因为某些程序的退出,有了20M的内存,但这些内存不是连续的,是随机分配的,但是总共加起来有20M,可以让c程序运行,可是c程序没有确定的运行地址;
原因3:
这里使用物理地址的内存分配,试想一下如果B程序出错了,访问到了A程序的地址,修改了A程序的内存,那么A程序也就出错了。也就是说一个程序的崩溃引发多个程序的崩溃,这样导致系统十分不稳定。结合上面2个原因,我们就可以看出来,虚拟地址的发明的必要性。
(1)
分段方式映射内存
这样虽然解决了问题2,问题3,但是物理地址和虚拟地址是一一对应的关系,物理地址并没有得到扩大,容量依然十分小
(2)分页的方法(ARM中页的大小1MB)
分段的方法中,每次程序运行总是把程序全部装入内存;分页则是程序运行到哪页就为哪页分配内存
我们用一个例子来说明一下:
假设一个A文件在内存中被执行的时候,操作系统会先为改程序创建一个4GB的进程虚拟地址空间(并不是真实的空间,只是一种数据结构,就是页目和页表)
分页方法的核心思想就是当可执行文件执行到第x页时,就为第x页分配一个内存页y,然后再讲这个内存页添加到进程虚拟地址空间的映射表中,这个映射表就相当于一个y=f(x)的函数
ARMMMU地址映 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)