可变分区存储管理实验报告

可变分区存储管理实验报告

ID:38787875

大小:24.99 KB

页数:11页

时间:2019-06-19

可变分区存储管理实验报告_第1页
可变分区存储管理实验报告_第2页
可变分区存储管理实验报告_第3页
可变分区存储管理实验报告_第4页
可变分区存储管理实验报告_第5页
资源描述:

《可变分区存储管理实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、沈阳工程学院学生实验报告实验室名称:信息工程系信息安全实验室实验课程名称:操作系统实验项目名称:可变分区存储管理班级:计专本121姓名:郑永凯学号:2012461127实验日期:2013年5月27日实验台编号:F608指导教师:张楠批阅教师(签字):成绩:【实验目的】通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。【实验内容】设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。对分区的管理法可以采用下面三种算法之一:1、首次适应算法;2、循环首次适应算法;3、最佳适应算法;必须建立空闲区表和占用区表,回收算法考虑四种情况。【

2、实验要求】1)上机前认真复习可变式分区分配算法,熟悉存储器分配和回收过程;2)上机时独立编程、调试程序;3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。#include#include#defineNULL0#definegetjcb(type)(type*)malloc(sizeof(type))#definegetsub(type)(type*)malloc(sizeof(type))intnum,num2;//要调度的作业数和要回收的区域数intm=0;//已分配作

3、业数intflag;//分配成功标志intisup,isdown;//回收区域存在上邻和下邻的标志intis=0;structjcb{charname[10];charstate;intntime;//所需时间intsize;//所需空间大小intaddr;//所分配分区的首地址structjcb*link;}*ready=NULL,*p,*q,*as=NULL;//作业队列ready,已分配作业队列astypedefstructjcbJCB;structsubarea{//分区块charname[10];intaddr;//分区首地址intsize;/

4、/分区大小charstate;structsubarea*link;}*sub=NULL,*r,*s,*cur;//空闲分区队列sub,当前分区指针curtypedefstructsubareaSUB;voidsort()/*建立对作业按到达时间进行排列的函数,直接插在队列之尾*/{JCB*first;if(ready==NULL)ready=p;else{first=ready;while(first->link!=NULL)first=first->link;first->link=p;p->link=NULL;}}voidsort3()/*建立对已

5、分配作业队列的排列函数,直接插在队列之尾*/{JCB*fir;if(as==NULL)as=q;else{fir=as;while(fir->link!=NULL)fir=fir->link;fir->link=q;q->link=NULL;}m++;}voidinput()/*建立作业控制块函数*/{inti;printf("请输入要调度的总作业数:");scanf("%d",&num);for(i=0;i

6、nf("%s",&p->name);printf("输入作业的大小:");scanf("%d",&p->size);printf("输入作业所需运行时间:");scanf("%d",&p->ntime);p->state='w';p->link=NULL;sort();/*调用sort函数*/}printf("按任一键继续......");getch();}voidinput2()/*建立要回收区域的函数*/{JCB*k;inthas;q=getjcb(JCB);printf("输入区域名(作业名):");scanf("%s",&q-

7、>name);p=as;while(p!=NULL){if(strcmp(p->name,q->name)==0)/*在已分配作业队列中寻找*/{q->addr=p->addr;q->size=p->size;has=1;/*输入作业名存在标志位*/if(p==as)as=p->link;/*在已分配作业队列中删除该作业*/else{k=as;while(k->link!=p)k=k->link;k->link=k->link->link;/*删除*/}printf("输出该作业首地址:%d",q->addr);printf("输出该作业大小:%d

8、n",q->size);q->link=NULL;break;}else{p

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

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

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