作業系統 c 實現頁式虛擬儲存管理

2021-10-10 10:36:59 字數 877 閱讀 8248

整體思路:先在頁表裡找邏輯位址所在的頁號,如果找不到,就發生缺頁中斷,通過先進先出演算法進行對頁的置換,將所需的頁調入記憶體中,並更新頁表。

#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 頁表記錄程序邏輯空間與物理空間...

作業系統 頁儲存

為了能知道每個程序的每個頁面在記憶體中的存放位置,作業系統需要為每個程序建立一張頁表。如上圖所示頁表,記錄了頁面在記憶體中對應的記憶體塊號,頁表一般存放在記憶體中。在配置了頁表後,程序執行時,通過查詢該錶,即可找到每頁在記憶體中的記憶體塊號。可見頁表作用是實現從頁號到記憶體塊號的位址對映。這就是頁儲...