ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:207KB ,
资源ID:7189875      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7189875.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(实验报告二主存空间分配及回收.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

实验报告二主存空间分配及回收.doc

1、《操作系统原理》实验报告 实验序号:2          实验项目名称:主存空间的分配和回收 学  号 姓  名 专业、班 实验地点 指导教师 时间 2010.11.15 一、实验目的 通过本实习帮助理解在不同的存储管理方式下应怎样进行存储空间的分配和回收。 二、实验设备(环境)及要求 微机、C++ 三、实验题目 在可变分区管理方式下采用首次适应算法实现主存分配和回收。 四、程序中使用的数据结构及符号说明 结构1: typedef struct freeTable { char proID[6]; int startA

2、ddr; /*空闲区起始地址*/ int length; /*空闲区长度,单位为字节*/ int flag; /*空闲区表登记栏标志,用"0"表示空表项,用"1"表示未分配*/ struct freeTable *next; }freeTabNode; /*空闲区表结点*/ 程序中定义了三个函数: allocate(char PName[],int PLength)分配主存空间 InitFreeTab()显示主存使用情况 reclaim(char PName[]),回收作业名为PName的作业所占主存空间 五、源程序 /* 程序功能:模拟主

3、存空间的分配与回收 其中空闲表为单链表,没有长度限制 */ #include #include #include #include #define minisize 1 typedef struct freeTable { char proID[6]; int startAddr; /*空闲区起始地址*/ int length; /*空闲区长度,单位为字节*/ int flag; /*空闲区表登记栏标志,用"0"表示空表项,用"1"表示未分配*/

4、struct freeTable *next; }freeTabNode; /*空闲区表结点*/ freeTabNode *freeTab; void InitFreeTab() { freeTabNode *f,*temp; f=(freeTabNode *)malloc(sizeof(freeTabNode)); strcpy(f->proID,"OS"); f->startAddr=0; f->length=5;f->flag=0; freeTab=f; f=(freeTabNode *)malloc(sizeo

5、f(freeTabNode));; strcpy(f->proID,"1"); f->startAddr=5; f->length=5;f->flag=0; freeTab->next=f; temp=f; f=(freeTabNode *)malloc(sizeof(freeTabNode)); strcpy(f->proID,"3"); f->startAddr=10; f->length=4;temp->flag=0; temp->next=f; temp=temp->next; f=(

6、freeTabNode *)malloc(sizeof(freeTabNode)); f->startAddr=14; f->length=12; f->flag=1; temp->next=f;temp=temp->next; f=(freeTabNode *)malloc(sizeof(freeTabNode)); strcpy(f->proID,"2"); f->startAddr=26; f->length=6;f->flag=0; temp->next=f;temp=temp->next; f=(freeTa

7、bNode *)malloc(sizeof(freeTabNode)); f->startAddr=32; f->length=96; f->flag=1; f->next=NULL; temp->next=f; } void allocate(char PName[],int PLength) { freeTabNode *f,*temp; f=freeTab; while(f) /*寻找空间大于PLength的最小空闲区登记项k*/ { if(f->length>=PLength&&f->flag==1) break;

8、 f=f->next; } if(!f)/*未找到可用空闲区,返回*/ { printf("无可用空闲区\n"); return; } /*找到可用空闲区,开始分配*/ if(f->length-PLength<=minisize) { /*空闲区大小与要求分配的空间差小于minisize大小,空闲区全部分配*/ strcpy(f->proID,PName); f->flag=0; /*修改成空表目状态*/ } else { /*若空闲区大小与要求分配的空间差大于minisiz

9、e大小,从中划出一部分分配*/ f->length=f->length-PLength; temp=(freeTabNode *)malloc(sizeof(freeTabNode)); strcpy(temp->proID,PName); temp->startAddr=f->startAddr+f->length; temp->length=PLength; temp->flag=0; temp->next=NULL; temp->next=f->next; f->next=temp; }

10、 return; }/*主存分配函数结束*/ void reclaim(char PName[]){ /*回收作业名为PName的作业所占主存空间*/ freeTabNode *front,*rear,*temp; temp=freeTab; /*寻找空闲表中对应登记项*/ if(strcmp(PName,"OS")==0) { printf("ERROR!"); return; } while((strcmp(temp->proID,PName)!=0||temp->flag==1)&&temp) temp=temp->next; if(!temp)

11、/*在已分配表中找不到名字为PName的作业*/ { printf("找不到该作业\n"); return; } /*寻找回收分区的空闲上下邻,上邻表目front,下邻表目rear*/ rear=temp->next; front=freeTab; while(front) { if(front->next==temp) break; front=front->next; }/*找到回收分区的上邻表目*/ if(rear==NULL) { if(front->flag==1) { front->length+=temp->length;

12、front->next=NULL; free(temp); } else temp->flag=1; } else { if(front->flag==1&&rear->flag==1) /* 上邻空闲区,下邻空闲区,三项合并*/ { front->length=front->length+rear->length+temp->length; front->next=rear->next; free(temp); free(rear); } else if(front->flag

13、1&&rear->flag==0){ /*上邻空闲区,下邻非空闲区,与上邻合并*/ front->length+=temp->length; front->next=rear; free(temp); } else if(front->flag==0&&rear->flag==1) /*上邻非空闲区,下邻为空闲区,与下邻合并*/ { temp->length+=rear->length; temp->next=rear->next; free(rear);

14、 temp->flag=1; } else /*上下邻均为非空闲区,回收区域直接作修改*/ temp->flag=1; } } main( ) { int a; freeTabNode *freeNode; char PName[6]; int PLength; InitFreeTab(); /*空闲分区表初始化:*/ while(1) { printf("**选择功能项**\n"); printf("\t0--退出\n\t1--分配主存\n\t2--回收主存\n\t3--显示主存

15、\n"); printf("选择项(0~3) :"); scanf("%d",&a); switch(a) { case 0: exit(0); /*a=0程序结束*/ case 1: /*a=1分配主存空间*/ printf("要分配的作业名PName:"); scanf("%s",PName); printf("\n和作业所需内存大小PLength(>1K): "); scanf("%d",&PLength); allocate(PName,PLength);/*分配主存空间*/ break;

16、 case 2: /*a=2回收主存空间*/ printf("输入要回收分区的作业名:"); scanf("%s",PName); reclaim(PName);/*回收主存空间*/ break; case 3: /*a=3显示主存情况*/ printf("--------------------------------------\n"); printf("内存分区表:\n"); printf("\t\t进程标识 起始地址 分区长度\t状态\n"); freeN

17、ode=freeTab; /*打印空闲区表*/ while(freeNode) { if(freeNode->flag==1) printf("\t\t空\t%5d\t%6d\t\t空闲\n",freeNode->startAddr,freeNode->length); else printf("\t\t%s\t%5d\t%6d\t\t空表目\n",freeNode->proID,freeNode->startAddr,freeNode->length); freeNode=freeNode->next;

18、 } getchar(); break; default:printf("没有该选项\n"); }/*case*/ }/*while*/ }/*main()*/ 六、运行调试结果 初始界面: 分配主存,五个作业名:P1、P2、P3、P4、P5 显示主存使用情况: 回收主存P2: 回收P5: 结束 七、实验心得和收获 1、函数功能要具体,每个函数完成的功能清晰高效 2、编程要有自己的风格 3、界面要整洁 七、教师评语 1.按时完成实验; 2.数据结构及符号说明完整明了; 3.有源程序清单; 4.运行调试结果有代表性; 5.实验报告的撰写认真、格式符合要求. 签名:金晶 日期: 成绩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服