




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉轻工大学数学与计算机学院操作系统课程设计说明书题 目: 页式虚拟存储管理页面置换算法 专 业: 班 级: 学 号: 姓 名: 指导老师: 2015年5月26日目录一、 设计目的二、 设计内容三、 基本原理和解决方案四、 实验内容 五、 流程图六、 源代码七、 运行结果八、 实验总结(心得体会)一、 设计目的通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、 设计内容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。(3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。三、 基本原理和解决方案存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚拟存储的技术对内存进行扩充。实现虚拟存储的一个主要技术手段就是将辅存和主存统一管理,在二者之间进行对换,从而形成物理上两级而逻辑上一级的存储管理系统。一个置换算法的好坏对这个逻辑上的单级虚存的性能起着极其重要的作用,而且会影响处理机的调度性能。 对于本任务规定的前提:页面分配采用固定分配局部置换,则置换发生的时机是作业已经将操作系统分配的固定数目的物理块全部用完且发生缺页的时候。此时必须要将已经装入内存的部分逻辑页面换出以便将所缺的页面调入内存。置换算法就是一个决定将内存中“哪一个”页面换出的算法。四、 实验内容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,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。五、 流程图将页号放入物理块中,编号加1引用串编号大于物理块数?载入页号序列,从第0个得到页号开始页号在物理块中?根据选择的置换算法完成置换页号序列载完?结束是否是是是是六、 源代码#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:printf(先进先出算n);FIFO();empty();printf(n);break; case 5:printf(先进先出算法n);FIFO();empty();printf(最久未使用算法n);LRU();empty();break; default: printf(请输入正确的选项号!);printf(nn);break;while(sel!=0);七、 运行结果八、 实验总结请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量。页表包括页号和块号数据项,它们一一对应。根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。FIFO算法总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。LRU算法淘汰的页面是最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏电站节能改造与运维服务承包协议
- 废旧金属回收与环保技术研发合作协议
- 智能家居电商3D产品模型设计与用户反馈服务协议
- 跨界新能源汽车电池梯次利用环保产业合作协议
- 购物中心运动品牌区品牌入驻与委托经营合同
- 网络游戏虚拟道具设计版权授权及衍生品开发协议
- 抖音直播平台内容创作者权益保障协议
- 箱包鞋帽五金配件品牌授权与销售合作协议
- 产业园区厂房租赁及人才引进合作协议
- 模具行业技术改造质量检测与改进服务协议
- 2024年安徽演艺集团有限责任公司招聘笔试真题
- 《宝马汽车营销策略》课件
- 2024年宁夏银川公开招聘社区工作者考试试题答案解析
- 5why培训试题及答案
- 雾化操作流程与注意事项
- 护理MDT多学科协作模式
- 英语试题2025年东北三省四城市联考暨沈阳市高三质量监测(二)及答案
- 2021电力电缆隧道监测及通信系统设计技术导则
- 第十五讲新时代与中华民族共同体建设2012--第十六讲文明新路与人类命运共同体-中华民族共同体概论专家大讲堂课件
- 2025年快递业务员快件处理等职业技能资格知识考试题(附答案)
- 医院护工招标合同范例
评论
0/150
提交评论