实验二:存储器地分配与回收算法实现.doc

实验二:存储器地分配与回收算法实现.doc

ID:53850397

大小:205.50 KB

页数:11页

时间:2020-04-08

实验二:存储器地分配与回收算法实现.doc_第1页
实验二:存储器地分配与回收算法实现.doc_第2页
实验二:存储器地分配与回收算法实现.doc_第3页
实验二:存储器地分配与回收算法实现.doc_第4页
实验二:存储器地分配与回收算法实现.doc_第5页
资源描述:

《实验二:存储器地分配与回收算法实现.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验报告学院(系)名称:计算机与通信工程学院姓名刘俊杰学号20115542专业信息与计算科学班级2011级1班实验项目实验二:存储器的分配与回收算法实现课程名称操作系统课程代码0668036实验时间2013-11-273-4节2013-11-297-8节2013-12-43-4节2013-12-67-8节实验地点主校区7-215批改意见成绩教师签字:实验内容:1.本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2.采用最先适应法、最佳适应法、最坏适应法分配

2、主存空间。3.当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4.当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5.设计的模拟系统中,进程数不小于5,进程调度方式可以采用实验一中的任何一种。6.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1.详细描述实验设计思想、程序结构及各模块设计思路;2.详细描述程序所用数据结构及算

3、法;3.明确给出测试用例和实验结果;4.为增加程序可读性,在程序中进行适当注释说明;5.认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6.实验报告撰写要求结构清晰、描述准确逻辑性强;7.实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。代码实现:#include#include#defineNULL0第11页共11页#defineLEN1sizeof(structjob)//作业大小#defineLEN2sizeof(structidle)//空闲区单

4、元大小#defineLEN3sizeof(structallocate)//已分配区单元大小intSPACE=100;//定义内存空间大小intORIGI=1;//定义内存起始地址structjob//定义作业{intname;intsize;intaddress;};structidle//定义空闲区{intsize;intaddress;structidle*next;};structallocate//定义已分配区{intname;intsize;intaddress;structallocate*nex

5、t;};structidle*creatidle(void)//建立空闲表{structidle*head;structidle*p1;p1=(structidle*)malloc(LEN2);p1->size=SPACE;p1->address=ORIGI;p1->next=NULL;head=p1;return(head);}structallocate*creatallocate(void)//建立已分配表{structallocate*head;head=NULL;return(head);}struc

6、tjob*creatjob(void)//建立作业{structjob*p;p=(structjob*)malloc(LEN1);第11页共11页printf("请输入要运行的作业的名称与大小:");scanf("%d%d",&p->name,&p->size);return(p);}structidle*init1(structidle*head,structjob*p)//首次适应算法分配内存{structidle*p0,*p1;structjob*a;a=p;p0=head;p1=p0;while(p

7、0->next!=NULL&&p0->sizesize){p0=p0->next;}if(p0->size>a->size){p0->size=p0->size-a->size;a->address=p0->address;p0->address=p0->address+a->size;}else{printf("无法分配");}return(head);}structidle*init2(structidle*head,structjob*p)//最优{structidle*p0,*p1;stru

8、ctjob*a;a=p;p0=head;if(p0==NULL){printf("无法进行分配!");}while(p0->next!=NULL&&p0->sizesize){p0=p0->next;}if(p0->size>a->size){p1=p0;p0=p0->next;第11页共11页}else{printf("无法分配!");}while(p0!=NULL)

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

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

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