计算机操作系统储存管理实验报告_第1页
计算机操作系统储存管理实验报告_第2页
计算机操作系统储存管理实验报告_第3页
计算机操作系统储存管理实验报告_第4页
计算机操作系统储存管理实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.软件学院综合性、设计性实验报告专业: java 年级/班级: 2012级 20132014学年第一学期课程名称 计算机操作系统指导教师学号-姓名1228524012-王宇菲实验地点过街楼B区实验时间2014-12-23项目名称储存管理实验类型综合性/设计性一、 实验目的通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、 实验仪器或设备实验机房pc电脑三、 总体设计(设计原理、设计方案及流程等)1.通过随机数产生一个指令序列,共320条指令,指令的地址按下述原则生产: 50的指令是顺序执行的;25的指令是均匀分布在前地址部分;25的指令

2、是均匀分布在后地址部分。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,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。关于随机数的产

3、生办法。首先要初始化设置随机数,产生序列的开始点,例如,通过下列语句实现: 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)

4、 输出格式 k fifo 1ru 4 0.23 0.25 32 1.0 1.0四、实验步骤(包括主要步骤、代码分析等)1代码如下#include #include#include#include#define Myprintf printf(|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|n) /*表格控制*/ #define bsize 4 /物理块大小#define psize 16 /进程大小typedef struct page int num; /*记录页面号*/ int time; /*记录调入内存时间*/ Page; /* 页面逻辑结构,结构为方便算法实现设

5、计*/ 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; /标记

6、替换物理块进程下标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 s

7、earchpro()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(

8、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+) print

9、f(%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

10、=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;

11、 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(

12、|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

13、(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)

14、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算法执行结果:总结体会请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量。页表包括页号和块号数据项,它们一一对应。根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址。每个作业的逻辑地址空间是连续的,重定位到内存空间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论