操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
2、内存管理的功能
看几个问题
功能1:内存空间的分配与回收
连续分配管理:
方法1:单一连续分配
方法2:固定分区分配
问题:如何对每一块分区进行记录呢?
方法3:动态分区分配
1、什么是动态分区分配?
一个接一个的放入。
2、系统用什么样的数据结构记录内存使用情况?
3、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(首次适应、最佳适应、最坏适应、临近适应)
4、如何进行分区的分配与回收操作?
能合并就合并
5、如何解决动态分区分配碎片化问题?
采用“拼凑”技术,就是将使用的存储空间拼接到一起,闲散的存储空间拼接到一起。例如现在内存中有互不相邻的三块空间:1K,3K,5K;现在有一个7K的程序要运行,但是由于内存空间不连续而无法运行,此时就需要将三块空间拼接。
非连续分配管理方式
功能2:内存空间的扩充
方法1、覆盖技术
看上图:
假设现在B、C不能同时放入内存,D、E、F不能同时放入内存;
所以:
可以将A放入固定区;(8K)
将B、C设置一个覆盖区用于存放B、C(只需10K)
将D、E、F设置一个覆盖区用于存放D、E、F(只需12K)
从而从逻辑上达到内存扩充的目的,以淘汰
方法2、交换技术
方法3、虚拟存储技术
功能3:地址转化
方法1、绝对装入
方法2、可重定位装入
装入后可执行文件中的地址都被修改为了物理地址,地址变换在装入时一次性完成
方法3、动态重定位
在装入后通过重定位寄存器和逻辑地址计算数据存放地址,即使程序移动后,也可以通过再次计算得到新的物理地址
功能4:存储保护
方法1:上下限寄存器法
用物理地址设置俩个上下界寄存器,CPU访问存储单元时判断是否在上下界寄存器地址范围内
方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限长寄存器)
重定位寄存器:存放起始物理地址
界地址寄存器:存放最大逻辑地址
此时,CPU想要访问逻辑地址80,首先要与界地址寄存器比较判断是否越界,未越界则访问物理地址:80+100=180.