动态内存管理

本文探讨了动态存储管理的三种策略:首次拟合法、最佳拟合法和最差拟合法,分析了它们在不同场景下的适用性和时间效率。此外,还介绍了边界标识法,一种使用双重循环链表结构进行内存管理的方法,以及伙伴系统,其特点是块大小为2的幂次。选择内存管理策略需考虑用户需求、分配释放频率和系统效率等因素。
摘要由CSDN通过智能技术生成

动态存储管理:

若可利用的空间表有若干个不小于 用户所需大小为n的空闲块时,有三种分配策略:

 

1.首次拟合法:从表头指针开始查找可利用的空间表,将找到的第一个大小不小于n的空闲块的一部分分配给用户;

2.最佳拟合法:将可利用空间表中一个不小于n且最接近n的空闲块的一部分分配给用户。

3.最差拟合法:将可利用空间表中不小于n且是链表中最大的空闲块的一部分分配给用户。

 

区别:<1>最佳拟合法适用于请求分配的内存大小范围较广的系统,因为按最佳拟合法的原则进行分配时,总是找大小最接近请求的空闲块,由于此系统中可能产生一些存储甚小而无法利用的小片内存,同时也保留了那些很大的内存块以备响应后面将发生的内存量特大的请求,从而使整个链表趋向于结点大小差别甚远的状态;而最差拟合法每次都从内存量最大的结点中进行分配,从而使链表中的结点大小趋于均匀,因此它适合用于请求分配的内存下范较窄的系统;而首次拟合法是随机的,因此它介于两者之间,通常适用于系统事先不掌握运行期间可能出现的请求分配和释放的信息情况;            

      <2>从时间上来比较,首次拟合法在分配时需要查询可利空间表,而回收时仅需插入表头即可;最差拟合法恰恰相反,分配时无需查表,而回收时为将新的“空闲块”插入链表中的适当位置上,无需进行查找;而最佳拟合法无论分配还是回收,均需查找链表,因此最费时间;

总结:不同的情景需采取不同的方法,通常在选择时需考虑下列因素:

      <1>用户的逻辑要求;

      <2>请求分配量的大小分布;

      <3>分配和释放的频率以及效率对系统的重要性;                        

///

1、边界标识法:是操作系统中进行动态分区分配的一种存储管理方法;(最差拟合法)

   原理:系统将所有的空闲块链接在一个双重循环链表结构的可利用空间表中,每个内存区的头部和底部两个边界上分别设有标识,以标识该区域为占用块或空闲块;

# define MAX_SIZE 1000    //模拟内存总大小
# define e 10              //为了防止申请内存残余而限定的条件
typedef struct WORD       //用一个结构体来保存结点信息
{
	union
	{
		struct WORD *llink;  //指向前驱
		struct WORD *uplink; //指向本身
	};
	int ta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值