- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告三
——内存页面置换算法的设计
姓名:田玉祥
班级:计算机科学与技术专业一班
一、 实验内容
·实现最近最久未使用( LRU )置换算法
二、实验目的
LINUX 中,为了提高内存利用率, 提供了内外存进程对换机制,内存空间的分配和回收均以页为单位进行,一个进程只需将其一部分调入内存便可运行,还支持请求调页的存储管理方式。
本实习要求学生通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
三、实验题目
最近最久未使用( LRU )置换算法原理就是:当需要淘汰某页面时,选择当前一段时间内最久未使用过的页先淘汰,即淘汰距当前最远的上次使用的页。
例如 : 分配给该进程的页块数为 3,一个 20 位长的页面访问序列为 :12560,36536,56042,70435,
则缺页次数和缺页率按下图给出 :
假定分配给该进程的页块数为 3,页面访问序列长度为 20。本实验可以采用数组结构实现, 首先随机产生页面序列, 当发生请求调页时,若内存已满,则需要利用 LRU 算法,将当前一段时间内最久未使用过的页替换出去。
程序实现想法:
用一个数组 a[n]来存放所有需要访问的页,用一个数组 b[3] 来存放页表,用数组 c[3] 来存放页表每一页的权值,就是最近最少使用的度,度越高则使用率越小,用 n 次循环,每次 a[i] 进行判断时先判断有没有空格,再判断 a[i] 是否已经在页表中, 此时注意要将权值归 1,若都没有这些情况,则用函数 int MAX(int a,int b,int c) 找到权值最大的,
进行替换,并将其他页的权值加 1.
实验代码:
//LRU 算法,最近最少使用的页替换算法
#includeiostream
#include string
using namespace std ;
int MAX(int a,int b,int c) //赋值之后的权值中找到权值最大的,返回它的
下标也就是最近最少使用的
{
int max = a ;
if(maxb)
{
max = b ;
if(maxc)
max = c ;
}
else
if(maxc)
max = c ;
if(a==max) //找到权值最大的数的下标
return 0 ;
else if(b==max)
return 1 ;
else if(c==max)
return 2 ;
}
int main()
{
// string k ; //k 表示当前最近最少使用的页 ;
int i,j,n,l,m,p,q ; //j 表示当前访问的页是否已经在访问 ,0 表示没
有发生缺页, 1 表示发生缺页
//q 来表示页表是否有空格, 即当前是否全部
在使用, 1 表示全部在使用, 0 表示还有空格
string *b = new string [3] ; //存放页表
int *c = new int [3] ; //存放页表的权值
for(i=0;i3;i++)
{
b[i] = ;
c[i] = 1 ;
}
cout请输入要访问的页码页数: endl ;
cin n ;
string *a = new string [n] ; //存放所有要访问的页
cout请输入 n 个每一次要访问的页码页号: endl ;
for(i=0;in;i++)
cina[i] ;
cout页表访问过程如下,“ 1”表示发生缺页,“0”表示不发生缺页: endl ;
for(i=0;in;i++)
{
j = 1 ;
q = 1 ; //表示页表没有空位,全被使用
for(l=0;l3;l++)
if(a[i]==b[l])
{
j = 0 ;
c[l]=1 ; //将权值设为 1
c[l-1]++;
c[l-2]++;
c[l+1]++;
c[l+2]++;
break ;
}
if(j==0) //如果需要访问的页正在被访问,即已经在页表,直
接输出。并将其权值设为 1
{
for(l=0;l3;l++)
coutb[l] ;
coutjendl ;
}
//如果访问的页发生缺页有两种情况
if(j==1) //第一种,页表有空闲帧
for(l=0;l3;l++)
{
if(b[l]== )
{
b[l]=a[i] ;
c[l-1]++ ;
c[l-2]++ ;
for(p=0;p3;p++)
coutb[p] ;
coutjendl ;
q = 0 ;
break ;
}
}
if(j==1q==1) //须要访问的页不在页表中
{
m = MAX(c[0],c[1],c[2]) ;
b[m]=a[i] ;
c[m]=1 ;
c[m-1]++;
c[m-2]++;
c[m+1]++;
c[
您可能关注的文档
- (2016最新版)人教版一年级语文下册生字注音练习.docx
- (2018)教科版六年级下册科学复习资料(自己总结).docx
- (BIM超实用)revit教程(康振宇).docx
- (VEKIN)IP网络广播解决方案.docx
- (人事管理文件).docx
- (人教新起点)六年级英语上册-第一单元测试题.docx
- (内科学习题)第七篇-风湿性疾病.docx
- (北京版)五年级语文期末试卷.docx
- (升压站)质量验收及评定范围表.docx
- (国家社科基金申请书).docx
- 2025年吉林省《人文科技常识》必刷100题试卷带解析及必背答案.docx
- 2025年吉林省《人文科技常识》必刷100题试卷带解析必背(必刷).docx
- 2025年国家公务员考试《人文科技常识》题库带解析附完整答案【典优】.docx
- 2025年天津市公务员考试《人文科技常识》必刷100题试卷带解析word版.docx
- 2025年公职人员考试《人文科技常识》必刷100题题库带解析含完整答案【考点梳理】.docx
- 2025年公务员考试《人文科技常识》题库带解析附参考答案(基础题).docx
- 2025年吉林省公务员考试《人文科技常识》必刷100题试卷带解析及答案(夺冠).docx
- 2025年安徽省《人文科技常识》必刷100题试卷带解析含答案(实用).docx
- 2025年吉林省《人文科技常识》必刷100题试卷带解析及答案一套.docx
- 2025年国家公务员考试《人文科技常识》必刷100题题库带解析附参考答案(a卷).docx
文档评论(0)