欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统实验(共10页).doc

    • 资源ID:14499314       资源大小:122KB        全文页数:10页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验(共10页).doc

    精选优质文档-倾情为你奉上沈 阳 工 程 学 院学 生 实 验 报 告实验室名称:计算机实验室 实验课程名称: 操作系统 实验项目名称:存储管理 (1) 实验日期: 2年 月 9 日班级: 姓名: 学号: 2 指导教师: 批阅教师: 成绩: 一实验目的通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟悉可变分区存储管理的内存分配和回收。二实验设备PC机一台,WIN-TC软件。三实验项目编写程序实现采用可变分区方法管理内存。1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表或链表。3、在设计好的数据结构上设计一个主存分配算法。4、在设计好的数据结构上设计一个主存回收算法。其中,若回收的分区有上邻空闲分区和(或)下邻空闲分区,要求合并为一个空闲分区登记在空闲分区表的一个表项里。5、(附加)若需要可以实现程序的浮动,对内存空间进行紧凑。四实验代码(附页)#include<stdio.h>#include<stdlib.h>#define OK 1 /完成 #define ERROR 0 /出错typedef int Status;typedef struct free_table/定义一个空闲区说明表结构int num; /分区序号long address; /起始地址long length;/分区大小 int state; /分区状态 ElemType;typedef struct Node/线性表的双向链表存储结构ElemType data;struct Node*prior;/前趋指针struct Node *next;/后继指针Node,*LinkList;LinkList first;/头结点LinkList end;/尾结点int flag;/记录要删除的分区序号Status Initblock()/开创带头结点的内存空间链表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;return OK;void sort()/分区序号重新排序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; /显示主存分配情况 void show() int flag=0;/用来记录分区序号 Node *p=first; p->data.num=0; p->data.address=0; p->data.length=40; p->data.state=1; sort(); printf("ntt主存空间分配情况n"); printf("*nn");printf("分区序号t起始地址t分区大小t分区状态nn");while(p) printf("%dtt%dtt%d",p->data.num,p->data.address,p->data.length); if(p->data.state=0) printf("tt空闲nn"); else printf("tt已分配nn"); p=p->next; printf("*nn"); /首次适应算法Status First_fit(int request) /为申请作业开辟新空间且初始化Node *p=first->next; LinkList temp=(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; return OK; break;else if(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->data.length;p->data.length-=request;p->data.num+=1;return OK;break;p=p->next;return ERROR;/最佳适应算法/分配主存Status allocation(int a)int request;/申请内存大小printf("请输入申请分配的主存大小(单位:KB):");scanf("%d",&request);if(request<0 |request=0)printf("分配大小不合适,请重试!");return ERROR;switch(a)case 1:/默认首次适应算法 if(First_fit(request)=OK) printf("t*分配成功!*"); else printf("t*内存不足,分配失败!*"); return OK; break; Status deal1(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->prior;q->data.state=0;q->data.num=flag;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&&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;if(q->prior->data.state!=0&&q->next->data.state!=0)q->data.state=0;return OK;Status deal2(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->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->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;return OK; /主存回收Status recovery(int flag)Node *p=first;for(;p!=NULL;p=p->next)if(p->data.num=flag)if(p->prior=first)if(p->next!=end)/当前P指向的下一个不是最后一个时if(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;else p->data.state=0;if(p->next=end)/当前P指向的下一个是最后一个时p->data.state=0;/结束if(p->prior=block_first)的情况else if(p->prior!=first)if(p->next!=end)deal1(p);elsedeal2(p);/结束if(p->prior!=block_first)的情况/结束if(p->data.num=flag)的情况printf("t*回收成功*");return OK;/主函数void main() int i;/操作选择标记int a;/算法选择标记printf("*n");printf("tt使用首次适应算法实现主存空间的分配n");printf("*n");printf("n");printf("请输入1调用内存分配算法:");scanf("%d",&a);while(a<1|a>1)printf("输入错误,请重新输入所使用的内存分配算法:n");scanf("%d",&a);switch(a)case 1:printf("nt*使用首次适应算法:*n");break;Initblock();/开创空间表while(1)show();printf("t1: 分配内存t2: 回收内存t0: 退出n");printf("请输入您的操作:");scanf("%d",&i);if(i=1)allocation(a);/分配内存else if(i=2)/内存回收printf("请输入您要释放的分区号:");scanf("%d",&flag);recovery(flag);else if(i=0)printf("n退出程序n");break;/退出else/输入操作有误printf("输入有误,请重试!");continue;五实验结果进行程序调试,调试结果如下5.1开始界面,如图5-1所示。图5-15.2分配内存,如图5-2所示。图5-25.3回收内存及合并分区。回收内存,释放序号为1,5的分区,如图5-3所示。图5-3释放序号为4的分区,此时发现有下邻分区,将其合并,如图5-4所示。图5-4释放序号为2的分区,此时发现有上邻分区,将其合并,如图5-5所示。图5-5成绩评定程序正确性2.521.510.50结果正确性2.521.510.50分析正确性543210成 绩专心-专注-专业

    注意事项

    本文(操作系统实验(共10页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开