微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM·MMU

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)的函数

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top