动态分区管理实验报告.doc

动态分区管理实验报告.doc

ID:51371485

大小:85.00 KB

页数:5页

时间:2020-03-11

动态分区管理实验报告.doc_第1页
动态分区管理实验报告.doc_第2页
动态分区管理实验报告.doc_第3页
动态分区管理实验报告.doc_第4页
动态分区管理实验报告.doc_第5页
资源描述:

《动态分区管理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验五动态分区管理模拟实验报告关键问题:写一动态分区管理程序,使其内存分配采用最优适应分配算法。设计思路:在空闲分区链中找最适合的空闲块,使内存碎片尽量的减少!根据最佳适应算法原理,在内存分配函数ffallocation()中,增加记录适合空白块的标记sp,然后拿当前空白块fp减去后jl的后的大小和它后面的另一空白块sp减去jl的大小相比较。如果前者大于后者,且后者的空白区大于jl的大小,则当前空白块为sp,否则继续往后比较,直到空闲分区链末尾!则当前空白块为最适合的空白块!然后就把当前空白块分配给作业。其他部分的代码与实例相同!实现的关键代码://----------

2、---------------------------------------------------------//有两个链:空白块链及作业链.空白块链描述空白块,链首指针freep,初始为一大块空白块.//作业链按从高址到低址的顺序链接,链首指针jobp//为作业jn分配jl大小内存,起始地址为javoidffallocation(intjl,charjn[10],int*ja){mat*jp=NULL;//作业链当前节点mat*jp2=NULL;//新的作业节点mat*jp1=NULL;//freearea*fp=NULL;//当前空白块//!!!!!!!!!!!

3、!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!修改部分freearea*sp;//记录适合的空白块inti;*ja=-1;if(totalfreefreesizenext;//当前空白块大小不满足要求sp=sp->next;}else//将当前空白块分配给作业{/*当当前空白块fp与它的下一块空白

4、块sp相比较,如果它减去jl后大于下一空白块sp减去jl,且下一空白块sp大于等于jl,则当前空白块为sp;否则sp继续往后查找,直到空闲块查找完毕,然后当前空闲块为所要查找的适合空闲块!*/while(sp!=NULL){if((fp->freesize-jl>sp->freesize-jl)&(sp->freesize>=jl)){fp=sp;}else{sp=sp->next;}}//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!jobnumber++;totalfree=to

5、talfree-jl;jp2=newmat;//申请一块作业节点空间//在节点上登记为该作业分配的内存空间//for(i=0;i<10;i++)(jp2->jobname)[i]='';i=-1;while(jn[++i])(jp2->jobname)[i]=jn[i];(jp2->jobname)[i]='';jp2->joblength=jl;jp2->jobaddress=fp->freeaddress;//登记该作业的起始地址*ja=jp2->jobaddress;//将节点jp2插入作业链jobp,按高址到低址的顺序。if(jobp==NULL){//插入

6、链首jp2->next=NULL;jp2->back=NULL;jobp=jp2;}else{jp=jobp;//取链首指针while((jp!=NULL)&&(jp2->jobaddressjobaddress)){jp1=jp;//jp1为jp的前一个节点jp=jp->next;//继续搜索}//将jp2插入到jp1之后、jp之前jp2->next=jp;if(jp==NULL){//插到链尾jp2->back=jp1;jp1->next=jp2;}else{//插在链中间jp2->back=jp->back;if(jp->back!=NULL)//jp不

7、是首节点jp1->next=jp2;elsejobp=jp2;//jp是首节点jp->back=jp2;}}//if(jobp==NULL)//剩余空白块处理if(fp->freesize-jlnext!=NULL)(fp->next)->back=fp->back;//fp非尾节点if(fp->back!=NULL)(fp->back)->next=fp->next;//fp非首节点elsefreep=fp->next;//fp为首节点}else{//登记余下空白块f

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

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

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