标签:时间 list front back else ashx ase ret cstring
模拟虚拟存储系统的工作原理,用LRU页面替换算法进行虚页替换
#include<iostream>
#include<cstring>
#include<algorithm>
#include<list>
#include<vector>
#define MAX 4 //初始最大页面数目
#define N 1024
#define hashx 56
#define page_Size 256
using namespace std;
struct Node{
int addr;
bool had; //有效位
boolused; //使用位
}mainAddr[N];
list<int>vPage; //虚拟页表、装入位
vector<int>ans[N];
int n,a[N];
int pushPage(int x){ //虚拟页表push
if(vPage.size()==MAXN){ //虚拟页表满时进行替换
vPage.pop_front();
vPage.push_back(x); }
else{ //虚拟页面未满时直接push
vPage.push_back(x); }
}
void record(int x){
list<int>::iteratorit;
for(it=vPage.begin();it!=vPage.end();it++) ans[x].push_back(*it);
}
void output(){
cout<<"时间:";
for(inti=1;i<=n;++i)
cout<<i<<" ";
cout<<endl;
cout<<"\n 页面:";
for(inti=1;i<=n;++i)
cout<<a[i]<<" ";
cout<<"\n\nLRU: ";
for(inti=0;i<MAX;++i){
if(i) cout<<" ";
for(intj=1;j<=n;++j){
if(ans[j].size()>i)
cout<<ans[j][i]<<" ";
else
cout<<" ";
}
cout<<endl;
}
cout<<endl;
}
int main()
{
cout<<"输入虚页地址流的数目和地址流 :"<<endl;
cin>>n;
for(inti=1;i<=n;++i) cin>>a[i];
for(inti=1;i<=n;++i){
list<int>::iteratorit=find(vPage.begin(),vPage.end(),a[i]);
if(it!=vPage.end()){ //命中
vPage.erase(it);
pushPage(a[i]);
}
else{ //未命中
pushPage(a[i]);
} record(i);
}
cout<< endl;
output();
return 0;
}
模拟虚拟存储系统的工作原理,使用 LRU 页面替换算法进行替换
标签:时间 list front back else ashx ase ret cstring
原文地址:http://www.cnblogs.com/cassie-hkx/p/6395823.html