-
大小:文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-05-16
- 語言: 其他
- 標(biāo)簽: 操作系統(tǒng)??存儲管理??4種??C++??
資源簡介

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;?
int?*instruction=new?int[320];//指令序列
int?*page=new?int[320];//指令序列變換后的頁地址流
int?pagenum=0;//用于存放將指令序列變換為頁地址時(shí)頁序列的編號
double?lost=0;
int?Msize;//內(nèi)存中存放的頁面數(shù)
int?Inside[32];//內(nèi)存中的頁面號數(shù)組,最多32頁
int?*state=new?int[32];//每個(gè)頁面號對應(yīng)的狀態(tài)(是否在內(nèi)存中)最多32頁
int?insert=0;//FIFO算法中表示當(dāng)內(nèi)存滿的時(shí)候,新進(jìn)入的頁號放的位置
void?IntoPage(int?m);//第m條指令對應(yīng)的頁數(shù)
int??isInside(int?numberint?Msize);//檢測頁號是否在內(nèi)存中
void?OPT(int?numint?Msize);//最佳置換算法(OPT)
void?FIFO(int?numint?Msize);//先進(jìn)現(xiàn)出置換算法(FIFO)
void?LRU(int?numint?Msize);//最近最久未使用置換算法(LRU)
void?LFU(int?numint?Msize);//最少使用置換算法(LFU)?
void?main()
{
int?choice=0n=0s=0;//n控制指令執(zhí)行時(shí)的循環(huán)次數(shù),s為隨機(jī)產(chǎn)生指令的起始地址
????char?choice2;
for(int?i=0;i<=319;i++)
instruction[i]=i;???//便于理解程序,初始化指令序列為指令號
cout<<“指令地址流生成完畢!“<
srand(time(0));
while(n<160)//每次循環(huán)執(zhí)行兩次指令
{
int?m=rand()%(319-s)+s;//在[0319]的指令地址中隨機(jī)選取一點(diǎn)m,s為隨機(jī)產(chǎn)生指令的起始地址
IntoPage(m+1);//執(zhí)行m+1的指令
int?m1=rand()%(m+1);//在[0m+1]中隨機(jī)選取一條指令并執(zhí)行,令該指令的地址為m1
IntoPage(m1+1);//執(zhí)行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??先進(jìn)先出算法.\n“;
cout<<“3、LRU???最近最久未使用算法.\n“;
cout<<“4、LFU???最少使用算法.\n“;
cin>>choice;
switch(choice)
{
case?1:
{
cout<<“當(dāng)前使用OPT?最佳置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計(jì)算比較內(nèi)存頁面數(shù)由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內(nèi)存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< OPT(iMsize);
}
cout<<“頁面數(shù)為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?2:
{
cout<<“當(dāng)前使用FIFO?先進(jìn)先出置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計(jì)算比較內(nèi)存頁面數(shù)由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內(nèi)存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< FIFO(iMsize);
}
cout<<“頁面數(shù)為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?3:
{
cout<<“當(dāng)前使用LRU?最近最久未使用算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計(jì)算比較內(nèi)存頁面數(shù)由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內(nèi)存中存儲的頁面為空
}
for(int?i=0;i<320;i++)
{
//cout<<“讀入page[“< LRU(iMsize);
}
cout<<“頁面數(shù)為“< cout<<“????????????共“<<320<<“次“<<“缺失“< }
}break;
case?4:
{
cout<<“當(dāng)前使用LFU?最少使用置換算法!\n“;
for(Msize=4;Msize<=32;Msize++)//計(jì)算比較內(nèi)存頁面數(shù)由4到32的命中率
{
lost=0;
for(int?j=0;j {
Inside[j]?=?0;//初始化內(nèi)存中存儲的頁面為空
}
for(i
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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
評論
共有 條評論