最坏适应算法-动态分区法存储.docx

最坏适应算法-动态分区法存储.docx

ID:53675017

大小:16.23 KB

页数:14页

时间:2020-04-05

最坏适应算法-动态分区法存储.docx_第1页
最坏适应算法-动态分区法存储.docx_第2页
最坏适应算法-动态分区法存储.docx_第3页
最坏适应算法-动态分区法存储.docx_第4页
最坏适应算法-动态分区法存储.docx_第5页
资源描述:

《最坏适应算法-动态分区法存储.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。实验代码带界面系统#include

2、.h>#includetypedefstructlist{intlen;charname;intaddress;structlist*next;}listNode,*listlink;charid='1';voidinit(listlink&q){q=(listlink)malloc(sizeof(listNode));if(!q)exit(-1);q->next=NULL;}//初始化intlength(listlinkfree){listlinkq;q=free->next;intlen=0;while(q!=NULL){len=len+q-

3、>len;q=q->next;}returnlen;}//空闲区总长度listlinkDelist(charname,listlink&q){listlinka,b,c;a=q->next;b=q;while(a!=NULL){if(a->name==name){c=a->next;b->next=c;returna;}b=b->next;a=a->next;}returnNULL;}//按作业或进程名删除该结点voidinsert(listlink&q,intaddress,intlen,charname='F'){listlinka=(listlink)mall

4、oc(sizeof(listNode));a->address=address;a->len=len;a->name=name;listlinkb=q;while(b->next!=NULL){b=b->next;}a->next=NULL;b->next=a;}//插入结点voidsort(listlink&q){listlinka,b;inttemp1,temp2;a=q->next;if(a==NULL)return;b=a->next;while(a->next!=NULL){while(b!=NULL){if(a->len<=b->len){temp1=a

5、->address;temp2=a->len;a->len=b->len;a->address=b->address;b->address=temp1;b->len=temp2;}b=b->next;}a=a->next;b=a->next;}}//按长度从大到小排序listlinkfindpre(listlinkfree,intaddress){listlinka;a=free->next;while(a!=NULL){if(a->address+a->len==address){Delist(a->name,free);returna;}a=a->next;}r

6、eturnNULL;}//查找前连接区listlinkfindnext(listlinkfree,intaddress,intlen){listlinka;a=free->next;while(a!=NULL){if(a->address==address+len){Delist(a->name,free);returna;}a=a->next;}returnNULL;}//查找后连接区voidfreeMemo(charname,listlink&free,listlink&busy){listlinka=Delist(name,busy);listlinkb,c;

7、id++;b=findpre(free,a->address);c=findnext(free,a->address,a->len);if(b!=NULL&&c!=NULL){b->len=a->len+b->len+c->len;insert(free,b->address,b->len,id);sort(free);}//前连接区后连接区都存在elseif(b==NULL&&c!=NULL){a->len=a->len+c->len;insert(free,a->address,a->len,id);sort(free);}//前连接区不存在后连接区存在el

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

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

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