經典作業系統教材中的LRU演算法的自編c++實現及原始碼。 (轉)
#include
#include
/*void setm(int a[][],int m,int n)
{ int i,j;
for(i=0;i
}
for(j=0;j
};*/
int **martrix;
int i,j;
void setm(int m,int n)
{for(i=0;i
martrix[i][m]=0;
}
}
char * current;
void print(int n)
{ int p,q;
for(p=0;p
}
int mini(int *b)
{int i=0;
int n,m,flag;
n=0;
while(b[i]>=0&&b[i]<=9){n++;i++;}
m=b[0];flag=0;
for(j=1;j
}
return flag;
}
void main()
{
int n;
char sequence[255];
cout< cin>>n;
cout< cin>>sequence;
cout<
martrix=new int * [n];
for( i=0;i
current=new char [n];
for(i=0;i
for(i=0;i
int k;
int len=strlen(sequence);
//setm(0,n);print(n);cout<
//for(i=1;i<=len;i++)
//{ if(i<=n) {setm(i-1,n);print(n);cout<
int flag;
int f;
int *total;
int g;
int count=0;
char c;
total=new int[n];
for(i=0;i
for(k=1;k<=len;k++)
{ cout<
{ for(i=0;i
}
if(i==n) {
for(f=0;f
}
c=current[mini(total)];
current[mini(total)]=sequence[k-1];
setm(mini(total),n);print(n);cout< cout<
}
else
{setm(flag,n);print(n);cout<
for(i=0;i
}
cout<cout<cin>>c;}
不妨用課本上的例子先測試下這個小東西喲!
課本上的例子是:頁架數是:4;
訪問序列是:0123010321;
結果是:
請輸入頁架數:4
請輸入訪問序列:0123010321
*****ALL RIGHT RESERVED BY 英雄**
0要求進入
0 1 1 1 **0
0 0 0 0 **
0 0 0 0 **
0 0 0 0 **
缺頁
1要求進入
0 0 1 1 **0
1 0 1 1 **1
0 0 0 0 **
0 0 0 0 **
缺頁
2要求進入
0 0 0 1 **0
1 0 0 1 **1
1 1 0 1 **2
0 0 0 0 **
缺頁
3要求進入
0 0 0 0 **0
1 0 0 0 **1
1 1 0 0 **2
1 1 1 0 **3
缺頁
0要求進入
0 1 1 1 **0
0 0 0 0 **1
0 1 0 0 **2
0 1 1 0 **3
1要求進入
0 0 1 1 **0
1 0 1 1 **1
0 0 0 0 **2
0 0 1 0 **3
0要求進入
0 1 1 1 **0
0 0 1 1 **1
0 0 0 0 **2
0 0 1 0 **3
3要求進入
0 1 1 0 **0
0 0 1 0 **1
0 0 0 0 **2
1 1 1 0 **3
2要求進入
0 1 0 0 **0
0 0 0 0 **1
1 1 0 1 **2
1 1 0 0 **3
1要求進入
0 0 0 0 **0
1 0 1 1 **1
1 0 0 1 **2
1 0 0 0 **3
總共有4次缺頁
請按任意鍵並回車退出
這個與課本上的答案可是一樣的喲!
其它的例子就大家去試了,比如說這次作業:
頁架數是:4;
訪問序列是:ABCDABEABCDE
你敲進去就可以出結果了.
請輸入頁架數:4
請輸入訪問序列:ABCDABEABCDE
*****ALL RIGHT RESERVED BY 英雄
A要求進入
0 1 1 1 **A
0 0 0 0 **
0 0 0 0 **
0 0 0 0 **
缺頁
B要求進入
0 0 1 1 **A
1 0 1 1 **B
0 0 0 0 **
0 0 0 0 **
缺頁
C要求進入
0 0 0 1 **A
1 0 0 1 **B
1 1 0 1 **C
0 0 0 0 **
缺頁
D要求進入
0 0 0 0 **A
1 0 0 0 **B
1 1 0 0 **C
1 1 1 0 **D
缺頁
A要求進入
0 1 1 1 **A
0 0 0 0 **B
0 1 0 0 **C
0 1 1 0 **D
B要求進入
0 0 1 1 **A
1 0 1 1 **B
0 0 0 0 **C
0 0 1 0 **D
E要求進入
0 0 0 1 **A
1 0 0 1 **B
1 1 0 1 **E
0 0 0 0 **D
缺頁,置換前一次C的那行
A要求進入
0 1 1 1 **A
0 0 0 1 **B
0 1 0 1 **E
0 0 0 0 **D
B要求進入
0 0 1 1 **A
1 0 1 1 **B
0 0 0 1 **E
0 0 0 0 **D
C要求進入
0 0 1 0 **A
1 0 1 0 **B
0 0 0 0 **E
1 1 1 0 **C
缺頁,置換前一次D的那行
D要求進入
0 0 0 0 **A
1 0 0 0 **B
1 1 0 1 **D
1 1 0 0 **C
缺頁,置換前一次E的那行
E要求進入
0 1 1 1 **E
0 0 0 0 **B
0 1 0 1 **D
0 1 0 0 **C
缺頁,置換前一次A的那行
總共有8次缺頁
請按任意鍵並回車退出
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963675/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 主宰作業系統的經典演算法作業系統演算法
- Dominate【作業系統的經典演算法】作業系統演算法
- Lru-k在Rust中的實現及原始碼解析Rust原始碼
- 重讀經典《作業系統:設計與實現》作業系統
- 帶有ttl的Lru在Rust中的實現及原始碼解析Rust原始碼
- Linux作業系統記憶體管理的原始碼實現(轉)Linux作業系統記憶體原始碼
- Lru在Rust中的實現, 原始碼解析Rust原始碼
- CpuMemSets在Linux作業系統中的實現(轉)Linux作業系統
- 寫木馬的經典,dll插入系統程式的原始碼(轉)原始碼
- 機器學習教材中的 7 大經典問題機器學習
- WindowsXP作業系統防火牆經典使用指南(轉)Windows作業系統防火牆
- 作業系統實驗3 經典同步互斥問題作業系統
- 常見面試題之作業系統中的LRU快取機制實現面試題作業系統快取
- 作業系統——程序同步互斥經典題目作業系統
- 直播系統原始碼,自動登入及記住密碼實現原始碼密碼
- 常見快取演算法和LRU的c++實現快取演算法C++
- 自動安裝程式的實現演算法和原始碼 (轉)演算法原始碼
- LRU Cache 的簡單 C++ 實現C++
- 作業系統--怎麼實現中斷作業系統
- c++經典(轉)C++
- 遊戲陪玩系統原始碼中不同排序演算法的實現方式遊戲原始碼排序演算法
- 自動升級系統的設計與實現(原始碼)原始碼
- Cobbler實現自動化安裝作業系統作業系統
- Linux作業系統12則經典應用技巧Linux作業系統
- Linux作業系統原始碼詳細分析(二)(轉)Linux作業系統原始碼
- Linux作業系統原始碼詳細分析(三)(轉)Linux作業系統原始碼
- 經典的編譯錯誤 (轉)編譯
- 解讀現代儲存系統背後的經典演算法演算法
- 作業系統中檔案系統的實現和分配方式探析(下)作業系統
- 陪玩系統原始碼實現音訊編碼的相關步驟原始碼音訊
- Aero:用rust編寫的新現代作業系統Rust作業系統
- 在Linux作業系統中實現內部程式通訊(轉)Linux作業系統
- 非常經典的UNIX系統調優的文章(轉)
- JavaScript實現經典排序演算法JavaScript排序演算法
- 經典排序演算法PHP實現排序演算法PHP
- 【分享】一些經典的C/C++語言基礎演算法及程式碼(三)C++演算法
- 【作業系統】銀行家演算法實現(C語言)作業系統演算法C語言
- 作業系統——c++實現頁式虛擬儲存管理作業系統C++