




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东英才学院计算机电子信息工程学院实验报告成绩_课程名称 计算机操作系统 指导教师 实验日期 院(系) 专业班级 实验地点 学生姓名 学号 实验项目名称 实验四 存储管理设计 一、实验目的和要求通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、实验原理(一)请求页式存储管理的实现原理。请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量。页表包括页号和块号数据项,它们一一对应。根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。(二)三种页面置换算法的实现思想。FIFO算法总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。LRU算法淘汰的页面是最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。OPT算法,当要调入一页而必须淘汰旧页时,应该淘汰以后不再访问的页,或距现在最长时间后要访问的页面。三、主要仪器设备或材料 WindowsXP和CV+6.0集成开发环境四、实验方法与步骤(可加附页)(一)实验内容1.通过随机数产生一个指令序列,共320条指令,指令的地址按下述原则生产:50的指令是顺序执行的;25的指令是均匀分布在前地址部分;25的指令是均匀分布在后地址部分。2.将指令序列变换成为页地址流设页面大小为1K;用户内存容量为4页到32页;用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条至第9条指令为第0页;第10条至19条指令为第1页;第310条至319条指令为第31页。3.计算并输出下述各种算法在不同内存容量下的命中率。(1) 先进先出算法(FIFO) (2) 最近最少使用算法(LRU)(3) 最佳使用算(OPT) 命中率页面失效次数页地址流长度本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。(二)思路 关于随机数的产生办法。首先要初始化设置随机数,产生序列的开始点,例如,通过下列语句实现: srand ( 400 ) ; (1) 计算随机数,产生320条指令序列 m160;for (i0;i80;i+ ji4; ajm; aj+1m+1; aj+2aj 1.0 rand( )/32767; aj+3aj+2+1 maj+3+(319-aj+3) 1.0rand( )/32767; (2) 将指令序列变换成为页地址流 for ( k0;k320;k+) ptak/10; pd= ak%10; (3) 计算不同算法的命中率 rate1-1.0U/320 ; 其中U为缺页中断次数,320是页地址流长度。 (4) 输出格式 k fifo 1ru 4 0.23 0.25 32 1.0 1.0五、实验数据记录、处理及结果分析 实验的源代码及结果见附页六、讨论、心得对不同算法的性能进行评价。FIFO算法较易实现,对具有线性顺序特征的程序比较适用,而对具有其他特征的程序则效率不高,此算法还可能出现抖动现象(Belady)异常。LRU算法基于程序的局部性原理,所以适用用大多数程序,此算实现必须维护一个特殊的队列页面淘汰队列。OPT算法虽然产生的缺页数最少,然而,却需要预测程序的页面引用串,这是无法预知的,不可能对程序的运行过程做出精确的断言,不过此理论算法可用做衡量各种具体算法的标准。计算机电子信息工程学院实验报告(附页)设计算法源码:#include #include#include#include#define Myprintf printf(|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|n) /*表格控制*/ #define bsize 4 /物理块大小#define psize 16 /进程大小typedef struct page int num; /*记录页面号*/ int time; /*记录调入内存时间*/ Page; /* 页面逻辑结构,结构为方便算法实现设计*/ Page bbsize; /*内存单元数*/ int cbsizepsize; /*暂保存内存当前的状态:缓冲区*/ int queue100; /*记录调入队列*/ int K; /*调入队列计数变量*/ int phbbsize=0; /物理块标号int propsize=0; /进程序列号int flagbsize = 0; /进程等待次数(存放最久未被使用的进程标志)int i = 0, j = 0,k = 0; /i表示进程序列号,j表示物理块号int m = -1, n = -1; /物理块空闲和进程是否相同判断标志int max = -1,maxflag = 0; /标记替换物理块进程下标int count = 0; /统计页面缺页次数/*/*/随机产生序列号函数/*int* build()printf(随机产生一个进程序列号为:n);int i = 0; for(i=0; ipsize; i+) proi = 10*rand()/(RAND_MAX+1)+1; printf(%d ,proi); printf(n); return(pro);/*/查找空闲物理块/*int searchpb()for(j=0; jbsize; j+) if(phbj = 0) m = j; return m; break; return -1;/*/查找相同进程/*int searchpro()for(j = 0; j bsize; j+) if(phbj = proi) n = j; return j; return -1;/*/初始化内存/*void empty()for(i=0;ibsize;i+)phbi=0; count=0; /计数器置零/*/先进先出页面置换算法/*void FIFO() for(i = 0; ipsize; i+) m=searchpb(); n=searchpro();/找flag值最大的 for(j = 0; j maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同进程 if(m != -1) /存在空闲物理块 phbm = proi; /进程号填入该空闲物理块 count+; flagm = 0; for(j = 0;j = m; j+) flagj+; m = -1; else /不存在空闲物理块 phbmax = proi; flagmax = 0; for(j = 0;j bsize; j+) flagj+; max = -1; maxflag = 0; count+; else /存在相同的进程 phbn = proi; for(j = 0;j bsize; j+) flagj+; n = -1; for(j = 0 ;j bsize; j+) printf(%d ,phbj); printf(n); printf(缺页次数为:%dn,count);printf(n);/*/*/*初始化内存单元、缓冲区*/ void Init(Page *b,int cbsizepsize) int i,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; /*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/ int GetMax(Page *b) int i; int max=-1; int tag=0; for(i=0;imax) max=bi.time; tag=i; return tag; /*判断页面是否已在内存中*/ int Equation(int fold,Page *b) int i; for(i=0;i=0) bval.time=0; for(i=0;ibsize;i+) if (i!=val) bi.time+; else queue+K=fold;/*记录调入页面*/ val=GetMax(b); bval.num=fold; bval.time=0; for(i=0;ibsize;i+) if (i!=val) bi.time+; void LRU() int i,j; K=-1; Init(b, c); for(i=0;ipsize;i+) Lruu(proi,b); c0i=proi; /*记录当前的内存单元中的页面*/ for(j=0;jbsize;j+) cji=bj.num; /*结果输出*/ 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); else printf(|%2d ,cij); printf(|n); Myprintf; printf(n调入队列为:); for(i=0;iK+1;i+) printf(%3d,queuei); printf(n缺页次数为:%6dn缺页率:%16.6f,K+1,(float)(K+1)/psize); /*/主函数/*void main()int sel ; do printf(ttt-ttt);printf(ttt -欢迎进入操作系统界面- ttt);printf(ttt-tttn);printf(tttttt); printf(ttt 虚拟内存 ttt);printf(ttt-ttt); printf(ttt 1、产生随机序列 ttt);printf(ttt-ttt); printf(ttt 2、最久未使用(LRU) ttt);printf(ttt-ttt); printf(ttt 3、先进先出(FIFO) ttt);printf(ttt-ttt); printf(ttt 4、最佳置换算法(OPT) ttt);printf(ttt-ttt);printf(ttt 5、三种算法的比较() ttt);printf(ttt-ttt);printf(ttt 0、退出(Exit) ttt); printf(ttttttn); printf(请选择所要执行的操作(0/1/2/3/4/5):); scanf(%d,&sel); switch(sel) case0:printf(ttt-再见!- tttn);system(pause);break; case 1:build();break; case 2:printf(最久未使用算n);LRU();empty();printf(n);break; case 3:pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业环境管理体系认证与财务管理考核试卷
- 化肥销售合同中的合同履行中的质量争议处理流程考核试卷
- 人造板回收利用技术探讨考核试卷
- 材料生物降解速率测试考核试卷
- 残障人士运动训练跨学科合作研究考核试卷
- 货物验收报告编制规范考核试卷
- 三顾茅庐读书笔记15篇
- 口腔护理发展史
- 检察文化建设年活动方案
- 汽车全国活动方案
- GB/T 45719-2025半导体器件金属氧化物半导体(MOS)晶体管的热载流子试验
- 宝妈日常心理护理
- 2025年社会学概论测试题含答案(附解析)
- 2025-2030年环境工程产业深度调研及发展趋势与投资战略研究报告
- 2025年事业单位公开招聘考试(E类)《综合应用能力西医临床》试卷真题及完整解析
- 保险公司保单管理制度
- 2025年中国AI翻译行业市场全景分析及前景机遇研判报告
- 2025-2030中国酶联免疫吸附测定(ELISA)行业市场发展趋势与前景展望战略研究报告
- 2025年内蒙古众达人力资源公司招聘题库带答案分析
- 水利工程隐患排查课件
- 医药公司廉政管理制度
评论
0/150
提交评论