操作系统内存管理
逻辑地址即虚拟地址,存在目的即为了更充分地利用物理内存,对于一个32的操作系统,虚拟内存大小为4G,所以每个程序都以为自己有4G的内存,算是让内存“无限大”。
为了更好地利用内存空间,我们把内存进行分页,即按照页单位进行获取内存,虚拟内存和物理内存都进行了分页处理,为了区分两者,我们把虚拟内存的称为页,而物理内存的称为帧。而我们需要根据虚拟内存找到对应的物理内存,这就是内存映射,用来存储映射关系的,我们称为页表,页表里有页号和帧号的对应关系。而物理内存是有限的,所以我们需要一些额外的磁盘,这样页表中关于帧号这一栏可能存放的磁盘,那么当我们找到磁盘时,这时就会发生缺页中断,触发程序进入内核态,内核就把那一帧数据加载到内存,若此时内存已满,这时就会采用一些页的置换算法,把内存中的一帧和磁盘中的那一帧进行交换。
由于页表也占用内存,所以会导致内存浪费,且中间有查表操作,效率也会有降低,所以有内存映射的一些优化方法:(1)时间优化:采用快表 快表中存放的是最近经常用到一些内存,大小较小,可以直接加载到CPU中,所以提高速率;(2)空间优化 采用多级页表;(3)分段 即虚拟内存进行分段
虚拟内存分段示意图: