当前位置:文档之家› 实验六 虚拟内存页面置换算法

实验六 虚拟内存页面置换算法

//int N = 20; //输入页面个数
int Data[DataMax]; //保存数据
int Block[BlockNum]; //物理块
int count[BlockNum]; //计数器
int N ; //页面个数
int M;//最小物理块数
intChangeTimes;
void DataInput(); //输入数据的函数
5
一、实验目的
通过这次实验,加深对虚拟存页面置换概念的理解,进一步掌握先进先出FIFO,最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。
二.实验环境
C++环境
三、实验容与步骤
问题描述:
设计程序模拟先进先出FIFO,最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1,…,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。
// FIFO();
// Optimal();
// LRU();
// return 0;
int menu;
while(true)
{
cout<<endl;
cout<<"*菜单选择*"<<endl;
cout<<"*******************************************************"<<endl;
for(j=0;j<M;j++)
{
cout<<" ";
for(i=0;i<N;i++) //对所有数据操作
{
if( DataShowEnable[j][i] )
cout<<DataShow[j][i]<<" ";
else
cout<<" ";
}
cout<<endl;
}
cout<<"缺页次数: "<<ChangeTimes<<endl;
{
cout<<"请输入最小物理块数:";
cin>>M;
while(M > BlockNum) //大于数据个数
{
cout<<"物理块数超过预定值,请重新输入:";
cin>>M;
}
cout<<"请输入页面的个数:";
cin>>N;
while(N > DataMax) //大于数据个数
{
cout<<"页面个数超过预定值,请重新输入:";
【实验要求】
1)上机前认真复习页面置换算法,熟悉FIFO,OPI,LRU三种页面分配和置换算法的过程;
2)上机时独立编程、调试程序;
3)根据具体实验要求,完成好实验报告(包括实验的目的、容、要求、源程序、实例运行结果截图)。
【源代码】
#include "iostream.h"
const int DataMax=100;
cin>>menu;
switch(mereak;
case 2: Optimal();break;
case 3: LRU();break;
default: break;
}
if(menu!=1&&menu!=2&&menu!=3) break;
}
}
//*/
void DataInput()
政法学院
本科生实验报告
(六)
:马晓娟
学院:公安技术学院
专业:信息安全
班级:2013级信息安全
实验课程名称:
实验日期:2015年12月2日
指导教师及职称:王云峰
实验成绩:
开课时间:2015-2016学年第一学期
政法学院实验管理中心印制
实验题目
虚拟存页面置换算法
小组合作

马晓娟
班级
2013级信息安全
学号
for(i=0;i<M;i++)
{
count[i] = 0; //大于等于BlockNum,表示块中没有数据,或需被替换掉
//所以经这样初始化(3 2 1),每次替换>=3的块,替换后计数值置1,
const int BlockNum = 10;
int DataShow[BlockNum][DataMax]; //用于存储要显示的数组
bool DataShowEnable[BlockNum][DataMax]; //用于存储数组中的数据是否需要显示
//int Data[DataMax]={4,3,2,1,4,3,5,4,3,2,1,5,6,2,3,7,1,2,6,1}; //测试数据
void DataOutput();
void FIFO(); // FIFO函数
void Optimal(); // Optimal函数
void LRU(); // LRU函数
///*
int main(int argc, char* argv[])
{
DataInput();// DataInput();
cout<<"缺页率: "<<ChangeTimes*100/N<<"%"<<endl;
}
void FIFO()
{
int i,j;
bool find;
int point;
int temp; //临时变量
ChangeTimes = 0;
for(j=0;j<M;j++)
for(i=0;i<N;i++)
DataShowEnable[j][i] = false; //初始化为false,表示没有要显示的数据
程序要求如下:
1)利用先进先出FIFO,最佳置换OPI和最近最久未使用LRU三种页面置换算法模拟页面访问过程。
2)模拟三种算法的页面置换过程,给出每个页面访问时的存分配情况。
3)输入:最小物理块数m,页面个数n,页面访问序列P1,…,Pn,算法选择1-FIFO,2-OPI,3-LRU。
4)输出:每种算法的缺页次数和缺页率。
cin>>N;
}
cout<<"请输入页面访问序列:"<<endl;
for(int i=0;i<N;i++)
cin>>Data[i];
}
void DataOutput()
{
int i,j;
for(i=0;i<N;i++) //对所有数据操作
{
cout<<Data[i]<<" ";
}
cout<<endl;
cout<<"* 1-FIFO *"<<endl;
cout<<"*2-Optimal*"<<endl;
cout<<"*3-LRU*"<<endl;
cout<<"*0-EXIT*"<<endl; cout<<"*******************************************************"<<endl;
相关主题