// 頁面置換演算法.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 理想置換演算法 從主...