实验四动态分区分配算法实验报告及程序

实验四动态分区分配算法实验报告及程序

ID:31798265

大小:83.24 KB

页数:7页

时间:2019-01-18

实验四动态分区分配算法实验报告及程序_第1页
实验四动态分区分配算法实验报告及程序_第2页
实验四动态分区分配算法实验报告及程序_第3页
实验四动态分区分配算法实验报告及程序_第4页
实验四动态分区分配算法实验报告及程序_第5页
资源描述:

《实验四动态分区分配算法实验报告及程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告四动态分区分配算法班级学号姓名一.实验目的动态分区分配是根据进程的实际需要,动态地为Z分配内存空间,而在分配时,须按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。在本实验中运用了四种分配算法,分别是1.首次适应算法,2.循环首次适应算法,3.最坏适应算法4.最佳适应算法。二.实验环境普通的计算机一台,编译环境MicrosoftVisualC++6.0三.算法思想1.数据结构(1)分区开始地址startaddress(2)分区大小size(3)分区状态state2.功能介绍(1)首次适应算法在首次适应算法中,是从己建立

2、好的数组中顺序查找,直至找到第一个大小能满足要求的空闲分区为止,然后再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空间令开辟一块新的地址,大小为原来的大小减去作业大小,若查找结束都不能找到一个满足要求的分区,则此次内存分配失败。(2)循环首次适应算法该算法是rti首次适应算法演变而成,在为进程分配内存空间时,不再是每次都从第一个空间开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业,为实现本算法,设置一个全局变量f,来控制循环查找,当f%N

3、==0时,f=0;若查找结束都不能找到一个满足要求的分区,则此次内存分配失败。(3)最坏适应算法最坏适应分配算法是每次为作业分配内存时,扫描整个数组,总是把能满足条件的,又是最大的空闲分区分配给作业。(4)最佳适应算法最坏适应分配算法是每次为作业分配内存时,是最小的空闲分区分配给作业。四、源程序#include#defineL10typedefstructLNode{intstartaddress;intsize;intstate;}LNode;LNodeP[L]={{0,128,0},{200,256,0},{500,512,

4、0},{1500,1600,0},{5000,150,0}};intN=5;int仁0;voidprint(){inti;printf(n起始地址分区状态”);for(i=0;i

5、size==m){P[i].state=l;1=1;break;}else{P[N].startaddress=P[i].startaddress+m;P[N].size=P[i].size-m;扫描整个数组,总是把能满足条件的,又P[i].size=m;P[i].state=l;1=1;N>+;break;}}if(l==]

6、

7、i

8、t=0;printf("输入请求分配分区的大小:");scanf(”%d",&m);while(fm&&P[f].state!=l){P[N].startaddress=P[f].startaddress+m;P[N].size=P[f].size-m;P[f].size=m;PLf].st

9、ate=l;1=1;N++;f++;break;}}if(l==l){printf("地址成功分配");printfC哋址分配成功后的状态:“);print();}elseprintf(”没有可以分配的地址空间“);}voidWorst(){inti,t=0,l=0,m;inta[L];printf(M输入请求分配分区的大小:”);scanf("%d",&m);for(i=0;i

10、1;break;}elsea[i]=P[i].size-m;}if(l==0){for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。