シミュレーションLRUページ置換アルゴリズム
実験二シミュレーションLRUページ置換アルゴリズム
一、実験目的
1)CまたはC++でLRUページ置換アルゴリズムをシミュレートする
2)LRUページ置換アルゴリズムのスケジューリングプロセスを把握する
二、実験内容
仮想ストレージシステムを設計し、プログラムシミュレーションLURページ置換アルゴリズムを作成し、プログラムによって淘汰されたページを出力し、ヒット率を計算する.
ページアクセス列をランダムに入力:
7 0 1 2 0 3 0 4 23 0 3 2 1 2 0 1
ランダム入力メモリ常駐セットサイズ:3(常駐セットの初期状態が空)
LRUアルゴリズムの実装:LRUアルゴリズムは、現在最も遠いページを最後に使用したため、この距離を記録する必要がある.記録方法は、カウンタを使用することができる:駐在セットの各ページフレームに設計数を増やす.1ページにアクセスするたびに、対応するページフレームのカウンタをクリアし、残りのページフレームの計算機に1を加算するので、カウンタの最大のページは、前回のアクセス距離が現在最も遠いページです.
7 0 1 2 0 3 0 4 2 3 0 3 2
0/7 1/7 2/7 0/2 1/2 2/2 3/2 0/4 1/4 2/4 0/0 1/0 2/0
0/0 1/0 2/0 0/0 1/0 0/0 1/0 2/0 0/3 1/3 0/3 1/3
0/1 1/1 2/1 0/3 1/3 2/3 0/2 1/2 2/2 3/2 0/2
欠けている命が欠けている命が欠けている命が欠けている
7 1 2 3 0 4淘汰ページ番号
出力淘汰ページ番号:7 1 2 3 0 4
ヒット率:4/13
一、実験目的
1)CまたはC++でLRUページ置換アルゴリズムをシミュレートする
2)LRUページ置換アルゴリズムのスケジューリングプロセスを把握する
二、実験内容
仮想ストレージシステムを設計し、プログラムシミュレーションLURページ置換アルゴリズムを作成し、プログラムによって淘汰されたページを出力し、ヒット率を計算する.
ページアクセス列をランダムに入力:
7 0 1 2 0 3 0 4 23 0 3 2 1 2 0 1
ランダム入力メモリ常駐セットサイズ:3(常駐セットの初期状態が空)
LRUアルゴリズムの実装:LRUアルゴリズムは、現在最も遠いページを最後に使用したため、この距離を記録する必要がある.記録方法は、カウンタを使用することができる:駐在セットの各ページフレームに設計数を増やす.1ページにアクセスするたびに、対応するページフレームのカウンタをクリアし、残りのページフレームの計算機に1を加算するので、カウンタの最大のページは、前回のアクセス距離が現在最も遠いページです.
7 0 1 2 0 3 0 4 2 3 0 3 2
0/7 1/7 2/7 0/2 1/2 2/2 3/2 0/4 1/4 2/4 0/0 1/0 2/0
0/0 1/0 2/0 0/0 1/0 0/0 1/0 2/0 0/3 1/3 0/3 1/3
0/1 1/1 2/1 0/3 1/3 2/3 0/2 1/2 2/2 3/2 0/2
欠けている命が欠けている命が欠けている命が欠けている
7 1 2 3 0 4淘汰ページ番号
出力淘汰ページ番号:7 1 2 3 0 4
ヒット率:4/13
#include
#include
using namespace std;
typedef struct waitBlock
{
string pageNum; //
int count; //
}waitBlock; //
typedef struct PageFrame
{
string pageNum; //
string hit; //
}PageFrame; //
void LRU(int n, int m, waitBlock *b, PageFrame *p)
{
int i; // pageCount
int j; // pageFrame
int changNum; //pageFrame ,
int maxCount; //pageFrame ,
int flag = 0; //
string temp = ""; //
cout< maxCount){ // , count
changNum = j;
maxCount = b[j].count;
}
b[j].count++; // count 1
}
for(; j < m; j++) // , count 1
{
b[j].count++;
}
string before,after; //before ,after
before = b[changNum].pageNum;
b[changNum].pageNum = p[i].pageNum;
after = b[changNum].pageNum;
b[changNum].count = 0; // count
if(before != after && before != "" && after != "") //
{
temp += before + " ";
}
cout<>pageCount;
int waitSpace; //
cout<>waitSpace;
PageFrame *visit = new PageFrame[pageCount]; //
cout<>visit[i].pageNum;
visit[i].hit = " ";
}
waitBlock *wB = new waitBlock[waitSpace]; //
//
for(int i = 0; i < waitSpace; i++)
{
wB[i].pageNum = "";
wB[i].count = 0;
}
LRU(pageCount,waitSpace,wB,visit); // LRU
delete [] visit;
delete [] wB;
return 0;
}