网站大量收购独家精品文档,联系QQ:2885784924

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

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

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

操作系统课程实验报告

姓名

学号

计算机

任课教师

指导教师

评阅教师

实验地点

丽泽楼C304-2丽泽楼C304-1(请勾选实际实验地点)

实验时间

实验课表现

出勤和个人表现Q1(15+15〔组长评分〕=30分)

得分:

实验

总分

(Q1+Q2+Q3+Q4)

实验完成情况Q2(45分(组长评分,教师根据实际情况微调))

得分:

实验编号与实验名称:

第六次实验内存分配与回收模拟

实验目的:

通过使用位图跟踪内存使用情况,模拟和评价不同的内存分配算法;熟悉内存分配和回收。

实验内容及要求〔详见实验讲义与实验指导书〕:

1〕要求用你熟悉的程序设计语言编写和调试一个内存分配和回收模拟程序;要求在主函数中测试。

2〕实验报告中必须包括:设计思想、数据定义〔包括详细说明〕、处理流程〔详细算法描述和算法流程图〕、源代码、运行结果、体会等局部。

3〕必须模拟该4种内存分配算法:firstfit,nextfit,bestfit和worstfit中的至少2种。

4〕需显示出每次分配和回收后的空闲分区链的情况来以及内存占用情况图,并统计各种算法产生的碎片空闲区〔小于3个单元〔unit〕的空闲区〕数。

5〕计算2个性能参数:碎片数、平均搜索空闲区次数

实验内容及关键步骤〔流程图〕

Firstfitnextfit

实验内容及关键步骤〔代码〕Q3〔15分〕

(1)Firstfit代码运行结果

#includestdio.h

structnot_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(\n);

}

printf(\n);

}

voidprintfree(charram[]){//输出内存空闲区和内存空闲碎片

inti,flag=0,can_not_use=0;

printf(空闲区间为:\n);

for(i=1;i=128;i++){

if(flag==0)

{

if(ram[i]==o)

{flag=i;printf(%d,flag-1);}

}

else

{

if(ram[i]==x||i==128||(ram[i]=0ram[i]=9)){

printf(%d\n,i-1);

if(i-1-flag3)

can_not_use++;

flag=0;}

}

}printf(内存空闲碎片数为:%d\n,can_not_use);

}

intmain(){

inttime=0;

charram[129],id,del;

intflag=0,i,j,cos,size,what;

intused_total=0;

intcancreat_ornot=0;

for(i=0;i20;i++)

Not_Empty[i].delete_or_not=1;

for(i=1;i=128;i++){

ram[i]=o;

}

printf(1,分配;2,回收;\n3,内存占用情况图;4,退出;\n);

while(scanf(%d,what)what!=4){

if(what==1){

ave[time]=0;

printf(请输入进程id(0~255),占用空间大小(0~10)\n);

getchar();

scanf(%c%d,id,cos);//输入进程id和所需空间

if(Not_Empty[id-48].delete_or_not==0)//判断进程是否已经被创立

{

printf(进程已存在!\n);

}

else{

for(i=1;i=128;i++){

if(flag==0)

{

if(ram[i]==o)//判断该内存单元是否为空,是那

文档评论(0)

199****4744 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档