欢迎来到天天文库
浏览记录
ID:55926527
大小:74.96 KB
页数:9页
时间:2020-06-15
《动态内存分配 C语言.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验报告实验报告实验课程名称:动态内存分配算法专业:计算机科学与技术班级:姓名:学号:实验学时:指导教师:成绩:年12月1日实验报告实验报告专业计算机科学与技术班级姓名学号实验课程操作系统指导教师实验日期同实验者实验项目动态内存分配算法实验设备及器材PC机一台,VC++6.0一、实验内容与要求动态分区分配又称为可变分区分配,它是根据进程的实际需要,动态地为之分配内存空间。在实验中运用了三种基于顺序搜索的动态分区分配算法,分别是1.首次适应算法2.循环首次适应算法3.最佳适应法3.最坏适应法分配主存空间。二、需求分析本次实
2、验通过C语言进行编程并调试、运行,显示出动态分区的分配方式,直观的展示了首次适应算法循环首次适应算法、最佳适应算法和最坏适应算法对内存的释放和回收方式之间的区别。首次适应算法要求空闲分区链以地址递增的次序链接,在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,然后在按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空余分区仍留在空链中。优点:优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,为以后到达的大作业分配大的内存空间创造了条件。缺点:低址部分不断被划分,会留下
3、许多难以利用的、很小的空闲分区即碎片。而每次查找又都是从低址部分开始的,这无疑又会增加查找可用空闲分区时的开销。实验报告循环首次适应算法在为进程分配内存空间时,不是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区。优点:该算法能使内存中的空闲分区分布得更均匀,从而减少了查找空闲分区时的开销。最佳适应算法该算法总是把能满足要求、又是最小的空闲分区分配给作业,避免大材小用,该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。缺点:每次分配后所切割下来的剩
4、余部分总是最小的,这样,在存储器中会留下许多难以利用的碎片。最坏适应算法最坏适应算法选择空闲分区的策略正好与最佳适应算法相反:它在扫描整个空闲分区或链表时,总会挑选一个最大的空闲区,从中切割一部分存储空间给作业使用。该算法要求,将所有的空闲分区,按其容量以大到小的顺序形成一空闲分区链。查找时,只要看第一个分区能否满足作业要求即可。优点:可使剩下的空闲区不至于太小,产生碎片的可能性最小,对中小作业有利,同时,最坏适应算法查找效率很高。缺点:导致存储器中缺乏大的空闲分区三、数据结构为了实现动态分区分配算法,系统中配置了相应的
5、数据结构,用以描述空闲分区和已分配分区的情况,常用的数据结构有空闲分区表和空闲分区链流程图实验报告当一个新作业要求装入主存时,必须查空闲分区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这时应把它分成两部分,一部分为占用区,另一部分为空闲区。当一个作业撤离时,归还的区域如果与其他空闲区相邻,则合并成一个较大的空闲区,登录在空闲区表中。四、功能实现实验报告五、心得体会通过本次实验,对动态内存分配的相关知识有了更深的认识,中途也遇到了许多困难,但幸运的是最终的顺利的解决并完成了此次试验,也更加熟练地掌握了关于
6、内存分配的使用。实验报告六、源代码#includeusingnamespacestd;intFreePartition[100];//空闲分区块数组intFirstPartition[100];//首次适应算法数组intCycleFirstPartition[100];//循环首次适应算法数组intBestPartition[100];//最佳适应算法数组intWorstPartition[100];//最坏适应算法数组intProcessNeed[100];//每个作业的大小intPartition
7、Num,ProcessNum;//分区块数,作业数//首次适应算法voidFirst(){inti,j;charstr;for(i=0;iFirstPartition[j])continue;else{FirstPartition[j]-=Pro
8、cessNeed[i];//找到后把分区大小减去作业的大小str='A'+i;cout<<"作业"<
此文档下载收益归作者所有