#include
#include
#include
#include
#include
#include
#include
intloc_1;
//棧底指標
#define
frame_num
3//主存大小
#define
total_instruction
6//總的額訪問頁數
intloc_2;
//fifo未滿時候的隊頭指標
//命中和未命中
intis_hit;
#define
hit1
#define
miss0
//頁面是否在記憶體的標誌
#define
in'1'
#define
out'0'
//存放頁面序列的陣列
intaccess_series[total_instruction];
//(1)
//頁表
struct
one_frame
; struct
one_frame m_frame[frame_num];
//(2)
intdisaffect;
//缺頁的數量
//初始化函式 每個程序開始均呼叫
void
init()
//輸出訪問序列
void
print_access_series()
//輸出在記憶體的頁面
void
print_m_frame()
printf("
\n"); }
//輸出缺頁次數和缺頁率
void
print_disaffect
(int
dis)
//lru命中函式 頁表m_frame0優先順序最高 [0]-[index-1]一次向後移動一位
void
hit(
intindex)
m_frame[0].
page_no
=temp;
printf("
\n"); }
//lru 未命中函式 調入
void
miss_call_in
(int
page)
m_frame[0].
flag
=in;
m_frame[0].
page_no
=page;
//移動完賦值
loc_1++;
} else }
//fifo
void
fifo
(int
page_n)
m_frame[0].
page_no
=page_n;
m_frame[0].
flag
=in;
//改變是否在記憶體的狀態位
for(inti=
0;i<
loc_2;i++)
if(loc_2
<=
(frame_num-1
)) loc_2++;
} intmain()
} if(is_hit
==hit)
else
//未命中 }
print_disaffect
(disaffect); }
else }
if(is_hit
==miss)
//miss
print_m_frame
(); }
print_disaffect
(disaffect); }
else }
return(0
); }
頁面置換演算法
常用的頁面置換演算法有三種 先進先出演算法fifo first in first out 該演算法的基本思想是首先淘汰那些駐留在主存時間最長的頁面。最近最久未用演算法 lru 該演算法的基本思想是 如果某一頁被訪問了,那麼它很可能馬上又被訪問 反之,如果某一頁很久沒被訪問,那麼最近也不會再訪問。lr...
頁面置換演算法
include using namespace std int process 100 頁面佇列 int memory 3 塊數 int optqueue 100 opt演算法的佇列 int fifoqueue 100 fifo演算法佇列 int lruqueue 100 lru演算法佇列 int ...
頁面置換演算法
位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。常見的置換演算法有 1 最佳置換演算法 opt 理想置換演算法 這是一種理想情況下的頁...