一、实验名称:缺页中断统计
二、实验目的与要求
目的:通过本次实验,理解页面置换过程,加深对页式虚存管理的原理和实现过程的理解。
要求:设计和实现最佳页面置换算法,并统计缺页中断率。
三、实验内容
设系统为某一进程分配了3个物理块,引用串为:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
设计和实现最佳置换算法,并统计缺页率。
简单实现,自行理解
#include<iostream>
#include<cstring>
#include<random>
#include<iomanip>
using namespace std;
#define N 20
#define F 3
struct node{
int num;
int count;
};
node K[F];
int L[N]{7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
int main(){
int cnt=0;
for(int i=0;i<F;i++){
K[i].num=-1;
K[i].count=0;
cout<<K[i].num<<" ";
}
cout<<"\n";
// for(int i=0;i<N;i++){
// cin>>L[i];
// }
int it=0;
for(int i=0;i<N;i++){
int maxn=-1,maxid=0;
bool flag=0;
if(K[it].num!=-1){
for(int j=0;j<F;j++){
if(K[j].num==L[i]){
flag=0;
K[j].count=0;
it=j;
break;
}else flag=1;
if(K[j].count>maxn){
maxn=K[j].count;
maxid=j;
}
}
}
if(flag){
cnt++;
it=maxid;
K[it].count=0;
}
K[it].num=L[i];
cout<<L[i]<<" ";
for(int j=0;j<F;j++){
cout<<K[j].num<<" ";
if(K[j].num!=-1&&j!=it)K[j].count++;
}
cout<<"\n";
it++;it%=F;
}
cout<<"缺页次数为 "<<cnt<<"次\n缺页率为 "<<(double(cnt)/N)*100.0<<"%\n";
system("pause");
return 0;
}