模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷_第1頁(yè)
模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷_第2頁(yè)
模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷_第3頁(yè)
模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷_第4頁(yè)
模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 實(shí)驗(yàn)報(bào)告課程名稱 操作系統(tǒng)原理 實(shí)驗(yàn)名稱 虛擬頁(yè)式管理 姓 名 學(xué)號(hào) 專業(yè)班級(jí) 網(wǎng)絡(luò) 實(shí)驗(yàn)日期 成 績(jī) 指導(dǎo)教師 趙安科 (實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)原理主要儀器設(shè)備實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)數(shù)據(jù)記錄與處理實(shí)驗(yàn)結(jié)果與分析問(wèn)題建議)實(shí)驗(yàn)二 模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷1內(nèi)容:模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷處理2思想:裝入新頁(yè)置換舊頁(yè)時(shí),若舊頁(yè)在執(zhí)行中沒(méi)有被修改過(guò),則不必將該頁(yè)重寫(xiě)磁盤。因此,頁(yè)表中增加是否修改過(guò)的標(biāo)志,執(zhí)行“存”指令和“寫(xiě)”指令時(shí)將對(duì)應(yīng)的修改標(biāo)志置成“1”表示修改過(guò),否則為“0”表示未修改過(guò)。頁(yè)表格式如下:頁(yè)號(hào)標(biāo)志頁(yè)架號(hào)

2、修改標(biāo)志在磁盤上位置 3要求及方法: 設(shè)計(jì)一個(gè)地址轉(zhuǎn)換程序來(lái)模擬硬件的地址轉(zhuǎn)換和缺頁(yè)中斷。當(dāng)訪問(wèn)的頁(yè)在主存時(shí)則形成絕對(duì)地址,但不去模擬指令的執(zhí)行,可以輸出轉(zhuǎn)換后的絕對(duì)地址來(lái)表示一條指令已執(zhí)行完成。當(dāng)訪問(wèn)的頁(yè)不在主存中時(shí),則輸出“*頁(yè)號(hào)”來(lái)表示硬件產(chǎn)生了一次缺頁(yè)中斷。模擬地址轉(zhuǎn)換流程見(jiàn)圖1。 編制一個(gè)FIFO頁(yè)面調(diào)度程序;FIFO頁(yè)面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存中的哪一頁(yè)。因此可以用一個(gè)數(shù)組來(lái)表示(或構(gòu)成)頁(yè)號(hào)隊(duì)列。數(shù)組中每個(gè)元素是該作業(yè)已在主存中的頁(yè)面號(hào),假定分配給作業(yè)的頁(yè)架數(shù)為m,且該作業(yè)開(kāi)始的m頁(yè)已裝入主存,則數(shù)組可由m個(gè)元素構(gòu)成。P0,P1,P2,Pm-1它們的初值為P0:=0,

3、P1:=1,P2:=2,Pm-1:=m-1用一指針K指示當(dāng)要調(diào)入新頁(yè)時(shí)應(yīng)調(diào)出的頁(yè)在數(shù)組中的位置,K的初值為“0”,當(dāng)產(chǎn)生缺頁(yè)中斷后,操作系統(tǒng)總是選擇PK所指出的頁(yè)面調(diào)出,然后執(zhí)行:PK:=要裝入的新頁(yè)頁(yè)號(hào)K:=(k+1)mod m在實(shí)驗(yàn)中不必實(shí)際地啟動(dòng)磁盤執(zhí)行調(diào)出一頁(yè)和裝入一頁(yè)的工作,而用輸出“OUT調(diào)出的頁(yè)號(hào)”和“IN要裝入的新頁(yè)頁(yè)號(hào)”來(lái)模擬一次調(diào)出和裝入過(guò)程,模擬程序的流程圖見(jiàn)附圖1。按流程控制過(guò)程如下:提示:輸入指令的頁(yè)號(hào)和頁(yè)內(nèi)偏移和是否存指令,若d為-1則結(jié)束,否則進(jìn)入流程控制過(guò)程,得P1和d,查表在主存時(shí),絕對(duì)地址=P1×1024+d 假定主存中頁(yè)架大小為1024個(gè)字節(jié),現(xiàn)

