先進先出(FIFO)頁面置換演算法 C語言實現

2021-10-12 04:58:35 字數 1910 閱讀 8966

假設每個頁面中可存放10條指令,分配給作業的記憶體塊數為4。用c語言模擬乙個作業的執行過程,該作業共有320條指令,即它的位址空間為32頁,目前它的所有頁都還未調入記憶體。在模擬過程中,如果所訪問的指令已在記憶體,則顯示其實體地址,並轉下一條指令。如果所訪問的指令還未裝入記憶體,則發生缺頁,此時需記錄缺頁的次數,並將相應頁調入記憶體。如果4個記憶體塊均已裝入該作業,則需進行頁面置換,最後顯示其實體地址,並轉下一條指令。在所有320指令執行完畢後,請計算並顯示作業執行過程中發生的缺頁率。

置換演算法:採用先進先出(fifo)頁面置換演算法。

通過隨機數產生乙個指令序列,共320條指令:

1)指令的位址按下述原則生成:

① 50%的指令是順序執行的;

② 25%的指令是均勻分布在前位址部分;

③ 25%的指令是均勻分布在後位址部分;

具體的實施方法是:

① 在[0,319]的指令位址之間隨機選取一起點m;

② 順序執行一條指令,即執行序號為m+1的指令;

③ 在前位址[0,m-1]中隨機選取一條指令並執行,該指令的序號為m1;

④ 順序執行一條指令,其序號為m1+1的指令;

⑤ 在後位址[m1+2,319]中隨機選取一條指令並執行,該指令的序號為m2;

⑥ 順序執行一條指令,其序號為m2+1的指令;

重複上述步驟①~⑥,直到執行320次指令。

2)將指令序列變換為頁位址流

設頁面大小為1k, 使用者虛存容量為32k。在使用者虛存中,按每k存放10條指令排列虛存位址,即320條指令在虛存中的存放方式為:

第0條~第9條指令為第0頁(對應虛存位址為[0,9]);

第10條~第19條指令為第1頁(對應虛存位址為[10,19]);

…………

第310條~第319條指令為第31頁(對應虛存位址為[310,319])。

按以上方式,使用者指令可組成32頁。

#include

#include

float count =0;

//缺頁次數

typedef

struct data //資料域

data;

typedef

struct blocknode //單向迴圈鍊錶

block,

*blocklist;

//定義記憶體塊

blocklist block1;

blocklist block2;

blocklist block3;

blocklist block4;

block *p;

void

initialize()

//初始化

intfifo

(int pagenum,

int viraddr)

//先進先出頁面置換演算法

if(p->data.pagenum == pagenum)

p = p->next;

} p->data.pagenum = pagenum;

count++

;printf

(, pagenum,

(viraddr %10)

, p->data.blocknum,

(viraddr %10)

);p = p->next;

//指向最老的頁面

return1;

}void

calculate()

//生成頁位址流並計算缺頁率

printf

("\n");

printf

("缺頁次數:%.0f\n"

, count)

;printf

("計算得到的缺頁率為:%.4f \n"

, count /

320);}

intmain()

FIFO先進先出頁面置換演算法實現

學校要做的實驗,很久沒有寫 了orz,所以寫的很亂。不過可以直接提交到oj平台上。自己寫的 歡迎討論。fifo先進先出頁面置換演算法,是最早出現的頁面置換演算法,該演算法總是淘汰最先進入記憶體的頁面。以下是 include include include using namespace std fi...

頁面置換 先進先出置換(FIFO)

先進先出置換 淘汰最先進入記憶體的頁面 輸入 記憶體物理塊的大小,以及頁面號引用串的大小,引用串的各個頁面編號。輸出 被置換出去的頁面編號。執行結果 所需的資料結構 頁面 struct page 輔助函式 在記憶體中尋找最先進入記憶體的頁面。返回記憶體下標。int findfirst page q,...

作業系統 頁面置換演算法 先進先出置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生 缺頁中斷 時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做 頁面置換演算法 最簡單的頁面置換演算法是先入先出 fifo 法。假定系統為某程序分配了三個物理塊...