八章节动态存储管理.ppt
《八章节动态存储管理.ppt》由会员分享,可在线阅读,更多相关《八章节动态存储管理.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、八章节动态存储管理 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望动态存储管理概述动态存储管理概述p存储原理n计算机内存在刚开始工作时,空闲部分是一个整块的计算机内存在刚开始工作时,空闲部分是一个整块的连续区域;连续区域;n随着用户进入系统,多次申请和释放内存以后,空闲随着用户进入系统,多次申请和释放内存以后,空闲部分不再是连续的了,而成了多个空闲区。常用链表部分不再是连续的了,而成了多个空闲区。常用链表管理,即可利用空间表管理,即可利用空间表n动态存储管理动态存
2、储管理p指系统随机地根据用户程序申请空间的大小,进行分配空间和回收不用空间所进行的内存管理。内存的初始状态U1U2U3U4 系统运行初期U2U4 系统运行若干时后可利用空间表及分配方法可利用空间表及分配方法p可利用空间表n将所有内存空闲块用链表连接而成;将所有内存空闲块用链表连接而成;n空闲块的大小可以是全相同的,也可以是分成若干固空闲块的大小可以是全相同的,也可以是分成若干固定大小的,还可以是随机大小的。定大小的,还可以是随机大小的。tag size linkspacetag=0:空闲tag=1:使用av 0 2000 3000 150.分配方法分配方法p首次拟合法n分配找到的第一个不小于分
3、配找到的第一个不小于n的空闲块的一部分。的空闲块的一部分。n操作方便,查找快捷;操作方便,查找快捷;p最佳拟合法n分配不小于分配不小于n且最接近且最接近n的空闲块的一部分。的空闲块的一部分。n尽可能将大的空闲块留给大程序使用;尽可能将大的空闲块留给大程序使用;p最坏拟合法n分配不小于分配不小于n且是最大的空闲块的一部分。且是最大的空闲块的一部分。n尽可能减少分配后无用碎片;尽可能减少分配后无用碎片;内存的分配与回收内存的分配与回收p分配n根据申请内存大小利用相应的分配策略分配给用户所根据申请内存大小利用相应的分配策略分配给用户所需的空间;需的空间;n若分配块大小与申请大小相差不多,则将此块全部
4、分若分配块大小与申请大小相差不多,则将此块全部分给用户;给用户;n否则,就需将分配块分为两部分,一部分给用户使用,否则,就需将分配块分为两部分,一部分给用户使用,另一部分继续留在可利用空间表中。另一部分继续留在可利用空间表中。p回收n测试回收块前后相邻内存块是否空闲;测试回收块前后相邻内存块是否空闲;n若是则需将回收块与相邻空闲块合并成较大的空闲块,若是则需将回收块与相邻空闲块合并成较大的空闲块,再链入可利用空间表中。再链入可利用空间表中。8.3 边界标识法边界标识法p用以进行动态分区分配的一种管理方法p可利用空间表的结点结构边界标识法的数据结构边界标识法的数据结构struct BLK str
5、uct BLK*llink;#define ulink llink /ulink直接利用llink域 int tag;int size;/*不包括头和脚占用的空间,必须是sizeof(struct BLK)的倍数*/struct BLK*rlink;#define FootLoc(p)(struct BLK*)(char*)p +sizeof(struct BLK)+p-size)分配算法分配算法p将所有的空闲块链接在一个双重循环链表结构的可利用空间表中;p分配可按首次拟合法或最佳拟合法进行;p为避免过多碎片,设一常量EPSILONnm-n EPSILON将大小为将大小为m的块全部分出的块全部
6、分出n EPSILON分出分出n大小,剩余留下大小,剩余留下分配算法描述分配算法描述void*mem_alloc(int nbytes)#define u sizeof(struct BLK);修正nbytes=(nbytes+u-1)/u*u;/*u为2n有:nbytes=(nbytes+u-1)&(u-1)*/从链表中找满足size=nbytes的块p;if(p=NULL)return NULL;if(p-size nbytes tag=FootLoc(p)-tag=1;return p+1;else p-size-=nbytes+2*sizeof(struct BLK);f=FootLo
7、c(p);f-tag=0;f-uplink=p;p=f+1;p-tag=1;p-size=nbytes;f=FootLoc(p);f-tag=1;f-uplink=p;return p+1;回收算法回收算法p根据回收缓冲区地址,找到当前内存块的管理信息 p=(struct BLK*)buf 1;p与此内存块紧邻的,处于高地址端的内存块的管理信息 h=(struct BLK*)(char*)(p+2)+p-size);p与此内存块紧邻的,处于低地址端的内存块的管理信息 l=(p-1)-uplink;p判l-tag和h-tag,知低端/高端内存块是否空闲,决定是否和低端/高端空闲块合并回收算法描述
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章节 动态 存储 管理
限制150内