操作系统实验_第1页
操作系统实验_第2页
操作系统实验_第3页
操作系统实验_第4页
操作系统实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

实 验 报 告 书学 生 姓 名 学 号 班 级 2011 2012 学年 第 一 学期计算机操作系统实验报告实验名称 存储管理实验序号实验二实验日期2012-12-17实验人高 雪一、实验目的和要求 请求页式存储管理是一种常用的虚拟存储管理技术。本实验目的是通过请求页式存储管理中页面置换算法的模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二、相关背景知识 虚拟存储技术:所谓虚拟存储,就是把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就称之为虚拟存储。 页面置换算法:如果内存空间已被装满而又要装入新页时,必须按某种算法将内存中的一些页淘汰出去,以便于调入新页,这个工作就是页面置换。这个选择淘汰页的方法称为页面置换算法。如最佳值换算法,先进先出,LRU,简单的Clock算法等等。 随机数产生:Linux或UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。三、实验内容1:通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在后地址部分;具体的实施方法是:在0,319的指令地址之间随机选取一起点m;顺序执行一条指令,即执行地址为m+1的指令;在前地址0,m+1中随机选取一条指令并执行,该指令的地址为m;顺序执行一条指令,其地址为m+1;在后地址m+2, 319中随机选取一条指令并执行;重复上述步骤15,直到执行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页。3:计算并输出下述各种算法在不同内存容量下的命中率。先进先出页面淘汰算法(FIFO)最近最久未使用页面淘汰法(LRU)命中率=1 - 页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令对应的页不在内存的次数。4、 关键数据结构与函数的说明void FIFO(int*);/FIFO页面算法的函数void LRU(int*);/LRU 页面算法的函数数组 zhiling320是用来存放320条指令的void main() 用来调度FIFO LRU函数,以及给320条指令初始化,并且给执行过的指令改变数值作为标记五、编译与执行过程截图六、实验结果与分析七、调试时遇到的问题及解决方法(提供BUG截屏)八、调试后的程序源代码#include#include#include#includevoid FIFO(int*);/FIFOvoid LRU(int*);/LRUvoid main()srand(unsigned)time(0);int zhiling320,n;int i,j,q=319,p,e,f,g;memset(zhiling,-1,sizeof(int)*320);p=0;i=320;while(i)again:dop=rand();while(p318|p%2=1|zhilingp!=-1|p=1);if(p=0) goto again;p+;g=0;for(j=0;jp;j+)if(zhilingj=-1) g+;if(g=0) goto again;doe=rand();while(e=p|e%2=1|zhilinge!=-1);e+;dof=rand();while(f319);zhilingp-1=p;zhilingp=e-1;zhilinge-1=e;zhilinge=f;g=0;for(j=0;j320;j+)if(zhilingj=-1) g+;i=g;for(i=0;i320;i+)printf(%d ,zhilingi);dodoprintf(算法:n1:FIFOn2:LRUn3:exitn);scanf(%d,&p);while(p!=1&p!=2&p!=3);if(p=1)FIFO(zhiling);if(p=2)LRU(zhiling);while(p!=3);void FIFO(int *c)int i,j,n,*m,a=0,b=0,f;float r;doprintf(请输入用户内存页数(4-32)n);scanf(%d,&n);while(n32);m=(int*)malloc(sizeof(int)*n);memset(m,-1,sizeof(int)*n);for(i=0;i320;i+)f=0;for(j=0;jn;j+)if(ci=mj*10)f=1;if(f=0)a+;mb=ci/10;b+;if(b=n) b=0;r=1.0-(float)a)/320.0;printf(FIFO算法命中率为:%fn,r);free(m);void LRU(int *c)int i,j,n,*m,*t,f,k,miss=0;float r;doprintf(请输入用户内存页数(4-32)n);scanf(%d,&n);while(n32);m=(int*)malloc(sizeof(int)*n);t=(int*)malloc(sizeof(int)*n);memset(m,-1,sizeof(int)*n);memset(t,0,sizeof(int)*n);for(i=0;i320;i+)f=0;for(j=0;jn;j+)if(ci=mj*10)f=1;tj=-1;break;for(j=0;jn;j+)tj+;if(f=0)miss+;k=0;for(j=0;jtk)k=j;tk=0;mk=ci/10;r=1.0-(float)miss)/320.0;printf(LRU算法命中率为:%fn,r);free(m);free(t);九、实验体会 这个实验难度非常大。主要在于对实验要求的理解,首先就是320条指令,这个代码是通过数组对指令进行了模拟,初始全为-1,执行过的择复制给该指令跳转到的下一条指令的数字。这样做的目的,是为了后面的算法,在页面中可以进行数字的判定,以判断是否命中。这个第一个难点就是对于这320条指令的模拟,这段程序代码的逻辑思维比较强,特别是对于细节的处理,五步一共执行了4条指令,每条指令的范围必须要确定好。第二个难点就在于对FIFO与LRU的理解,如果对于这2个调度算法的命中或不命中不能理解的话,是无法完成程序的。另

温馨提示

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

评论

0/150

提交评论