欢迎来到天天文库
浏览记录
ID:22669112
大小:392.05 KB
页数:13页
时间:2018-10-30
《操作系统内存buddy算法和页置换算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统内存buddy算法和页置换算法实验报告一、实验目的通过模拟实现内存分配的伙伴算法和请求页式存储管理的儿种基本页面罝挽算法,了解存储技术的特点。掌握虚拟存储请求贞式存储管理中几种基本贞妞置换算法的基本思想和实现过程,并比较它们的效率。二、实验内容1.实现一个内存管理的伙伴算法,实现内存块申请时的分配和释放后的回收。2.设计一个虚拟存储区和内存工作区,并使用下述算法计算访M命中率。1)最佳置换算法(Optimal)2)先进先出法(FisrtInFirstOut)3)最近最久未使用(LeastRecentlyUsed)4)最不经常使用
2、法(LeastFrequentlyUsed)其中,命中率=1一页面失效次数/页地址流长度试对上述算法的性能加以较各.•页而个数和命屮率间的关系;同样情况下的命屮率比较。三、项目要求及分析1、要求:用随机函数仿真程序进行内存带请,并且以较为随机的次序进行释放。对其碎片进行统计,当申请分配内存失败时区分实际空间不足和由于碎片而不能满足。分析:总的内存大小固定(默认为2048),申请内存的时候用到随机函数,为了使分配效果更加突出,每次申请内存大小为1一一600。每次申请完并成功分配后,得到剩余闪存大小availMemory和碎片大小fragm
3、ent!],来得到分配失败的原因。分配成功的内存集记录为haveAllo[],在haveAllo[】中随机抽取内存进行释放。2、要求:首先用srand()和rand(}函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命屮率。分析:可以直接忽略指令的内容,按照地址来进行分析,这样是执行更加方便。各个算法总体相同,主要区别就是置换的条件不同,掌握好条件是本实验的关键。U!具体实现4.1流程图:1、分配内存:确定总的内存大小分配随机人小的内存<▼按照Buddy算法进行分配碎片太多,报错进行分配」L结束够
4、,报错释放闪存:从己分配内#屮防机选取、个作为婪择放的内存结束2、(1)最佳置换算法(Optimal)(2)先进先出法(FisrtInFirstOut)(3)最近最久未使用(LeastRecentlyUsed)4)最不经常使用法(LeastFrequentlyUsed)4.2数据结构定义:1、typedefstructMemoryTree{structMemoryTree*left;structMemoryTree*right;structMemoryTree*father;■nttab;intthisMemory;■ntused;}T
5、reeNode,*Mtree;内存节点定义:tab为用标记,1为可用,0为已用thisMemory表示此Vf点共有内存埴used表示已用内存SintAlloMemory(inttoBeAlIo,Mtreeroot)分配内存voidReleaseMemory(inttoBeRele,Mtreeroot)释放内存voidDelete(inta[],intnum)从数组a中删除兀素num,该函数用于内存释放。voidScanMemory(Mtreeroot)浏览分配树,以得到可用内存和碎片2、voidinitaddr(void)初始化指令序列
6、,并按照一定规则执行voidinitpage(void)初始化页表intisln(inta)判断地址为a的指令是否在页屮intfindmax(intnum,intdata口)找出data序列屮第一个最大值的序号intfindmin(intnum,intdata口)找出data序列屮第•一个最小值的序号floatoptimal(void)optimal算法,返回命中率floatFIFO(void)FIFO算法,返回命屮率floatLRU(void)LRU算法,返回命屮率floatLFU(void)LFU算法,返回命屮率五、调试运行结果1、
7、假设有3次分配,然后释放。结果如下:d:codec++OShomeworkexperiment2_lDebugexperiment2_l.exe[Thesizeofmemoryis:2048-Pleaseinputthetimesyouwillallocatethememory:3
8、Tbesizeofmemorytobeallocated:471Allocationsucceed!
9、Now,.thememoryavailableare:121024[Thefrangnentare:41Thesizeofmemorytobea
10、llocated:415Allocationsucceed!Now#thememoryavailableare:1024Thefrangnentare:4197Thesizeofmemorytobeallo
此文档下载收益归作者所有