91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-13
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: 操作系統(tǒng)??OPT??LRU??

資源簡(jiǎn)介

本實(shí)驗(yàn)使用一下算法 使用rand()函數(shù)隨機(jī)產(chǎn)生頁(yè)面號(hào),用數(shù)組裝入頁(yè)面號(hào),模擬頁(yè)面調(diào)入內(nèi)存中發(fā)生頁(yè)面置換的過(guò)程。 整個(gè)過(guò)程,都是使用數(shù)組來(lái)實(shí)現(xiàn)每個(gè)算法,模擬隊(duì)列,模擬堆棧的功能,實(shí)現(xiàn)每一個(gè)置換算法。 頁(yè)面置換算法 最佳置換算法(OPT):選擇永不使用或是在最長(zhǎng)時(shí)間內(nèi)不再被訪問(wèn)(即距現(xiàn)在最長(zhǎng)時(shí)間才會(huì)被訪問(wèn))的頁(yè)面淘汰出內(nèi)存。用于算法評(píng)價(jià)參照。 隨機(jī)置換算法 (S):產(chǎn)生一個(gè)取值范圍在0和N-1之間的隨機(jī)數(shù),該隨機(jī)數(shù)即可表示應(yīng)被淘汰出內(nèi)存的頁(yè)面。 先進(jìn)先出置換算法(FIFO):選擇最先進(jìn)入內(nèi)存即在內(nèi)存駐留時(shí)間最久的頁(yè)面換出到外存。 最近最久未使用置換算法(LRU): 以“最近的過(guò)去”作為“最近的將來(lái)”的近似,選擇最近一段時(shí)間最長(zhǎng)時(shí)間未被訪問(wèn)的頁(yè)面淘汰出內(nèi)存 Clock置換算法:為進(jìn)入內(nèi)存的頁(yè)面設(shè)置一個(gè)訪問(wèn)位,當(dāng)內(nèi)存中某頁(yè)被訪問(wèn),訪問(wèn)位置一,算法在選擇一頁(yè)淘汰時(shí),只需檢查訪問(wèn)位,若為0,則直接換出,若為1,置該訪問(wèn)位為0,檢測(cè)內(nèi)存中的下一個(gè)頁(yè)面的訪問(wèn)位。 改進(jìn)型Clock置換算法: ①?gòu)牟閷ぶ羔槷?dāng)前位置起掃描內(nèi)存分頁(yè)循環(huán)隊(duì)列,選擇A=0且M=0的第一個(gè)頁(yè)面淘汰;若未找到,轉(zhuǎn)② ② 開始第二輪掃描,選擇A=0且M=1的第一個(gè)頁(yè)面淘汰,同時(shí)將經(jīng)過(guò)的所有頁(yè)面訪問(wèn)位置0;若不能找到,轉(zhuǎn)①

資源截圖

代碼片段和文件信息

#include
#include


using?namespace?std;


int?const?InsideCount?=?6;//內(nèi)存中存放的頁(yè)面數(shù)
int?count?=?0;
int?Inside[InsideCount];



int?const?PageCount???=10;//總的頁(yè)面數(shù)
int?Page[PageCount];


int?insert?=?0;//先到先出置換算法fcfo中表示?當(dāng)內(nèi)存滿的時(shí)候,新進(jìn)入的頁(yè)號(hào)放的位置
int?suiji???=?0;?//隨機(jī)置換算法randchange??當(dāng)內(nèi)存滿的時(shí)候,新進(jìn)入的頁(yè)號(hào)放的位置

int?state[InsideCount];//clock置換算法中,內(nèi)存中的每個(gè)頁(yè)面號(hào)對(duì)應(yīng)的狀態(tài)
int?state2[InsideCount][2];//?二維數(shù)組,第一行第一列為訪問(wèn)位,第一行的第二列為修改位

double?lost?=?0.0;

bool?isInside(int?num)//檢測(cè)頁(yè)號(hào)是否在內(nèi)存中
{
for(int?i?=?0;?i? {
if(Inside[i]?==?Page[num])
{
state[i]?=?1;
return?true;
}
}

return?false;
}

bool?change()?????//判斷頁(yè)面是否已經(jīng)被修改
{
if((rand()%2+1)?==?1?)
{
cout<<“該頁(yè)面被修改“< return?true;
}
else
return?false;
}


bool?isInside2(int?num)//用于改進(jìn)型clock置換算法,檢測(cè)頁(yè)號(hào)是否在內(nèi)存中并把訪問(wèn)位和修改位置1
{
for(int?i?=?0;?i? {
if(Inside[i]?==?Page[num])
{
if(change())
{
state2[i][0]?=?1;
state2[i][1]?=?1;
}
else
{
state2[i][0]?=?1;
}
return?true;
}
}

return?false;
}


int?whichpage()//用于改進(jìn)型clock置換算法,判斷內(nèi)存中第幾個(gè)需要被置換
{
int?j;


for(j=0;?j? {
if(state2[j][0]?==?0&&state2[j][1]?==?0)
{

return?j;

}
}

for(j=0;?j? {
if(state2[j][0]?==?0&&state2[j][1]?==?1)
{

return?j;

}
state2[j][0]?=?0?;

}
for(j=0;?j? {
state2[j][0]?=?0?;

}

return?whichpage();

}?
void?improveclock(int?num)?//改進(jìn)型clock置換算法
{
int?j;

if(isInside2(num))
{
cout<<“命中“<
for(int?i=0?;?i?????cout<<“??????????????????????????????????????????????內(nèi)存Inside[“< }

else
if(count?==?InsideCount)
{
lost++;

j?=??whichpage();


Inside[j]?=?Page[num];
state2[j][0]?=?1;

for(int?i=0?;?i?????cout<<“??????????????????????????????????????????????內(nèi)存Inside[“< }
else
{
//lost++;
Inside[count]?=?Page[num];
//state2[count][0]?=?1;
count++;

for(int?i=0?;?i?????cout<<“??????????????????????????????????????????????內(nèi)存Inside[“< }

}
void?clock(int?num)//簡(jiǎn)單Clock置換算法
{
int?j;

if(isInside(num))
{
cout<<“命中“<
for(int?i=0?;?i?????cout<<“??????????????????????????????????????????????內(nèi)存Inside[“< }

else
if(count?==?InsideCount)
{
lost++;
/*for(int?j=0;?j? {
for(?k?=?num;?k?>0;k--)???//從當(dāng)前的頁(yè)號(hào)向前看,發(fā)現(xiàn)頁(yè)號(hào)與內(nèi)存中的頁(yè)號(hào)相同,break?;比較內(nèi)存中三個(gè)頁(yè)號(hào),看哪一個(gè)走的遠(yuǎn),用max記錄
{
if(Inside[j]?==?Page[k])
break;
}

if(??num?-?k?>?max)
{
??max?=?num?-?k;????
??maxchange?=j;//j?表示把?內(nèi)存中第j個(gè)Inside中的頁(yè)面從內(nèi)存拿出,把新的頁(yè)面放入
}
}*/
for(j=0;?j?

評(píng)論

共有 條評(píng)論

相關(guān)資源