《操作系统实验指导书--实验二 动态分页存储的缺页率分析.docx》由会员分享,可在线阅读,更多相关《操作系统实验指导书--实验二 动态分页存储的缺页率分析.docx(9页珍藏版)》请在第壹文秘上搜索。
1、操作系统实验指导书实验二动态分页存储的缺页率分析一、实验名称动态分页存储的缺页率分析二、实验目标请求页式虚存管理是常用的虚拟存储管理方案之一。通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。本实验使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行,并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。
2、要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。三、实验环境要求:1.PC机。2.Dos;Windows;Linux环境。3.BorlandC+forDos;VisualC+6.0forWindows;g+forLinux。四、实验基本原理(1)先进先出页面置换算法(FIFO)FlFo算法这是最早出现的置换算法,该算法总是淘汰最先进入内存的页面,即选择在内存中驻时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最
3、老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。(2)最近最久未使用置换算法(LRU)最近最久未使用(LRU)置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。五、源代码动态分页存储
4、管理中的缺页率分析#include#include#include#include#include#includeusingnamespacestd;structPage/描述页框(intn;页框大小intindex;用来标记最先进入的页的下标int*p;);Pagepage;/页框voidintialize(intn);/初始化页框voidFIFO(inta,intm)(intnum=0;inti;cout,FIFO淘汰算法”VVend1;fbr(i=l;i=page.n;i+)(printf(页d*i);)coutendl;for(i=0;im;i+)(printf(%dai);intfl
5、ag=0;fr(intj=O;j=O;k-)(page.pk+I=page.pk;)page.pO=ai;)page,index+;)else/页置换(for(intk=page.n-1;kO;k-)(page.pk=page.pk-l;)page.pO=ai;)fbr(inti=O;ipage.n;i+)Iprintf(%6d,page.pi);coutendl;)CoUt共发生vvnumv次缺页中断,命中率为(m-num),mendlendl;)voidLRU(inta,intm)(intnum=0;inti;cout,LRU淘汰算法,vendl;fbr(i=l;i=page.n;i+)(
6、printf(页d*i);)coutendl;for(i=O;im;i+)(printf(%d,ai);intflag=O;fbr(intj=O;j=O;k)page.pk+l=page.pk;)page.pO=ai;)page,index+;Ielse/页置换page.pk=page.pk-l;page.pO=ai;)fbr(inti=O;ipage.n;i+)(printf(,%6d,page.pi);)coutendl;)COUtv哄发生vnumvv次缺页中断,命中率为(m-num)7,mendlendl;)voidintialize(intn)初始化页框(page.n=n;for(in
7、ti=O;in;页的大小page.p=newintn;cinm;测试数据的个数a=newintm;COUt当前页框大小为:,endl;coutnendl;COUt当前要测试的数据个数:endl;coutmendl;COUtVV要测试的数据为:endl;for(inti=0;iai;)coutendl;intialize(n);FIFO(a,m);1.RU(a,m);returnO;八、运行结果QUsersASUSDesktop作验二Debugshiyan2.exe1112当前页框大小为:3当前要测试的数据个数:12要测试的数据为:432143543215FlFo淘次算法页1页244334223112441334553453353225112512共发生9次缺页中断,355命中率为3/12页1页24413342231124413345534433342231121.RU淘汰算法3页21432145512共发生10次缺页中断,命中率为2/12Pressanykeytocontinue搜狗拼音输入法全: