- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LRU页面置换算法的设计实验报告
实验报告模板实验名称内存页面置换算法的设计学院姓名学号班级实 验地点实验日期 评分 指导老师同组其他成员一、实验LI的
通过请求页式存储管理中页面置换算法模拟设讣,了解虚拟存储技术的技术特
点,掌握请求页式虚拟管理的页面置换算法。
二、 实验环境
Microsoft Visual Studio 2010
三、 实验内容
实现最近最久未使用(Least Recently Used, LRU)算法。
四、 实验结果(含程序、数据记录及分析和实验总结等)
#include iostream
nclude〈string
#include〈stdlib? h
#include〈ctime
using namespace std;
const int Bsize二10;
const int Psize二20;
struct p
{
int content;//页面号
int timer;//被访问标记
};
P block[Bsize];//物理块
P pagetPsize];//页面号串
void Init (int QStringU, int Bsize)
{//初始化
for(int i二0; iBsize; i++)
{
blockti]. content = ~1;//找到空闲内存
blocktiL timer = 0;
}
for(int i二0; iPsize; i++)
{
page.ij. content = QStringTi];
page.ij. timer = 0;
}
}
int findSpace(int Bsize)
{//查找是否有空闲内存
for(int i二0; iBsize; i++)
if(blockEi]. content = ~1)
return i;〃找到空闲内存,返回BLOCK中位置
return ~1;
}
int findExist(int curpage, int Bsize)
{//查找内存中是否有该页面?
for(int i二0; iBsize; i++) if(blockEi]?content == pageEcurpage]?content) return i ;//找到内存中有该页面,返回BLOCK中位置
return T;
}
int findReplace(int Bsize)
{//查找应予置换的页面
int pos = 0;
for(int i二0; iBsize; i++)
if (blockEi]? timer = blockEpos]? timer)
pos = i;//找到应予置换页面,返回BLOCK中位置 return pos;
}
void display(int Bsize)
{//显示
for(int i二0; iBsize; i++)
if (blockEi]. content != T)//非空闲内存
cout?blockEi]? content?,z ”;
cout?endl;
}
void LRU(int Bsize)
{//最近最久未使用置换算法
int exist, space, position ;
float score二0;
exist = findExist(i,Bsize);
if(exist != -1)
{
blockFexist]? timer二0;
cout?,/ 不缺页,,?endl;
score+=l;
else
{
space = findSpace(Bsize);
if (space != T)
{
blockEspacej = page[i];
display(Bsize);
else
position = findReplace(Bsize): blockEpositionJ = pageEi]; display(Bsize);
blockEj]. timer++;//BLOCK 中 D 所??有?D 页?3 面?TIMER++ }
cout?,/缺页次数为:,z?20-score?endl;
cout?z,缺页率为(20-score) ?100/20?,/%,,?endl;
}
void BlockClear(int Bsize)
{
for(int i二0; iBsize; i++)
{
blockti]. content = T;
blockCi]. timer = 0:
}
}
int main()
{
srand((int)time(NULL));
int i,QString[20[,Bsize;
for(i=0;i20;i++)
{
QStringti] = rand()%10 ;
}
cout?,z页面号引用串:〃;
for(i=0;i20;i++)
cout?Q
原创力文档


文档评论(0)