标签:时间 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