




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#defineOK1/完成#defineERROR0/出错定义一个空闲区说明表结构typedefintStatus;typedefstructfree_tableintnum;分区序号long address; /long length; /int state; /ElemType;typedef struct Node/ElemType data;struct Node *prior; /struct Node *next; /Node,*LinkList;起始地址分区大小分区状态线性表的双向链表存储结构前趋指针后继指针LinkListfirst;/头结点LinkListend;/尾结点in
2、tflag;/记录要删除的分区序号StatusInitblock()开创带头结点的内存空间链表first=(LinkList)malloc(sizeof(Node);end=(LinkList)malloc(sizeof(Node);first->prior=NULL;first->next=end;end->prior=first;end->next=NULL;end->data.num=1;end->data.address=40;end->data.length=600;end->data.state=0;returnOK;voidsort
3、()分区序号重新排序Node*p=first->next,*q;q=p->next;for(;p!=NULL;p=p->next)for(q=p->next;q;q=q->next)if(p->data.num>=q->data.num)q->data.num+=1;/显示主存分配情况voidshow() int flag=0;/用来记录分区序号Node*p=first;p->data.num=0;p->data.address=0;p->data.length=40;p->data.state=1;sort();p
4、rintf("ntt»主存空间分配情况n");printf("*nn");printf("分区序号t起始地址t分区大小t分区状态nn");while(p)printf("%dtt%dtt%d",p->data.num,p->data.address,p->data.length);空闲 n'n");if(p->data.state=0)printf("ttelse printf("tt已分配nn");p=p->next;prin
5、tf("*nn");/首次适应算法StatusFirst_fit(intrequest)/为申请作业开辟新空间且初始化Node*p=first->next;LinkListtemp=(LinkList)malloc(sizeof(Node);temp->data.length=request;temp->data.state=1;p->data.num=1;while(p)if(p->data.state=0)&&(p->data.length=request)/有大小恰好合适的空闲块p->data.state=1;
6、returnOK;break;elseif(p->data.state=0)&&(p->data.length>request)/有空闲块能满足需求且有剩余temp->prior=p->prior;temp->next=p;temp->data.address=p->data.address;temp->data.num=p->data.num;p->prior->next=temp;p->prior=temp;p->data.address=temp->data.address+temp
7、->data.length;p->data.length-=request;p->data.num+=1;returnOK;break;p=p->next;returnERROR;/最佳适应算法StatusBest_fit(intrequest)intch;/记录最小剩余空间Node*p=first;Node*q=NULL;/记录最佳插入位置LinkListtemp=(LinkList)malloc(sizeof(Node);temp->data.state=1;p->data.num=1;while(p)/初始化最小空间和最佳位置if(p->data
8、.state=0)&&(p->data.length>=request)if(q=NULL)q=p;ch=p->data.length-request;elseif(q->data.length>p->data.length)q=p;ch=p->data.length-request;p=p->next;if(q=NULL)returnERROR;/没有找到空闲块elseif(q->data.length=request)q->data.state=1;returnOK;elsetemp->prior=q->
9、;prior;temp->next=q;temp->data.address=q->data.address;temp->data.num=q->data.num;q->prior->next=temp;q->prior=temp;q->data.address+=request;q->data.length=ch;q->data.num+=1;returnOK;returnOK;/最差适应算法StatusWorst_fit(intrequest)intch;/记录最大剩余空间Node*p=first->next;Node
10、*q=NULL;/记录最佳插入位置LinkListtemp=(LinkList)malloc(sizeof(Node);temp->data.length=request;temp->data.state=1;p->data.num=1;while(p)初始化最大空间和最佳位置if(p->data.state=0&&(p->data.length>=request)if(q=NULL)q=p;ch=p->data.length-request;elseif(q->data.length<p->data.length)q
11、=p;ch=p->data.length-request;p=p->next;没有找到空闲块if(q=NULL)returnERROR;/elseif(q->data.length=request)q->data.length=1;returnOK;elsetemp->prior=q->prior;temp->next=q;temp->data.address=q->data.address;temp->data.num=q->data.num;q->prior->next=temp;q->prior=temp
12、;q->data.address+=request;q->data.length=ch;q->data.num+=1;returnOK;returnOK;/分配主存Statusallocation(inta)int request;/申请内存大小printf("请输入申请分配的主存大小(单位:KB):");scanf("%d”,&request);if(request<0|request=0)printf("分配大小不合适,请重试!");returnERROR;switch(a)case 1: /默认首次适应算法
13、分配成功!if(First_fit(request)=OK)printf("t*elseprintf("t*内存不足,分配失败!*");returnOK;break;case 2: /选择最佳适应算法if(Best_fit(request)=OK) printf("t*分配成功!*)else printf("t*内存不足,分配失败!*");returnOK;break;case 3: /选择最差适应算法分配成功!if(Worst_fit(request)=OK)printf("t*else printf("t*内存
14、不足,分配失败!*");returnOK;break;)Statusdeal1(Node*p)/处理回收空间(Node*q=first;for(;q!=NULL;q=q->next)(if(q=p)(if(q->prior->data.state=0&&q->next->data.state!=0)(q->prior->data.length+=q->data.length;q->prior->next=q->next;q->next->prior=q->prior;q=q->p
15、rior;q->data.state=0;q->data.num=flag-1;)if(q->prior->data.state!=0&&q->next->data.state=0)(q->data.length+=q->next->data.length;q->next=q->next->next;q->next->next->prior=q;q->data.state=0;q->data.num=flag;)if(q->prior->data.state=0&a
16、mp;&q->next->data.state=0)q->prior->data.length+=q->data.length;q->prior->next=q->next;q->next->prior=q->prior;q=q->prior;q->data.state=0;q->data.num=flag-1;)if(q->prior->data.state!=0&&q->next->data.state!=0)q->data.state=0;)retur
17、nOK;)Statusdeal2(Node*p)/处理回收空间Node*q=first;for(;q!=NULL;q=q->next)(if(q=p)(if(q->prior->data.state=0&&q->next->data.state!=0)(q->prior->data.length+=q->data.length;q->prior->next=q->next;q->next->prior=q->prior;q=p->prior;q->data.state=0;q->
18、;data.num=flag-1;if(q->prior->data.state!=0&&q->next->data.state=0)(q->data.state=0;if(q->prior->data.state=0&&q->next->data.state=0)(q->prior->data.length+=q->data.length;q->prior->next=q->next;q->next->prior=q->prior;q=q->pri
19、or;q->data.state=0;q->data.num=flag-1;if(q->prior->data.state!=0&&q->next->data.state!=0)q->data.state=0;returnOK;/主存回收Statusrecovery(intflag)Node*p=first;for(;p!=NULL;p=p->next)if(p->data.num=flag)if(p->prior=first)if(p->next!=end)当前P指向的下一个不是最后一个时与后面的空闲块相连if
20、(p->next->data.state=0)/p->data.length+=p->next->data.length;p->next->next->prior=p;p->next=p->next->next;p->data.state=0;p->data.num=flag;elsep->data.state=0;if(p->next=end)/当前P指向的下一个是最后一个时p->data.state=0;/结束if(p->prior=block_first)的情况elseif(p->
21、prior!=first)if(p->next!=end)deall(p);elsedeal2(p);结束if(p->prior!=block_first)的情况结束if(p->data.num=flag)的情况printf("t*回收成功*");returnOK;/主函数voidmain()inti;/操作选择标记inta;/算法选择标记printf("*n");printf("tt用以下三种方法实现主存空间的分配n");printf("t(1)首次适应算法t(2)最佳适应算法t(3)最差适应算法n");printf(”*n")Jprintf("n");printf("请输入所使用的内存分配算法:”);scanf("%d",&a);while(a&l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育机构网络课程版权分成协议
- 顶级游艇配备智能卫星导航系统租赁协议
- 研发团队竞业限制补偿金支付及项目交接协议
- 现代智能家居智能门锁云管理合作协议
- 司法鉴定机构合伙人业务培训与发展协议
- 目标管理理论体系框架
- 人体组织管理员工培训计划
- 《智能康复助手》课件
- 《智能交通管理与安全技术课件》
- 创业公司高效入职培训体系设计
- 2025年安全生产月主题培训课件:如何查找身边安全隐患
- 职代会知识培训课件
- 第四章 问题解决策略:特殊化 课件 2024-2025学年北师大版七年级数学下册
- 预防AI换脸诈骗
- 2024年中职电子商务自主学习试题及答案
- 物流行业数据分析技能试题及答案
- 健康管理在数字时代的探索与实践
- 中国竹笛演奏知到课后答案智慧树章节测试答案2025年春四川音乐学院
- 古诗词诵读《鹊桥仙(纤云弄巧)》课件(共37张) 2024-2025学年统编版高中语文必修上册
- (高清版)DBJ33∕T 1286-2022 住宅工程质量常见问题控制标准
- 土地租赁合同详细版样板6篇
评论
0/150
提交评论