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