日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

2.LRU算法实现 [C++]

發布時間:2025/3/21 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.LRU算法实现 [C++] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LRU算法實現原理:
最近最久未使用頁面置換算法(LRU)
當需要淘汰某一頁時,選擇在最近一段時間里最久沒有被使用過的頁淘汰。
其基本原理為:如果某一個頁面被訪問了,它很可能還要被訪問;相反,如果它長時間不被訪問,再最近未來是不大可能被訪問的。LRU采用頁號棧的實現方法。最近訪問的頁放在棧頂,較早訪問的頁往棧底移動。總是先淘汰處于棧底的頁。

#include <iostream>#define MAXSIZE 20 using namespace stdvoid main() {int input=0; //用于輸入作業號int worknum=0; //輸入的作業個數int storesize=0; //系統分配的存儲區塊數int interrupt=0; //缺頁中斷次數int stack[MAXSIZE]; //棧,LRU算法的主要數據結構int workstep[MAXSIZE]; //記錄作業走向/*初始化*/for(int i=0;i<MAXSIZE;i++){stack[i]=0;workstep[i]=0;}cout<<"請輸入存儲區塊數:";cin>>storesize;cout<<"請輸入作業的頁面走向(輸入0結束):\n";for(int j=0;j<MAXSIZE;j++){cout<<"頁面號 "<<j+1<<” :”;cin>>input; workstep[j]=input;if(input==0){cout<<"輸入結束!\n";break;}worknum++;}if(workstep[0]==0){cout<<"未輸入任何作業,系統將退出!\n";return;}cout<<"置換情況如下:\n";for(int k=0;k<worknum;k++){/*在棧中找相等的頁號或空位置*/for(int l=0;l<storesize;l++){/*是否有相等的頁號*/if(stack[l]==workstep[k]){cout<<"內存中有"<<workstep[k]<<"號頁面,無須中斷!\n"; goto step1;}/*找棧中是否有空位置*/if(stack[l]==0){stack[l]=workstep[k];cout<<"發生中斷,但內存中有空閑區,"<<workstep[k]<<"號頁面直接調入!\n";interrupt++;goto step1;}}/*上述情況都不成立則調出棧頂,將調入頁面插入棧頂*/cout<<"發生中斷,將"<<stack[0]<<"號頁面調出,"<<workstep[k]<<"號裝入!\n";interrupt++;/*新掉入的頁面放棧頂*/ step1: for(int m=0;m<storesize;m++){stack[m]=stack[m+1];}stack[storesize-1]=workstep[k];}cout<<"作業"<<worknum<<"個,"<<"中斷"<<interrupt<<"次,"<<"缺頁率:"<<float(interrupt)/float(worknum)*100<<"%\n"; }

?

總結

以上是生活随笔為你收集整理的2.LRU算法实现 [C++]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。