作業系統之 頁面置換演算法C語言實現

2021-07-25 04:35:46 字數 1824 閱讀 2606

// 頁面置換演算法.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "stdlib.h"

#include "stdio.h"

#include "time.h"

#include "string.h"

#define memory_blocks 20 //記憶體物理總塊數

#define program_pages 50 //程式分頁數上限

#define page_use_longth 100 //頁面走向長度最大值

#define fifo 1 //先進先出置換

#define lru 2 //最久未用置換

int memory_blocks=0; //分配記憶體物理塊數

int program_pages=0; //程式分頁數

int memory_allocation[memory_blocks]; //記憶體分配情況

struct visit ;

struct pagr_list page_list[program_pages];

int create_rand(int a, int b);

void init(int m, int p);

void page_adjust(int p);

bool allocation_once(int p, int f);

int change_page(int f);

void huanhang(int l);

void show_me();

void simulation(int l, int f);

void menu();

int create_rand(int a, int b)

void init(int m,int p)

for (int i = 0; i < program_pages ; i++)

printf("\n初始化完成\n");

}void page_adjust(int p)

} out = memory_allocation[block];

} else if(f == lru)

} out= memory_allocation[block];

} //收尾操作

memory_allocation[block] = -1;

page_list[out].block_num = -1;

page_list[out].state = false;

page_list[out].visit.load_time = 0;

page_list[out].visit.frequency = -1;

return out;

}void huanhang(int l)

printf("\n請輸入為該程序分配的物理塊數(最大%d) ", memory_blocks);

scanf("%d", &b);

while (b > memory_blocks||b<1)

init(b,a);

} else if (_stricmp(code, "show") == 0)

else if (_stricmp(code, "fifo") == 0)

else if (_stricmp(code, "lru") == 0)

else if (_stricmp(code, "clear") == 0)

else printf("命令無效,請重新輸入\n"); }}

int main()

作業系統之頁面置換演算法

在請求分頁儲存管理系統中,由於使用了虛擬儲存管理技術,使得所有的程序頁面不是一次性地全部調入記憶體,而是部分頁面裝入。這就有可能出現下面的情況 要訪問的頁面不在記憶體,這時系統產生缺頁中斷。作業系統在處理缺頁中斷時,要把所需頁面從外存調入到記憶體中。如果這時記憶體中有空閒塊,就可以直接調入該頁面 如...

作業系統之頁面置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不在記憶體中,則產生缺頁中斷。當發生缺頁中斷時,如果作業系統記憶體中沒有空閒頁面,則作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。1 最佳置換演算法 opt 理想置換演算法 從主...

作業系統之頁面置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不在記憶體中,則產生缺頁中斷。當發生缺頁中斷時,如果作業系統記憶體中沒有空閒頁面,則作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。1 最佳置換演算法 opt 理想置換演算法 從主...