操作系统第六次 内存分配与回收模拟

操作系统第六次 内存分配与回收模拟

ID:39190402

大小:254.97 KB

页数:8页

时间:2019-06-26

操作系统第六次 内存分配与回收模拟_第1页
操作系统第六次 内存分配与回收模拟_第2页
操作系统第六次 内存分配与回收模拟_第3页
操作系统第六次 内存分配与回收模拟_第4页
操作系统第六次 内存分配与回收模拟_第5页
资源描述:

《操作系统第六次 内存分配与回收模拟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统课程实验报告姓名学号系计算机任课教师指导教师评阅教师实验地点丽泽楼C304-2丽泽楼C304-1(请勾选实际实验地点)实验时间实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得分:实验总分(Q1+Q2+Q3+Q4)实验完成情况Q2(45分(组长评分,教师根据实际情况微调))得分:实验编号与实验名称:第六次实验内存分配与回收模拟实验目的:通过使用位图跟踪内存使用情况,模拟和评价不同的内存分配算法;熟悉内存分配和回收。实验内容及要求(详见实验讲义与实验指导书):1)要求用你熟悉的程序设计语言编写和调试一个内存分配和回收模拟程序;要求在主函数中测试。2)实验报告中必

2、须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法描述和算法流程图)、源代码、运行结果、体会等部分。3)必须模拟该4种内存分配算法:firstfit,nextfit,bestfit和worstfit中的至少2种。4)需显示出每次分配和回收后的空闲分区链的情况来以及内存占用情况图,并统计各种算法产生的碎片空闲区(小于3个单元(unit)的空闲区)数。5)计算2个性能参数:碎片数、平均搜索空闲区次数实验内容及关键步骤(流程图)Firstfitnextfit实验内容及关键步骤(代码)Q3(15分)(1)Firstfit代码运行结果#includestruct

3、not_empty//已分配分区表{charprocess_id;//作业标志符,此处采用-255的整数intaddress_of_start;//起始地址intsize_of_notempty;//作业请求的内存单元数intdelete_or_not;//进程是否被创建,是否}Not_Empty[20];voidprintnow(charram[]){//输出内存分配情况inti;for(i=1;i<=128;i++){printf("%c",ram[i]);if(i%11==0)printf("");}printf("");}voidprintfree(charram[

4、]){//输出内存空闲区和内存空闲碎片inti,flag=0,can_not_use=0;printf("空闲区间为:");for(i=1;i<=128;i++){if(flag==0){if(ram[i]=='o'){flag=i;printf("%d",flag-1);}}else{if(ram[i]=='x'

5、

6、i==128

7、

8、(ram[i]>='0'&&ram[i]<='9')){printf("%d",i-1);if(i-1-flag<3)can_not_use++;flag=0;}}}printf("内存空闲碎片数为:%d",can_not_use);}in

9、tmain(){inttime=0;charram[129],id,del;intflag=0,i,j,cos,size,what;intused_total=0;intcancreat_ornot=0;for(i=0;i<20;i++)Not_Empty[i].delete_or_not=1;for(i=1;i<=128;i++){ram[i]='o';}printf("1,分配;2,回收;3,内存占用情况图;4,退出;");while(scanf("%d",&what)&&what!=4){if(what==1){ave[time]=0;printf("请输入进程id(

10、0~255),占用空间大小(0~10)");getchar();scanf("%c%d",&id,&cos);//输入进程id和所需空间if(Not_Empty[id-48].delete_or_not==0)//判断进程是否已经被创建{printf("进程已存在!");}else{for(i=1;i<=128;i++){if(flag==0){if(ram[i]=='o')//判断该内存单元是否为空,是则标记第一个空的内存单元位置,已知连续的空闲单元为{flag=i;size=1;}}else{if(size==cos){//如果连续的内存单元等于进程所需内存大小,则记录

11、相应信息Not_Empty[id-48].process_id=id;Not_Empty[id-48].address_of_start=flag;Not_Empty[id-48].size_of_notempty=cos;Not_Empty[id-48].delete_or_not=0;ram[flag]=id;cancreat_ornot=1;//标记进程分配内存成功for(j=flag+1;j

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

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

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