实验3-虚拟内存管理.doc_第1页
实验3-虚拟内存管理.doc_第2页
实验3-虚拟内存管理.doc_第3页
实验3-虚拟内存管理.doc_第4页
实验3-虚拟内存管理.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

年级11级专 业计算机科学与技术班级五班组号 12组实验室9#205日期2014/05/24实验名称 实验三、虚拟内存管理实验内容分项内容实验级别1、局部性原理演示(数组清零)操作系统观察级2、页面置换算法模拟演示算法仿真实现级3、实际系统内存分配演示操作系统观察级小 组 成 员姓名学号组内分工自我评分教师评分 完成实验三(1) 良好 完成实验三(1) 良好 完成实验三(2) 良好 完成实验三(3) 良好 完成实验三(3) 良好小组成绩评定教师签名: 年 月 日实验分项局部性原理演示(数组清零)、页面置换算法模拟演示(进先出的算法)实验目的一、实验目的:l1加深对操作系统存储管理的理解 2能过模似页面调试算法,加深理解操作系统对内存的高度管理实验要求具体题目:局部性原理演示(数组清零)、页面置换算法模拟演示(进先出的算法)、实际系统内存分配演示系统平台:Linux/Windows操作系统实验原理步骤(算法流程)二、实验原理1、局部性原理演示(数组清零),原理如下: 1)、程序的局部性原理: 指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。局部性原理又表现为:时间局部性和空间局部性。时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。空间局部性是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。 另外,根据程序的局部性理论,Denning提出了工作集理论。所谓工作集是指进程运行时被频繁访问的页面集合。显然我们知道只要使程序的工作集全部集中在内存中,就可以大大减少进程的缺页次数;否则会使进程在运行过程中频繁出现缺页中断,从而出现频繁的页面调入/调出现象,造成系统性能的下降,甚至出现“抖动”。 划分工作集可以按定长时间或定长页面两种方法进行划分。当颠簸现象发生时,说明系统的负荷过大,通常采用处理器均衡调度。另一种是控制缺页率,当缺页率达到上限时,则增加内存分配量;当缺页率达到下限时,就减少内存的分配量。 程序对比分析 for(i=0;i1024;i+) for(j=0;j1024;j+) testji=0; 程序是按列把数组中的元素清“0”的,所以,每执行一次testji=0就会产生一次缺页中断。因为开始时第一页已经在主存了,故程序执行时就可以对元素test11清零,但下一个元素test21不在该页,就产生缺页中断。按程序上述的编制方法,每装入一页只对一个元素清零后就要产生缺页中断于是总共要产生1024*1024-1次缺页中断。 for(i=0;i1024;i+) for(j=0;j1024;j+) testij=0; 按行清零,每转入一页后就对一行元素全部清零后才产生缺页中断,故总共产生1024-1次缺页中断。2、 页面置换算法模拟演示(进先出的算法),原理如下: 先进先出页面置换算法,该算法淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法是用C语言实现的,其中页面置换是通过数组实现的。实验源代码如下:1)、局部性原理演示(数组清零):#includeint main() int t1,t2; int i,j; int test10241024=0; t1=clock(); for(i=0;i1024;i+) for(j=0;j1024;j+) testij=0; t2=clock(); printf(.:%d.n,t2-t1); t1=clock(); for(i=0;i1024;i+) for(j=0;j1024;j+) testji=0; t2=clock(); printf(.:%d.n,t2-t1); return 0;2)页面置换算法模拟演示(进先出的算法):/ 进先出的算法(FIFO).cpp : 定义控制台应用程序的入口点。/#includestdafx.h#includeusing namespace std;#define M 20 /要访问的页面数#define N 3 /内存容量void FIFO(int aN,int bM) int i,j,k; int cM=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; float s; for(i=0;iN;i+) ai=bi; for(j=0;j=i;j+) coutaj ; coutendl; coutn内存中的页面为: ; for(j=0;j=i;j+) coutaj ; coutendl; k=N; for(j=N;jM;j+) for(i=0;iN;i+) if(bj=ai) cout内存中有bj页面,可直接访问。endl; cj=1;break; if(cj=1) for(i=0;iN;i+)coutai ; if(cj=0) ak%N=bj; k+;for(i=0;iN;i+)coutai ; coutn页面bj进入内存endl; coutendl; s = k*1.0/M; cout中断次数为:kendl; cout缺页率为:sendl;void main() int i;int aN=0,0,0;int bM;coutn FIFO页面置换算法 endl;coutn输入要访问的页面:;for(i=0;ibi;if(bi=-1)break; FIFO(a,b);(写不完时,可另加附页。)实验结果及分析三、实验结果:1、实验截图:3-1数组清零截图3-2 FIFO算法模拟截图2、结果分析: 1)、按行清零用时0,而按列清零用时2000,验证了实验原理里面关于局部性原理的分析。 2)、最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。心得体会 页面置换算法理解比较容易,这次根据学号要求实现的是LRU和FIFO算法的实现。其实这两种算法的程序编写比较容易,虽然不全是自己编写的,一部分是参考的网上的例题,但是通过对每一语句的理解,自己弄

温馨提示

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

评论

0/150

提交评论