操作系统第六次 内存分配与回收模拟.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分(组长评分,教师根据实际情况微调)) 得分: 实验编号与实验名称: 第六次实验 内存分配与回收模拟 实验目的: 通过使用位图跟踪内存使用情况,模拟和评价不同的内存分配算法;熟悉设计思想、数据定义、处理流程、源、运行结果、体会等部分显示出每次分配和回收后的空闲分区链的情况来以及内存占用情况图#includestdio.h struct not_empty//已分配分区表 { char process_id;//作业标志符,此处采用-255的整数 int address_of_start;//起始地址 int size_of_notempty;//作业请求的内存单元数 int delete_or_not; //进程是否被创建,是否 } Not_Empty[20]; void printnow(char ram[]){//输出内存分配情况 int i; for(i=1;i=128;i++) { printf(%c,ram[i]); if(i%11==0) printf(\n); } printf(\n); } void printfree(char ram[]){//输出内存空闲区和内存空闲碎片 int i,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); } int main(){ int time=0; char ram[129],id,del; int flag=0,i,j,cos,size,what; int used_total=0; int cancreat_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)//判断该内存单元是否为空,是则标记第一个空的内存单元位置,已知连续的空闲单元为 {flag=i;size=1; } } else{ if(size==cos){//如果连续的内存单元等于进程所需内存大小,则记录相应信息 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;jflag+size;j++) ram[j]=x;//把已分配的内存标记为x br

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档