4、有一個(gè)共7頁(yè)的作業(yè),其副本已在磁盤上。系統(tǒng)為該作業(yè)分配了4個(gè)頁(yè)架,且該作業(yè)的第0頁(yè)至第3頁(yè)已裝入內(nèi)存,其余3頁(yè)未裝入主存,該作業(yè)的頁(yè)表如下:頁(yè)號(hào)標(biāo)志頁(yè)架號(hào)修改標(biāo)志在磁盤上位置0150011118001221900133110021400022500023600121如果該作業(yè)依次執(zhí)行的指令序列如下表所示:操作頁(yè)號(hào)頁(yè)內(nèi)地址操作頁(yè)號(hào)頁(yè)內(nèi)地址+0070移位4053+1050+5023×2015存1037存3021取2078取0056+40016040存6084依次執(zhí)行上述指令調(diào)試你所設(shè)計(jì)的程序(僅模擬指令的執(zhí)行,不考慮序列中具體操作的執(zhí)行)。 為進(jìn)一步考察程序的執(zhí)行,可自行確定若干組指令,

5、運(yùn)行程序,核對(duì)執(zhí)行結(jié)果。4書(shū)寫(xiě)實(shí)驗(yàn)報(bào)告: 實(shí)驗(yàn)題目; 程序中所用的數(shù)據(jù)結(jié)構(gòu)及說(shuō)明; 源程序并附上必要的說(shuō)明; 按照指令的執(zhí)行序列,打印輸出結(jié)果:絕對(duì)地址或調(diào)出、調(diào)入的頁(yè)號(hào)。圖1 模擬算法流程代碼:#include<iostream>#include<iomanip>#include<list> using namespace std; char useSign125='+','-','*',"存","取",'-',"移位",'+

6、',"存","取",'+',"存" int PageAddress12=70,50,15,21,56,40,53,23,37,78,01,84; int PageNum12=0,1,2,3,0,6,4,5,1,2,4,6; int S_Station; int pPageNum7;/頁(yè)號(hào)pPage int pSign7; int pStool7;/頁(yè)架號(hào) int pModify7;/修改標(biāo)志 int pStation7;/磁盤位置 static int z=0; void Store() for(int i=0

7、;i<7;i+) if(i<4) pSigni=1; else pSigni=0; pPageNumi=i; pModifyi=0; int p1=1,p2=2,p3=3; for(i=0;i<7;i+) if(i<3) pStationi=p1; p1+; else if(i<6) pStationi=p2; p2+; else pStationi=p3; pStool0=5; pStool1=8; pStool2=9; pStool3=1; void CShow() cout<<"操作 " cout<<"頁(yè)

8、號(hào) " cout<<"頁(yè)內(nèi)地址 " cout<<"標(biāo)志 " cout<<"絕對(duì)地址 " cout<<"修改頁(yè)號(hào) " cout<<"頁(yè)架號(hào) " cout<<"絕對(duì)地址" cout<<endl; void Find() int m_Pagenum; int m_Station; int Y_Station;/絕對(duì)地址 int m_Stool; cout<<"輸入頁(yè)號(hào)

9、及頁(yè)內(nèi)地址查詢操作:" cin>>m_Pagenum>>m_Station; CShow(); int i,j=0; /string m_Modify; for(i=0;i<12;i+) if(PageAddressi=m_Station) break; Y_Station=pStoolm_Pagenum*1024+m_Station; if(pSignm_Pagenum=1) if(strcpy(useSigni,"存")!=0) pModifym_Pagenum=1; cout<<useSigni<<&qu

10、ot; " cout<<m_Pagenum<<" " cout<<m_Station<<" " cout<<pSignm_Pagenum<<" " if(Y_Station!=m_Station) cout<<Y_Station<<" " cout<<" " cout<<pStoolm_Pagenum<<" " cout<<

11、Y_Station<<endl; else cout<<"*"<<m_Pagenum<<" " for(j=z;j<7;j+) if(pSignj=1) z+; break; cout<<m_Pagenum<<"->"<<j<<" " pStoolm_Pagenum=pStoolj; pSignj=0; pStoolj=0; cout<<pStoolm_Pagenum<<" " cout<<pStoolm_Pagenum*1024+m_Station<<endl; int main(void) Store(); char judge='Y' while(judge='Y') Find(); cout<<"是否繼續(xù)輸入? Y = 是 N=否"<<endl; c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論