欢迎来到天天文库
浏览记录
ID:17950378
大小:148.68 KB
页数:42页
时间:2018-09-11
《模拟内存管理设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、内存管理器1.实验目的设计和实现关于内存管理的内存布局初始化及内存申请分配、内存回收等基本功能操作函数,尝试对用256MB的内存空间进行动态分区方式模拟管理。内存分配的基本单位为1KB,同时要求支持至少两种分配策略,并进行测试和对不同分配策略的性能展开比较评估。2.实验设计2.1.实验要求l1、设计一定的数据结构以描述256MB内存空间的使用状况,并设计和构建函数voidChuShuHuaNC(DIZHIzKS_KYNC,DIZHIzJS_KYNC)实现内存布局的初始化。假定内存空间的低址部分56MB(即0~56M-1)作为系统区和不参与分配过程。l2、设计和实现内存
2、申请分配函数DIZHIShenQingNC(unsignedlongzDX),内存分配的基本单位为1KB,同时要求支持至少两种分配策略(如首次适应、循环首次适应、最佳适应、最坏适应等),若分配失败则返回NULL。l3、设计和实现内存回收函数voidHuiShouNC(DIZHIzKSDZ),若回收分区与其它空闲分区相邻接,则采取合并措施。l4、基于不同的内存分配策略形成不同版本的内存管理器,并根据内存平均利用率(指已分配内存占总可分配内存的平均比率)和分配查找分区比较次数等指标展开测试和对不同分配策略的内存管理器性能进行评估。l5、不妨设计测试例程框架:循环{①产生随
3、机数,并根据该值确定是申请内存还是回收内存;②若是申请内存,还需进一步产生申请内存大小(服从正态/均匀分布);若是回收内存还需产生随机数和选择回收区;③收集测试数据用于性能评价;}1.2.数据结构/*内存空闲分区结构块*/typedefstructnode{intaddr;//空闲分区的首址intsize;//空闲分区的大小intstatus;//空闲分区的状态}blockblock*arry_empty_block[2048];block*arry_apply_block[2048];空内存块结构体数组已申请内存块结构体数组1.2.性能指标计算指标1:countco
4、unt为平均每次申请分配内存时查找符合内存大小的次数。计算公式:count=query_apply_countapply_countquery_apply_count:总的查询比较次数apply_count:总的申请分配内存次数指标2:raterate为每1000次对存储设备操作后的平均内存利用率。计算公式:rate=all_rateall_countall_rate:总的对内存每次操作后的内存利用率之和all_conut:对内存的操作次数包括回收和分配1.程序清单1:变量解释/*********************************************
5、*************************full:空闲分区的状态为满*empty:空闲分区的状态为空*mix:允许产生的最大申请块*min:允许申请的最小申请块*memory_size:初始内存大小(256M-56M)*memory_locate:累计内存使用量*query_count_all:累计比较次数*memory_empty_count:空闲分区的内存块数*memory_apply_count:申请成功的内存块数2:空间利用率函数*************************************************************
6、*****************函数名:rate*功能:求空间利用率*返回值double*参数:无******************************************************************************函数实现******************************************************************************doublerate(){intsizeloction=0;for(inti=0;i7、n=arry_apply_block[i]->size+sizeloction;}求总的分配空间returndouble(double(sizeloction)/);}******************************************************************************3:正态分布随机函数***********************************************************************函数名称:radomNumber*功能:产生服从正态分布的一组随机数*
7、n=arry_apply_block[i]->size+sizeloction;}求总的分配空间returndouble(double(sizeloction)/);}******************************************************************************3:正态分布随机函数***********************************************************************函数名称:radomNumber*功能:产生服从正态分布的一组随机数*
此文档下载收益归作者所有