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