資源簡介

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;?
int?*instruction=new?int[320];//指令序列
int?*page=new?int[320];//指令序列變換后的頁地址流
int?pagenum=0;//用于存放將指令序列變換為頁地址時頁序列的編號
double?lost=0;
int?Msize;//內存中存放的頁面數
int?Inside[32];//內存中的頁面號數組,最多32頁
int?*state=new?int[32];//每個頁面號對應的狀態(是否在內存中)最多32頁
int?insert=0;//FIFO算法中表示當內存滿的時候,新進入的頁號放的位置
void?IntoPage(int?m);//第m條指令對應的頁數
int??isInside(int?numberint?Msize);//檢測頁號是否在內存中
void?OPT(int?numint?Msize);//最佳置換算法(OPT)
void?FIFO(int?numint?Msize);//先進現出置換算法(FIFO)
void?LRU(int?numint?Msize);//最近最久未使用置換算法(LRU)
void?LFU(int?numint?Msize);//最少使用置換算法(LFU)?
void?main()
{
int?choice=0n=0s=0;//n控制指令執行時的循環次數,s為隨機產生指令的起始地址
????char?choice2;
for(int?i=0;i<=319;i++)
instruction[i]=i;???//便于理解程序,初始化指令序列為指令號
cout<<“指令地址流生成完畢!“<
srand(time(0));
while(n<160)//每次循環執行兩次指令
{
int?m=rand()%(319-s)+s;//在[0319]的指令地址中隨機選取一點m,s為隨機產生指令的起始地址
IntoPage(m+1);//執行m+1的指令
int?m1=rand()%(m+1);//在[0m+1]中隨機選取一條指令并執行,令該指令的地址為m1
IntoPage(m1+1);//執行m1+1的指令
s=m1+2;
n++;
}
cout<<“頁地址流生成完畢!\n“< cout<<“生成頁地址流序列為:“;
for(i=0;i<320;i++)
cout<
do{
cout<<“\n\n請選擇頁面置換算法:\n“;
cout<<“1、OPT???最佳置換算法.\n“;
cout<<“2、FIFO??先進先出算法.\n“;
cout<<“3、LRU???最近最久未使用算法.\n“;
cout<<“4、LFU???最少使用算法.\n“;
cin>>choice;
switch(choice)
{
case?1:
{
cout<<“當前使用OPT?最佳置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計算比較內存頁面數由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< OPT(iMsize);
}
cout<<“頁面數為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?2:
{
cout<<“當前使用FIFO?先進先出置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計算比較內存頁面數由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< FIFO(iMsize);
}
cout<<“頁面數為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?3:
{
cout<<“當前使用LRU?最近最久未使用算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計算比較內存頁面數由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< LRU(iMsize);
}
cout<<“頁面數為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?4:
{
cout<<“當前使用LFU?最少使用置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計算比較內存頁面數由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內存中存儲的頁面為空
}
for(i
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8593??2011-12-22?12:47??存儲管理--頁面置換算法4種\存儲管理頁面置換\main.cpp
?????目錄??????????0??2011-12-22?12:47??存儲管理--頁面置換算法4種\存儲管理頁面置換
?????目錄??????????0??2011-12-22?12:49??存儲管理--頁面置換算法4種
-----------?---------??----------?-----??----
?????????????????8593????????????????????3
- 上一篇:《數據庫原理及應用》復習資料全
- 下一篇:LC振蕩器西勒
評論
共有 條評論