存储管理动态分区分配及回收算法

存储管理动态分区分配及回收算法

ID:14456824

大小:42.00 KB

页数:16页

时间:2018-07-28

存储管理动态分区分配及回收算法_第1页
存储管理动态分区分配及回收算法_第2页
存储管理动态分区分配及回收算法_第3页
存储管理动态分区分配及回收算法_第4页
存储管理动态分区分配及回收算法_第5页
资源描述:

《存储管理动态分区分配及回收算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、存储管理动态分区分配及回收算法存储管理动态分区分配及回收算法(FirstFitAlgorithmBestFitAlgor)一、目的和要求分区管理是应用较广泛的一种存储管理技术。本实验要求用一种结构化高级语言构造分区描述器,编制动态分区分配算法和回收算法模拟程序,并讨论不同分配算法的特点。二、实验内容1、编写:FirstFitAlgorithm首次适应算法(FirstFit):  从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区

2、链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。2、编写:BestFitAlgorithm最佳适应算法(BestFit):  它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。#include#include

3、>#include#defineMAX_SIZE32767typedefstructnode//定义分区描述器的结构{intid;//编号intadr;//分区首地址intsize;//分区大小structnode*next;//指向下一个分区的指针}Node;Node*head1,*head2,*back1,*back2,*assign;/*head--空闲区队列首指针back--指向释放区Node结构的指针assign-指向申请的内存分区Node结构的指针*/intrequest;//用户申

4、请存储区的大小(由用户输入)intcheck(intadd,intsiz,charc)//用于检查指定的释放块(由用户键入)的合法性{Node*p,*head;intcheck=1;if(add<0

5、

6、siz<0)check=0;/*地址和大小不能为负*/if(c=='f'

7、

8、c=='F')head=head1;elsehead=head2;p=head->next;while((p!=NULL)&&check)/*地址不能和空闲区表中结点出现重叠*/if(((addadr)&&(add+siz>p->ad

9、r))

10、

11、((add>=p->adr)&&(addadr+p->size)))check=0;elsep=p->next;if(check==0)printf("t输入释放区地址或大小有错误!!!");returncheck;/*返回检查结果*/}voidinit()//初始化,生成两个带头节点的空闲队列指针,{//head1指向first-fit的空闲队列头,head2指向best-fit的空闲队列头Node*p,*q;head1=(Node*)malloc(sizeof(Node));head2=

12、(Node*)malloc(sizeof(Node));p=(Node*)malloc(sizeof(Node));q=(Node*)malloc(sizeof(Node));head1->next=p;head2->next=q;p->size=q->size=MAX_SIZE;p->adr=q->adr=0;p->next=q->next=NULL;p->id=q->id=0;}Node*assignment1(intnum,intreq)//实现首次适应算法的分配{Node*before,*after,*as

13、s;ass=(Node*)malloc(sizeof(Node));before=head1;after=head1->next;ass->id=num;ass->size=req;while(after->sizenext;after=after->next;}if(after==NULL){ass->adr=-1;//分配失败}else{if(after->size==req){//空闲分区恰好等于所申请的内存大小before->next=after->next;ass

14、->adr=after->adr;}else{//空闲分区大于所申请的内存大小after->size-=req;ass->adr=after->adr;after->adr+=req;}}returnass;}voidacceptment1(intaddress,intsiz,intrd)//实现首次适应算法的回收{Node*before,*after;in

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

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

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