整體思路:先在頁表裡找邏輯位址所在的頁號,如果找不到,就發生缺頁中斷,通過先進先出演算法進行對頁的置換,將所需的頁調入記憶體中,並更新頁表。
#include
#define n 64
//分配給程序最大的頁的總數
#define length 10
//記憶體塊的最大個數
using
namespace std;
//定義頁的結構體
struct
page[n]
;//注意,這不是頁表,是程序所擁有的最大頁數,包括利用的和未利用的,利用的又分為被調入記憶體裡的和在外存裡的
int m;
//頁表的長度
int page_length;
//程序所利用的最大頁數,也就是進**實占用的頁數
int p[length]
;//維護頁進入記憶體的順序,用來實現先進先出的置換演算法
int head;
//指向記憶體最早進入的頁號
intpage_interrupt
(int lnumber)
intcommand
(unsigned laddress,
int write)
if(page[lnumber]
.flag ==1)
}else
return1;
}int
main()
page_length = i;
//初始化程序所利用的頁的總數
m =0;
while(1
)}while(1
)return0;
}
作業系統 頁式虛擬儲存位址變換
include stdio.h define n 64 模擬實驗中假定的頁表長度,即最多允許程式含有多少頁 假定頁面大小為1k define length 10 struct page n 頁表定義 int m m為該作業在主存中的主存塊塊數 int page length 頁表實際長度 int p...
作業系統原理 08 儲存管理之段頁式儲存管理
字塊是相對物理裝置的定義 頁面則是相對邏輯空間的定義 將程序邏輯空間等分成若干大小的頁面 相應的把物理記憶體空間分成與頁面大小的物理塊 以頁面為單位把程序空間裝進物理記憶體中分散的物理塊 頁面大小應該適中,過大難以分配,過小記憶體碎片過多 頁面大小通常是512b 8k 頁表記錄程序邏輯空間與物理空間...
作業系統 頁儲存
為了能知道每個程序的每個頁面在記憶體中的存放位置,作業系統需要為每個程序建立一張頁表。如上圖所示頁表,記錄了頁面在記憶體中對應的記憶體塊號,頁表一般存放在記憶體中。在配置了頁表後,程序執行時,通過查詢該錶,即可找到每頁在記憶體中的記憶體塊號。可見頁表作用是實現從頁號到記憶體塊號的位址對映。這就是頁儲...