作業系統 頁式虛擬儲存位址變換

2021-08-20 20:34:06 字數 962 閱讀 5644

#include "stdio.h"

#define n 64 /*模擬實驗中假定的頁表長度,即最多允許程式含有多少頁;假定頁面大小為1k*/

#define length 10

struct

page[n]; /*頁表定義*/

int m; /*m為該作業在主存中的主存塊塊數*/

int page_length;/*頁表實際長度*/

int p[length]; /*存放在主存中的頁的頁號*/

int head; /*主存中頁號佇列,指向下次要被替換的頁號*/

void page_interrupt(int lnumber) /*缺頁中斷處理函式,採用fifo頁面置換演算法*/

/*缺頁中斷處理函式結束*/

void command(unsigned laddress,int write) /*命令處理函式*/

if(page[lnumber].flag==1) /*若訪問的頁在記憶體,查詢對應的物理塊,計算實體地址;若不在記憶體,先呼叫page_interrupt(int lnumber)進行頁面置換,再進行位址變換。*/

else

} /*命令處理函式結束*/

void main( )

while(lnumber!=-1);

page_length=i-1;//因為多輸入了乙個-1;

printf("輸入主存塊號,主存塊數要小於%d,(以-1結束):",i-1);

scanf("%d",&pnumber);

m=0;

head=0;

while(pnumber!=-1)

scanf("%d",&pnumber);

} scanf("%d%u",&write,&laddress);

while(write==0||write==1)

}/*main( )函式結束*/

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

整體思路 先在頁表裡找邏輯位址所在的頁號,如果找不到,就發生缺頁中斷,通過先進先出演算法進行對頁的置換,將所需的頁調入記憶體中,並更新頁表。include define n 64 分配給程序最大的頁的總數 define length 10 記憶體塊的最大個數 using namespace std ...

作業系統實驗 頁式位址變換機構模擬 c

include include define n 8 define m 7 int array m using namespace std class pageform void pageform init pageform return void pageform set pageform ret...

作業系統 頁儲存

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