操作系统第六次-内存分配与回收模拟(共8页).doc
《操作系统第六次-内存分配与回收模拟(共8页).doc》由会员分享,可在线阅读,更多相关《操作系统第六次-内存分配与回收模拟(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上操作系统课程实验报告姓名学号系计算机任课教师指导教师评阅教师实验地点丽泽楼C304-2 丽泽楼C304-1 (请勾选实际实验地点)实验时间实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得分:实验总分(Q1+Q2+Q3+Q4)实验完成情况Q2(45分(组长评分,教师根据实际情况微调)得分:实验编号与实验名称:第六次实验 内存分配与回收模拟实验目的:通过使用位图跟踪内存使用情况,模拟和评价不同的内存分配算法;熟悉内存分配和回收。实验内容及要求(详见实验讲义与实验指导书):1)要求用你熟悉的程序设计语言编写和调试一个内存分配和回收模拟程序;要求在主函数中测试
2、。2)实验报告中必须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法描述和算法流程图)、源代码、运行结果、体会等部分。3)必须模拟该4种内存分配算法:first fit,next fit,best fit和worst fit中的至少2种。4) 需显示出每次分配和回收后的空闲分区链的情况来以及内存占用情况图,并统计各种算法产生的碎片空闲区(小于3个单元(unit)的空闲区)数。5)计算2个性能参数:碎片数、平均搜索空闲区次数实验内容及关键步骤(流程图) First fit next fit实验内容及关键步骤(代码)Q3(15分)(1)First fit 代码 运行结果#include
3、struct not_empty/已分配分区表char process_id;/作业标志符,此处采用-255的整数 int address_of_start;/起始地址int size_of_notempty;/作业请求的内存单元数int delete_or_not; /进程是否被创建,是否 Not_Empty20;void printnow(char ram)/输出内存分配情况 int i;for(i=1;i=128;i+)printf(%c,rami);if(i%11=0)printf(n); printf(n);void printfree(char ram)/输出内存空闲区和内存空闲碎
4、片int i,flag=0,can_not_use=0;printf(空闲区间为:n); for(i=1;i=0&rami=9)printf(%dn,i-1);if(i-1-flag3)can_not_use+;flag=0;printf(内存空闲碎片数为:%dn,can_not_use);int main()int time=0;char ram129,id,del;int flag=0,i,j,cos,size,what;int used_total=0;int cancreat_ornot=0;for(i=0;i20;i+) Not_Emptyi.delete_or_not=1;for(
5、i=1;i=128;i+)rami=o;printf(1,分配; 2,回收;n3,内存占用情况图; 4,退出;n); while(scanf(%d,&what)&what!=4)if(what=1)avetime=0;printf(请输入进程id(0255),占用空间大小(010)n);getchar();scanf(%c %d,&id,&cos);/输入进程id和所需空间if(Not_Emptyid-48.delete_or_not=0)/判断进程是否已经被创建printf(进程已存在!n); else for(i=1;i=128;i+)if(flag=0)if(rami=o)/判断该内存单
6、元是否为空,是则标记第一个空的内存单元位置,已知连续的空闲单元为flag=i;size=1; elseif(size=cos)/如果连续的内存单元等于进程所需内存大小,则记录相应信息Not_Emptyid-48.process_id=id;Not_Emptyid-48.address_of_start=flag;Not_Emptyid-48.size_of_notempty=cos;Not_Emptyid-48.delete_or_not=0;ramflag=id;cancreat_ornot=1;/标记进程分配内存成功for(j=flag+1;jflag+size;j+)ramj=x;/把已
7、分配的内存标记为x break;if(rami=o)size+;else flag=0; if(cancreat_ornot=0)printf(没有足够的内存空间!n);elsecancreat_ornot=0;flag=0;printnow(ram);printfree(ram); else if(what=2)printf(请输入要删除的进程号n);getchar();scanf(%c,&del); /for(i=0;iused_total;i+)if(Not_Emptydel-48.process_id=del)if(Not_Emptydel-48.delete_or_not=0)/确认
8、进程是否已销毁过for(j=Not_Emptydel-48.address_of_start;jNot_Emptydel-48.address_of_start+Not_Emptydel-48.size_of_notempty;j+)ramj=o;printnow(ram);printfree(ram);Not_Emptydel-48.delete_or_not=1;/标记已经销毁elseprintf(进程不存在或已销毁!n); if(what=3)printnow(ram);printf(1,分配; 2,回收;n3,内存占用情况图; 4,退出;n); (2) next fit代码 运行结果#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第六 内存 分配 回收 模拟
限制150内