C++编写的页面淘汰算法LRU
发布时间:2020-12-16 07:44:12 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 C++编写的页面淘汰算法LRU //FIFO#includeiostream#includeiomanipusing namespace std;void discard(int Array[][19],int pagenumber[],int page[],i
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
C++编写的页面淘汰算法LRU
//FIFO #include<iostream> #include<iomanip> using namespace std; void discard(int Array[][19],int pagenumber[],int page[],int max); int LRU(int pagenumber[],int order); int main() { int Array[4][19]; int page[19] = {7,1,2,3,4,7,0}; int pagenumber[3] = {-1,-1,-1}; int max = 19;//表示总共有多少页面 cout<<"页面访问序列如下:"<<endl; for(int i = 0;i < 19;i++){ Array[3][i] = -1; cout<<setw(3)<<page[i]; } discard( Array,pagenumber,page,max);//页面淘汰 cout<<endl; cout<<endl; //输出页面淘汰详细过程 cout<<"输出结果如下表(-2)代表没有缺页中断!"<<endl; int LackPageNumber = 0; for(int j = 0; j < 4;j++){ for(int k = 0; k < 19;k++){ cout<<setw(3)<<Array[j][k]; if(j == 3){ if(Array[j][k] != -2) LackPageNumber++; } } cout<<endl; } cout<<"缺页次数"<<LackPageNumber<<endl; return 0; } void discard(int Array[][19],int max) { for(int i = 0;i < max;i++){ if(LRU(pagenumber,page[i])> -1){ for(int tt = LRU(pagenumber,page[i]);tt>0;tt--){ pagenumber[tt] = pagenumber[tt-1]; } pagenumber[0] = page[i]; Array[0][i] = pagenumber[0]; Array[1][i] = pagenumber[1]; Array[2][i] = pagenumber[2]; Array[3][i] = -2;//表示非缺页 } else{ Array[0][i] = page[i]; Array[1][i] = pagenumber[0]; Array[2][i] = pagenumber[1]; Array[3][i] = pagenumber[2]; for(int ii = 2;ii >0;ii--){ pagenumber[ii] = pagenumber[ii-1]; } pagenumber[0] = page[i]; } } } int LRU(int pagenumber[],int order) {//判断当前页架中有没有当前访问页面 if(pagenumber[0] == order) return 0; else if(pagenumber[1] == order) return 1; else if(pagenumber[2] == order) return 2; else return -1; } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |