国产精品婷婷久久久久久,国产精品美女久久久浪潮av,草草国产,人妻精品久久无码专区精东影业

操作系統(tǒng)實驗報告三虛擬存儲器.doc

約5頁DOC格式手機打開展開

操作系統(tǒng)實驗報告三虛擬存儲器,操作系統(tǒng)實驗報告三 全文5頁776字圖文并茂 時間:2005.4.30實驗題目:虛擬存儲器實驗要求:模擬分頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷,以及選擇頁面調(diào)度算法處理缺頁中斷。在計算機系統(tǒng)中,為了提高主存利用率,往往把輔助存儲器(如磁盤)作為主存儲器的擴充,使多道運行的作業(yè)的全部邏輯地址空間總和可以超出主存的絕...
編號:5-32969大小:64.50K
分類: 論文>數(shù)學(xué)/物理論文

內(nèi)容介紹

此文檔由會員 黃藥師 發(fā)布

操作系統(tǒng)實驗報告三
全文5頁776字 圖文并茂
時間:2005.4.30
實驗題目:虛擬存儲器
實驗要求:
模擬分頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷,以及選擇頁面調(diào)度算法處理缺頁中斷。
在計算機系統(tǒng)中,為了提高主存利用率,往往把輔助存儲器(如磁盤)作為主存儲器的擴充,使多道運行的作業(yè)的全部邏輯地址空間總和可以超出主存的絕對地址空間。用這種辦法擴充的主存儲器稱為虛擬存儲器。通過本實驗幫助同學(xué)理解在分頁式存儲管理中怎樣實現(xiàn)虛擬存儲器。
解題思路(流程圖):

























圖2-1 地址轉(zhuǎn)換模擬算法










































(接下頁)






(接上頁)









實驗結(jié)果(部分源碼):
#include "iostream.h"
#include "math.h"
#include "stdio.h"
//頁面表結(jié)構(gòu)
struct Cpageform {
int pagenumber; //頁面號
int biaozhi; //標志
int kuaihao; //塊號
int xgbz; //修改標志
int cpwz; //磁盤位置
};
//操作結(jié)構(gòu)
struct Cwork {
char caozuo; //操作名
int pagenumber; //頁號
int pageaddress; //頁面地址
};
//頁面表初值
Cpageform pageform[]={ {0,1,5,0,0x11},
{1,1,8,0,0x12},
{2,1,9,0,0x13},
{3,1,1,0,0x21},
{4,0,0,0,0x22},
{5,0,0,0,0x23},
{6,0,0,0,0x12},
};
//操作序列初值共12條操作
Cwork work[]={ {'+',0,0x70},{'+',1,0x50},
{'*',2,0x15},{'s',3,0x21},
{'f',0,0x56},{'-',6,0x40},
{'m',4,0x53},{'+',5,0x23},
{'s',1,0x37},{'f',2,0x78},
{'+',4,0x01},{'s',6,0x84}
};
//已裝入主存的頁面數(shù)
const int m=4;
//頁號隊列
int p[]={0,1,2,3};
//聲明FIFO頁面調(diào)度函數(shù)
void fifo1(int p[],int,int&,int);
//主函數(shù)
void main()
{//輸出“start”
cout< //
int k=0; //要裝入新頁面是應(yīng)調(diào)出的頁的位置,初值為0
int l;
int j=0;
int i;
for( i=0;i<12;i++) //順序執(zhí)行操作隊列
{ //取指令中訪問的頁號
l=work[i].pagenumber;
cout<//查頁面表中頁號為l的頁面
L1: j=0;
while ( l != pageform[j].pagenumber && j<7 )
{j=j+1;}
//如果頁面的標志不為1,即頁面已修改過則產(chǎn)生缺頁中斷
if (pageform[j].biaozhi!=1)
{ //輸出中斷頁號
cout<<"interrupt:"<<" * "<//調(diào)用FIFO頁面調(diào)度函數(shù).
fifo1( p,l,k,j);
//重新查詢頁面表
goto L1;
}
//頁面未被修改時進行的操作
long int address; // 絕對地址=頁面地址+1024×塊號
address=1024*pageform[j].kuaihao;
address=address+work[i].pageaddress;
//如果操作是“保存”,則修改頁面修改標志
if (work[i].caozuo=='s')
{pageform[j].biaozhi=1;}
輸出頁號和絕對地址
cout<<"pagenumber:"< cout<<"absolute address="< }
}
//FIFO頁面調(diào)度函數(shù),int p[] :頁面隊列,int l:操作頁號,int& k:要裝入新頁面時應(yīng)調(diào)出的頁的位置,
//int j:中斷頁
void fifo1(int p[] ,int l,int& k,int j)
{ int pp;
//獲得應(yīng)調(diào)出的頁的頁號
pp=p[k];
//如果J頁已修改,則輸出J頁
if (pageform[j].xgbz==1)
{cout<<"out:"<//如果未被修改則調(diào)入操作頁
cout<<"in:"<//修改主存中頁面指向的頁號
p[k]=l;
//修改要裝入新頁面時應(yīng)調(diào)出的頁的位置
k=int(fmod((k+1),m));
//修改頁面表
pageform[pp].biaozhi=0;
pageform[l].biaozhi=1;
}