操作系统lab4.doc_第1页
操作系统lab4.doc_第2页
操作系统lab4.doc_第3页
全文预览已结束

下载本文档

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

文档简介

xxxx大学操作系统课程实验报告实验题目: 储存管理 姓名:_ _xx_ 学号:_xxxxxxxxxx_ 班级: _ xxxxxx_指导教师: xxx 实验概述【实验目的及要求】通过模拟页面替换算法,感性认识操作系统对内存的管理。【实验原理】设计一个虚拟存储区和内存工作区,并使用下述页面替换算法计算访问命中率。其中,命中率页面失效次数页地址流长度。1. 先进先出算法(FIFO)2. 最近最少使用算法(LRU)首先用srand( )和rand( )函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。(1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:A:50%的指令是顺序执行的B:25%的指令是均匀分布在前地址部分C:25%的指令是均匀分布在后地址部分具体的实施方法是:A:在0,319的指令地址之间随机选取一起点mB:顺序执行一条指令,即执行地址为m+1的指令C:在前地址0,m+1中随机选取一条指令并执行,该指令的地址为mD:顺序执行一条指令,其地址为m+1E:在后地址m+2,319中随机选取一条指令并执行F:重复步骤A-E,直到320次指令(2)将指令序列变换为页地址流设:页面大小为1K;用户内存容量4页到32页;用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第 0 条-第 9 条指令为第0页(对应虚存地址为0,9)第10条-第19条指令为第1页(对应虚存地址为10,19)第310条-第319条指令为第31页(对应虚存地址为310,319)按以上方式,用户指令可组成32页。【实验环境】Linux gedit、终端实验内容【实验方案设计】#include#include#include #include#define NULL_1 10000const int ty=320;int d320; /指令序列int page320; /页地址流int p32; /内存页面int que; /缺页次数int time32; /记录页面距离上次被访问的时间/*初始化内存页面void creat(int leng) /leng为内存页面数量int i;que=0;for(i=0;ileng;i+)pi=NULL_1; /让内存页面置空timei=0;/*先进先出算法void FIFO(int leng) /leng为内存页面数量 int i,j,k;int n; /n为要被替换的页面号,按0,1,2.leng,0,1,2.leng循环变化creat(leng); /初始化内存页面n=0;for(i=0;ity;i+)k=0;for(j=0;jleng;j+)if(pj=NULL_1)break;else if(pj=pagei)/在内存中有该页k=1;break;if(k=0)que+;pn=pagei;n+;if(n=leng)n=0;printf(%-7.3ft,1-(float)que/ty); /*最近最久未使用算法void LRU(int leng) /leng为内存页面数量 int i,j,k;int tmax; /存time的最大值int t; /t为要被访问的页面号creat(leng); /初始化内存页面for(i=0;ity;i+)k=0;for(j=0;jleng;j+)if(pj=NULL_1)break;else if(pj=pagei)/在内存中有该页k=1;t=j;break;if(k=0)que+;tmax=time0;t=0;for(j=0;jleng;j+) /查找最久没访问的页面号赋予tif(tmaxtimej)tmax=timej;t=j;pt=pagei;for(j=0;jleng;j+) /将每个页面time自增timej+;timet=0; /将这次被访问的页面time清零printf( %-7.3ft,1-(float)que/ty);void main( ) int m,i; srand(10*getpid(); /用来作为初始化随机数队列的种子 m=(int)(float)(ty-1)*(rand()/(RAND_MAX+1.0); /选0-319中一数 for (i=0; ity; i+=4) /产生指令队列 di=m; /任选一指令访问点m di+1=di+1; /顺序执行一条指令m+1 di+2=(int)(float)di*(rand()/(RAND_MAX+1.0); /*执行前地址指令m,即选择(0,m+1)之间的数*/ di+3=di+2+1; /顺序执行一条指令 m= (int)(float)(ty-1)-di+2)*(rand()/(RAND_MAX+1.0) + di+2; /选(m+2,319)之间数 for(i=0;ity;i+) /将指令序列变换成页地址流 pagei=di/10; printf(PAGEtFIFOt LRUtn); for(i=4;i=32;i+) /内存从4页到32页 printf( %2dt,i); FIFO(i); LRU(i); printf(n); 运行结果:FIFO算法与LRU算法的命中率相差不大,一般在0.03以内,随着内存页面的增加,命中率上升,4页时一般在50%左右,32页一般在90%左右。分析:FIFO算法是以先进内存先替换而LRU是以最久没访问先替换,当内存中页面数量增加时,访问的内容在内存的概率会越高。小结这一次实验是对请求页式存储管理的一次模拟实验,设计和测试了FIFO和LRU这两种请求页式存储管理的页面置换算法的命中率。通过这次实验我了解虚拟存储技术的特点,并掌握了这两种请求页式存储管理的页面置

温馨提示

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

评论

0/150

提交评论