版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告班级:计科0801班姓名:韩伟伟学号:08407106时间:2011-5-25实验五请求页式存储管理的页面置换算法一实验目的通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二实验属性设计三实验内容通过随机数产生一个指令序列,共320条指令,指令的地址按下述原则生产:50的指令是顺序执行的;25的指令是均匀分布在前地址部分;25的指令是均匀分布在后地址部分。将指令序列变换成为页地址流设页面大小为1K;用户内存容量为4页到32页;用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放
2、方式为:第0条至第9条指令为第0页;第10条至19条指令为第1页;第310条至319条指令为第31页。计算并输出下述各种算法在不同内存容量下的命中率。先进先出算法(FIFO)最近最少使用算法(LRU)最佳使用算(OPT)命中率=1页面失效次数/页地址流长度本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。四思路关于随机数的产生办法。首先要初始化设置随机数,产生序列的开始点,例如,通过下列语句实现:srand(400);计算随机数,产生320条指令序列m=160;for(i=0;i80;i+=j=i*4;aj=m;aj+1=m+1;aj+2=aj*
3、1.0*rand()/32767;aj+3=aj+2+1m=aj+3+(319-aj+3)*1.0*rand()/32767;将指令序列变换成为页地址流for(k=0;kV320;k+)pt=ak/10;pd=ak%10;计算不同算法的命中率rate=1-1.0*U/320;其中U为缺页中断次数,320是页地址流长度。输出格式kfifo1ru40.230.25321.01.0五实验报告1.写出你编写的C语言程序。#include#include#include#include#defineMyprintfprintf(|+|n)/*表格控制*/#definebsize4/物理块大小#defin
4、epsize16/进程大小typedefstructpageintnum;/*记录页面号*/inttime;/*记录调入内存时间*/Page;/*页面逻辑结构,结构为方便算法实现设计*/Pagebbsize;/*内存单元数*/intcbsizepsize;/*暂保存内存当前的状态:缓冲区*/intqueue100;/*记录调入队列*/intK;/*调入队列计数变量*/intphbbsize=0;/物理块标号intpropsize=0;/进程序列号intflagbsize=0;/进程等待次数(存放最久未被使用的进程标志)inti=0,j=0,k=0;/i表示进程序列号,j表示物理块号intm=-
5、1,n=-1;/物理块空闲和进程是否相同判断标志intmax=-1,maxflag=0;/标记替换物理块进程下标intcount=0;/统计页面缺页次数/*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*/I(?t4121Ii、人f/L)JI|/IllII*序列号函数/jsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsj
6、sjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsint*build()printf(随机产生一个进程序列号为:n);inti=0;for(i=0;ipsize;i+)proi=10*rand()/(RAND_MAX+1)+1;printf(%d,proi);printf(n);return(pro);/,-工-:丿、IJ-I/*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*
7、T*T*T*T*T*T*T*T*T*T*T*T*/II*Tf-TI/txI物理块/intsearchpb()for(j=0;jbsize;j+)if(phbj=0)m=j;returnm;break;return-1;/,-工-:JJ1II_.I/*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*T*/II*Tf/11I_II|_|I进程/intsearchpro()for(j=0;jbsize;j+
8、)if(phbj=proi)n=j;returnj;return-1;/j(rII厶、A1/IJLI存/jsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsvoidempty()for(i=0;iI页面置换算法/voidFIFO()for(i=0;ipsize;i+)m=searchpb();n=searchpro();/找flag值最大的for(j=0;jmaxflag)maxflag=flagj;
9、max=j;if(nif(m!=-1)phbm=proi;count+;flagm=0;for(j=0;j=m;j+)flagj+;m=-1;else1)/不存在相同进程/存在空闲物理块/进程号填入该空闲物理块/不存在空闲物理块phbmax=proi;flagmax=0;for(j=0;jbsize;j+)flagj+;max=-1;maxflag=0;count+;else/存在相同的进程phbn=proi;for(j=0;jbsize;j+)flagj+;n=-1;for(j=0;jbsize;j+)printf(%d,phbj);printf(n);printf(缺页次数为:dn,cou
10、nt);printf(n);/*初始化内存单元、缓冲区*/voidInit(Page*b,intcbsizepsize)inti,j;for(i=0;ipsize;i+)bi.num=-1;bi.time=psize-i-1;for(i=0;ibsize;i+)for(j=0;jpsize;j+)cij=-1;/*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/intGetMax(Page*b)inti;intmax=-1;inttag=0;for(i=0;imax)max=bi.time;tag=i;returntag;/*判断页面是否已在内存中*/intEquation(intf
11、old,Page*b)inti;for(i=0;i=0)bval.time=0;for(i=0;ibsize;i+)if(i!=val)bi.time+;elsequeue+K二fold;/*!己录调入页面*/val=GetMax(b);bval.num=fold;bval.time=0;for(i=0;ibsize;i+)if(i!=val)bi.time+;voidLRU()inti,j;K=-1;Init(b,c);for(i=0;ipsize;i+)Lruu(proi,b);c0i=proi;/*记录当前的内存单元中的页面*/for(j=0;jbsize;j+)cji=bj.num;/
12、*结果输出*/printf(内存状态为:n);Myprintf;for(j=0;jpsize;j+)printf(|%2d,proj);printf(|n);Myprintf;for(i=0;ibsize;i+)for(j=0;jpsize;j+)if(cij=-1)printf(|%2c,32);elseprintf(|%2d,cij);printf(|n);Myprintf;printf(n调入队列为:);for(i=0;iy*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*
13、y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*voidmain()intsel;doprintf(tttttt);printf(ttt欢迎进入操作系统界面ttt);printf(ttttttn);printf(ttt);printf(ttt虚拟内存ttt);printf(tttttt);printf(ttt1、产生随机序列ttt);printf(tttttt);printf(ttt2、最久未使用(LRU)ttt);printf(tttttt);printf(ttt3、先进先出(FIFO)ttt);printf(tttttt);printf(ttt4、最佳置换算
14、法(OPT)ttt);printf(tttttt);printf(ttt5、三种算法的比较()ttt);printf(tttttt);printf(ttt0、退出(Exit)ttt);printf(tttn);printf(请选择所要执行的操作(0/1/2/3/4/5):);scanf(%d,&sel);switch(sel)case0:printf(ttt再见!tttn);system(pause);break;case1:build();break;case2:printf(最久未使用算n);LRU();empty();printf(n);break;case3:printf(先进先出算n
15、);FIFO();empty();printf(n);break;case5:printf(先进先出算法n);FIFO();empty();printf(最久未使用算法n);LRU();empty();break;default:printf(请输入正确的选项号!);printf(nn);break;while(sel!=0);产生的随机序列:随机产生二个进程序列号为:16296.54998298641最近最少使用算法执行结果如下:漬苇域薔g的操作如Ill6I2l?I6l5I4l?I9l8t2l?IBI6I4llI:L:1:L:1:1:5:5:5:5:S:2:2:2:2:4:4:!6J5!6J
16、6S6J66i68iB8!8!8!8!8!IIISI2I2I2I4I4E4I4I4I4I4IGIGI6I::9:3:9:9:9:9:9:9:*?:*?:9:1:It2Vb4yyb4I秋员塞皴知11缺罚率:6.&875B0先进先出FIFO算法执行结果:总结体会请求页式存储管理的实现原理。请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量。页表包括页号和块号数据项,它们一一对应。根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。写出这三种页面置换算法的实现思想。FIFO算法总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。LRU算法淘汰的页面是最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。OP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学礼仪养成说课稿2025年10
- Understanding Culture教学设计中职基础课-基础模块1-教科版(2021)-(英语)-52
- 2025年储能电池管理系统客户满意度提升策略
- 人民大学版(第2版)说课稿-2025-2026学年中职中职专业课旅游类74 旅游大类
- 质量知识试题及答案
- 贵州省毕节织金县联考2026届毕业升学考试模拟卷英语卷含答案
- 某家具厂喷涂工艺管理细则
- 某家具厂设备检修规范
- 某玻璃厂浮法玻璃生产规程
- 高中适应2025能力说课稿
- 2026及未来5年中国氯磺化聚乙烯(CSM)行业市场动态分析及投资前景研判报告
- PCDN的介绍教学课件
- 行吊培训资料
- GB 4053.1-2025固定式金属梯及平台安全要求第1部分:直梯
- 指南抗菌药物临床应用指导原则(2025版)
- 知乎社区运营专员面试题集
- 2025年下半年湖北省十堰市郧阳区事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年及未来5年市场数据中国煤层气行业市场深度分析及发展前景预测报告
- 供热行业有限空间培训
- 商标运营授权合同范本
- 2025年高考甘肃物化生试卷及答案
评论
0/150
提交评论