操作系统-存储管理动态分区分配及回收算法(附源码)

操作系统-存储管理动态分区分配及回收算法(附源码)

ID:47543568

大小:163.55 KB

页数:11页

时间:2020-01-14

操作系统-存储管理动态分区分配及回收算法(附源码)_第1页
操作系统-存储管理动态分区分配及回收算法(附源码)_第2页
操作系统-存储管理动态分区分配及回收算法(附源码)_第3页
操作系统-存储管理动态分区分配及回收算法(附源码)_第4页
操作系统-存储管理动态分区分配及回收算法(附源码)_第5页
资源描述:

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

1、.存储管理动态分区分配及回收算法课程名称:计算机操作系统班级:信1501-2实验者姓名:李琛实验日期:2018年5月20日评分:教师签名:一、实验目的分区管理是应用较广泛的一种存储管理技术。本实验要求用一种结构化高级语言构造分区描述器,编制动态分区分配算法和回收算法模拟程序,并讨论不同分配算法的特点。二、实验要求1、编写:FirstFitAlgorithm2、编写:BestFitAlgorithm3、编写:空闲区回收算法三、实验过程(一)主程序1、定义分区描述器node,包括3个元素:(1)adr——分区首地址(2)size——分区大小(3)next——指向

2、下一个分区的指针2、定义3个指向node结构的指针变量:(1)head1——空闲区队列首指针(2)back1——指向释放区node结构的指针(3)assign——指向申请的内存分区node结构的指针3、定义1个整形变量:free——用户申请存储区的大小(由用户键入)(二)过程1、定义check过程,用于检查指定的释放块(由用户键入)的合法性2、定义assignment1过程,实现FirstFitAlgorithm3、定义assignment2过程,实现BestFitAlgorithm4、定义acceptment1过程,实现FirstFitAlgorithm的

3、回收算法5、定义acceptment2过程,实现BestFitAlgorithm的回收算法6、定义print过程,打印空闲区队列(三)执行程序首先申请一整块空闲区,其首址为0,大小为32767;然后,提示用户使用哪种分配算法,再提示是分配还是回收;分配时要求输入申请区的大小,回收时要求输入释放区的word范文.首址和大小。实验代码Main.cpp#include#include#include#includeusingnamespacestd;#defineMAX_SIZE3276

4、7typedefstructnode{intid;intadr;intsize;structnode*next;}Node;Node*head1,*head2,*back1,*back2,*assign;intrequest;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)&&chec

9、k)if(((addadr)&&(add+siz>p->adr))

10、

11、((add>=p->adr)&&(addadr+p->size)))check=0;elsep=p->next;if(check==0)printf("t输入释放区地址或大小有错误!!!");returncheck;}voidinit(){Node*p;head1=(Node*)malloc(sizeof(Node));head2=(Node*)malloc(sizeof(Node));p=(Node*)malloc(sizeof(Node));word范文.head

12、1->next=p;head2->next=p;p->size=MAX_SIZE;p->adr=0;p->next=NULL;p->id=0;}Node*assignment1(intnum,intreq){Node*before,*after,*ass;ass=(Node*)malloc(sizeof(Node));before=head1;after=head1->next;ass->id=num;ass->size=req;while(after->sizenext;after=after->next;}if(

13、after==NULL){ass->adr=-1;}else{if(after->size==req){before->next=after->next;ass->adr=after->adr;}else{after->size-=req;ass->adr=after->adr;after->adr+=req;}}returnass;}voidacceptment1(intaddress,intsiz,intrd){Node*before,*after;intinsert=0;word范文.back1=(Node*)malloc(sizeof(Node));

14、before=head1;after=head1->

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

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

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