




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子信息学院实验报告书题目:实验三存储管理试验实验类别【验证】班级:BX0907学号:09姓名:吴沛儒评语:实验态度:认真()一般()实验结果:正确()部分正确()实验理论:掌握()熟悉()操作技能:强()一般()实验报告:好()一般()成绩:指导教师:胡靛批阅时间:课程名Linux操作系统实验 1、实验内容或题目(1)模拟初始内存页面分配(数组、结构体均可)(2)实现 Buddyheap 算法(3)通过键盘输入随机产生申请和释放操作请求:r8 代表申请 8 个页面。释放:f4 代表释放 4 个页面。(4)每个申请或释放操作,都在屏幕上显示操作前与操作后的内存分配的对比图(5)实验假设申请和释
2、放的页数都是 2 的整次幕。(1)建立工作集页面模型。(2)利用随机函数动态生成进程访问页面的序列号。(3)实现 FIFO 页面淘汰算法。(4)实现页故障率反馈模型。2、实验目的与要求(1)用 C 语言是实现模拟 Linux 系统中连续内存分配用到的伙伴对算法。(2)通过链表的形式输出在内存申请和释放过程中内存状态的对比图。(1)了解工作集模型的原理及其特点(2)实现页故障率反馈模型。3、实验步骤与源程序1.Buddyheap 算法模拟源程序;#include#includetypedefstructblockintstart;intloc;structblock*next;structblo
3、ck*prior;intmaxsize=512;block*note;block*id10;voidprintmem()inti;for(i=9;i=0;i-)printf(%d-”,i);block*temp=(structblock*)malloc(sizeof(structblock);temp=idi-next;while(temp!=NULL)printf(%d(%s)(%d)-,temp-size,temp-loc=1?占用:空闲,temp-start);temp=temp-next;)printf(n);)voidinit()inti;for(i=0;iprior=idi;idi
4、-next=NULL;)note=(structblock*)malloc(sizeof(structblock);note-size=maxsize;note-start=0;note-loc=0;note-next=NULL;id9=(structblock*)malloc(sizeof(structblock);id9-next=note;id9-prior=id9;note-prior=id9;printmem();)intpower(intx,inty)intk=0,tmp=1;for(;knext;intflag=0,isFirst=0;isFirst+;if(flag=0)tem
5、pId=tempId+1;if(tempIdnext;intnextStart=first-start+first-size;intpreStart=first-start-first-size;intflag=0,isFirst=0;while(second!=NULL)if(second-start=nextStart|second-start=preStart)&second-loc=0)merger-size=(first-size)+(second-size);merger-loc=0;merger-start=(first-start)start)?(first-start
6、):(second-start);while(pend!=NULL)if(pend-loc=0)if(isFirst=0)idtempId-next=pend-next;elsepend-prior-next=pend-next;intsize=(pend-size)/2;intstart=pend-start;newu-size=size;newu-start=start;newf-start=start+size;newu-loc=0;newf-size=size;newf-loc=0;newf-prior=newu;newu-next=newf;newf-next=NULL;tempId
7、-;cend=idtempId;while(cend-next!=NULL)cend=cend-next;cend-next=newu;newu-prior=cend;flag=1;return1;elsepend=pend-next;return0;if(first-next!=NULL)first-next-prior=first-prior;)if(first-prior-prior)=first-prior)idtempId-next=first-next;elsefirst-prior-next=first-next;if(second-next!=NULL)second-next-
8、prior=second-prior;if(isFirst=0)idtempId-next=second-next;elsesecond-prior-next=second-next;tempId+;merger-next=idtempId-next;merger-prior=idtempId;if(idtempId-next!=NULL)idtempId-next-prior=merger;idtempId-next=merger;if(tempIdnext;isFirst+;return1;intfreeb(intsize)block*first=(structblock*)malloc(
9、sizeof(structblock);inttempId=root(2,size);first=idtempId-next;intflag=0;while(first!=NULL)if(first-loc=1)first-loc=0;flag=1;break;elsefirst=first-next;if(flag=1)merge(tempId,first);printmem();elseprintf(需要释放的内存块不存在!n);return1;)intrequestb(intsize)block*temp=(structblock*)malloc(sizeof(structblock);
10、inttempId=root(2,size);intflag=0;temp=idtempId-next;while(temp!=NULL)if(temp-loc=0&temp-size=size)temp-loc=1;flag=1;printf(分配成功!n);printmem();return1;elsetemp=temp-next;if(flag=0)tempId+;if(tempId512(空闲)()-8-请输入命令:(以空格相隔,示例:8)r12B分配成功19*B2256(空闹)(Z56)-A7。1加(占用)伊)128(空闹)(128卜6-瞿否认续建1继续,日退出):1请输入命
11、令;(以空格相隔,示例了8)r54分配成功1金jackietpjckie-laptop:文件(F)编辑E)查看(v推索循)理端露帮助(H)请输入命令:(以空格相隔,示例订8)f649-8受7H1Z8(占用)(G】Z8(占用)(”5)-1如(空闲)(384)*6-64(空闹)(128)264(占用)(192)2-%1-柒否餐续乂工继续,。退出):1请输入命令:(以空格相隔.示例:8)f649*8-7。1加(空闹)(128)。12削占用)(13)4128(占用)(256)。128(空闹)。84)。6-2-1-瞿否认续建1继续,日退出):1请输入命令;(以空格相隔,示例了8)fl282.页故障率反馈
12、模型源程序;#include#include#include#defineMAX_WORKSET10#defineWINDOW_SIZE20intmempage=10;intprocArrayWINDOW_SIZE;intwinMAX_WORKSET2;doublemaxRate=0.8,minRate=0.2;doublecurRate;intcur_workset=3;intconflictCount=0;voidprint()curRate=(double)conflictCount/(double)WINDOW_SIZE;printf(缺页故障率:g,故障率上限/下限:%g/%gn,c
13、urRate,maxRate,minRate);voidchangeArray()inti;for(i=0;iWINDOW_SIZE;i+)procArrayi=rand()%mempage;printf(进程调用页面序列:);for(i=0;iWINDOW_SIZE;i+)printf(%d|,procArrayi);printf(n);voidinit()inti,j;changeArray();for(i=0;iMAX_WORKSET;i+)wini0=-1;wini1=cur_workset;voidchangePage(intnumber)inti,flag=0;for(i=1;ic
14、ur_workset;i+)if(winflag1=wini1)flag=i;winflag0=procArraynumber;winflag1=1;conflictCount+;for(i=0;icur_workset;i+)if(i!=flag&wini1!=-1)wini1+;voidstep(intnumber)inti,hit=0;for(i=0;icur_workset;i+)if(procArraynumber=wini0)/number+;hit=1;break;)if(hit=0)changePage(number);)voidrun()inti;conflictCo
15、unt=0;changeArray();for(i=0;iWINDOW_SIZE;i+)step(i);)printf(冲突次数:d,conflictCount);)voidfeedback()curRate=(double)conflictCount/(double)WINDOW_SIZE;cur_workset+;elseif(curRatemaxRate)jackie)jackie-laptop:文件什)编辐(E)查看(V)隈索蟀箱(T)胡助(H)jackiejackie-laptopgcc-owsmratewsnrate,cjackiejackie-laptopr-S*/wsmrate
16、进程调用页面序列:36|7|5|3|56|Z|9|l|2|7|B|9|3|6|e|6|2|6|冲突次数:16,缺页故障率:(3.8,故障率上限/下限:0.8/32输入任意字符继续,q退出W进程调用页面序列:1|8|7|9|2|0|2|3|7|5|9|2|2|8|9|7|3|6|1|2|冲突次数:17,缺页故障率:0.85,故障率上限/下限:0+8/0,2输入任意字符罐续,q退出P进程调用页面序列:9|1|9|4|78|4|5|0|3|6|1|6|6|3|2|0|6|1|冲突次数:12,缺页故障率:6.6j故障率上限/下限:0,8/0,2输入任意字符维埃,q退出进程调用页面序列:5|5H|7|6
17、|5|6|9|3|7|4|5|2|5|4|7MH|3|0|冲突次数:12,缺页故障率:0.6,故障率上限/下限:e,8/0.2输入任意字符维续,q退出4、结果分析与实验体会存储管理是操作系统中最重要的组成部分之一。在早期计算时代,由于人们所需要的内存数目远远大于物理内存,人们设计出了各种各样的策略来解决此问题,其中最成功的是虚拟内存技术。它使得系统中为有限物理内存竞争的进程所需内存空间得到满足。我们以 BuddyHeap 算法为例,实现模拟 Linux 系统中连续内存分配。BH 算法具有速度快的明显特点,同时解决了外碎片问题,但带来内碎片,这是由于实际请求一般不能恰好与相对应,此时必须向上取整。对于更大块的请求内碎片的浪费更严重。为此 Linux 将剩余的内碎片按 2j整数次塞切片并由二次分配器进行单独管理。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历年中考英语2017江西英语试卷+答案+解析
- 简易逻辑测试题及答案
- 酒店单位合同协议书
- 气焊工试题库及答案
- 婚礼搭建合同协议书
- 个人聘用合同协议书
- 2025年工业互联网平台增强现实交互技术在人工智能与智慧城市建设中的应用报告
- 淘宝合同协议书
- 劳动终止合同协议书
- 关香蕉的合同协议书
- 遥控器检验作业指导书
- DBJ41∕T 228-2019 河南省房屋建筑施工现场安全资料管理标准
- 三级安全教育考试试题(的)
- DB13 5325-2021 生活垃圾焚烧大气污染控制标准
- 芒针疗法课件
- 鼓乐铿锵课件 (2)
- 小学二年级下册科学课件1.《春夏秋冬》大象版(22张)ppt课件
- 钢结构工程质量通病防治图册
- 鼻咽癌放疗临床路径
- 地下水八大离子-阴阳离子平衡计算公式
- 派力肯安全防护箱
评论
0/150
提交评论