LRU页面置换算法的设计实验报告.doc
实验报告模板实验名称内存页面置换算法的设计学院姓名学号班级实验地点实验日期评分指导老师同组其他成员一、 实验目的通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式虚拟管理的页面置换算法。二、 实验环境Microsoft Visual Studio 2010三、 实验内容实现最近最久未使用(Least Recently Used, LRU)算法。四、 实验结果(含程序、数据记录及分析和实验总结等)#include <iostream>#include<string>#include<stdlib.h>#include<ctime>using namespace std;const int Bsize=10;const int Psize=20;struct pint content;/页面号int timer;/被访问标记;p blockBsize;/物理块p pagePsize;/页面号串void Init(int QString,int Bsize)/初始化for(int i=0; i<Bsize; i+)blocki.content = -1;/找到空闲内存blocki.timer = 0; for(int i=0; i<Psize; i+)pagei.content = QStringi;pagei.timer = 0;int findSpace(int Bsize)/查找是否有空闲内存for(int i=0; i<Bsize; i+)if(blocki.content = -1)return i;/找到空闲内存,返回BLOCK中位置return -1;int findExist(int curpage, int Bsize)/查找内存中是否有该页面?for(int i=0; i<Bsize; i+)if(blocki.content = pagecurpage.content)return i;/找到内存中有该页面,返回BLOCK中位置return -1;int findReplace(int Bsize)/查找应予置换的页面int pos = 0; for(int i=0; i<Bsize; i+)if(blocki.timer >= blockpos.timer)pos = i;/找到应予置换页面,返回BLOCK中位置return pos;void display(int Bsize)/显示for(int i=0; i<Bsize; i+)if(blocki.content != -1)/非空闲内存cout<<blocki.content<<" "cout<<endl;void LRU(int Bsize)/最近最久未使用置换算法int exist,space,position ;float score=0;for(int i=0; i<Psize; i+)exist = findExist(i,Bsize);if(exist != -1)blockexist.timer=0;cout<<"不缺页"<<endl;score+=1;else space = findSpace(Bsize);if(space != -1)blockspace = pagei; display(Bsize);elseposition = findReplace(Bsize);blockposition = pagei; display(Bsize);for(int j=0; j<Bsize; j+)blockj.timer+;/BLOCK中D所¨´有®D页°3面?TIMER+cout<<"缺页次数为:"<<20-score<<endl;cout<<"缺页率为: "<<(20-score)*100/20<<"%"<<endl;void BlockClear(int Bsize)for(int i=0; i<Bsize; i+)blocki.content = -1;blocki.timer = 0;int main() srand(int)time(NULL); int i,QString20,Bsize; for(i=0;i<20;i+) QStringi = rand()%10 ; cout<<"页面号引用串: " for(i=0;i<20;i+) cout<<QStringi<<" " cout<<endl<<"-"<<endl; Bsize = 3; Init(QString,Bsize); cout<<"LRU算法结果如下:<<endl; LRU(Bsize); BlockClear(Bsize); cout<<"-"<<endl; system("pause");某次运行结果