《操作系統(tǒng)》實驗報告三-頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷55_第1頁
《操作系統(tǒng)》實驗報告三-頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷55_第2頁
《操作系統(tǒng)》實驗報告三-頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷55_第3頁
《操作系統(tǒng)》實驗報告三-頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷55_第4頁
《操作系統(tǒng)》實驗報告三-頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷55_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

實驗項目名稱頁式虛擬存儲管理中地址轉(zhuǎn)換和缺頁中斷實驗?zāi)康募耙笊钊肓私忭撌酱鎯芾砣绾螌崿F(xiàn)地址轉(zhuǎn)換。進一步認識頁式虛擬存儲管理中如何處理缺頁中斷。實驗內(nèi)容編寫程序完成頁式虛擬存儲管理中地址轉(zhuǎn)換過程和模擬缺頁中斷的處理。實驗具體包括:首先對給定的地址進行地址轉(zhuǎn)換工作,若發(fā)生缺頁則先進行缺頁中斷處理,然后再進行地址轉(zhuǎn)換;最后編寫主函數(shù)對所做工作進行測試。假定內(nèi)存64KB,每個內(nèi)存塊1024字節(jié);作業(yè)最大支持到64KB,系統(tǒng)中每個作業(yè)分得內(nèi)存塊4塊。實驗步驟缺頁處理:根據(jù)當(dāng)前執(zhí)行指令中邏輯地址的頁號查頁表,判斷該頁是否在主存儲器中,若該頁標志為“0”操作系統(tǒng)處理缺頁中斷的方法就是查內(nèi)存分配表,找一個空閑內(nèi)存塊;若無空閑塊,查頁表,選擇一個已在內(nèi)存的頁面,把它暫時調(diào)出內(nèi)存。若在執(zhí)行過程中該頁被修改過,則需將該頁信息寫回磁盤,否則不必寫回;找出該頁的磁盤位置,啟動磁盤讀出該頁信息,把磁盤上讀出的信息裝入第2補找到的內(nèi)存塊,修改頁表中該頁的標志為“1”;由于產(chǎn)生缺頁中斷的那條指令沒有執(zhí)行完,所以頁面裝入后應(yīng)重新執(zhí)行被中斷的指令。當(dāng)重新執(zhí)行該指令時,由于要訪問的頁面已在內(nèi)存中,所以可以正常執(zhí)行。實驗環(huán)境WindowsXP、visualstudio2005實驗結(jié)果與分析#include"stdio.h"#definen64#definelength10struct{ intlnumber; intflag; intpnumber; intwrite; intdnumber;}page[n];intm;intpage_length;intp[length];inthead;page_interrupt(intlnumber){ intj; printf("發(fā)生缺頁3中斷%d\n",lnumber); j=p[head]; p[head]=lnumber; head=(head+1)%m; if(page[j].write==1) printf("將頁d寫回磁盤第ì塊\n",j,page[j].dnumber); page[j].flag=0; page[lnumber].pnumber=page[j].pnumber; page[lnumber].flag=1; page[lnumber].write=0; printf("淘汰內(nèi)存塊%2d中ì頁°3%2d,從?¨?磁??盤¨?第ì¨2%d塊¨|中D調(diào)ì??入¨?頁°3%2d\n",page[j].pnumber,j,page[lnumber].dnumber,lnumber);}command(unsignedladdress,intwrite){ unsignedpaddress,ad,pnumber,lnumber;kk: lnumber=laddress>>10; ad=laddress&0x3ff; if(lnumber>=page_length) { printf("不存在該頁3\n"); return; } if(page[lnumber].flag==1) { pnumber=page[lnumber].pnumber; paddress=pnumber<<10|ad; printf("邏輯地址是x對應(yīng)物理地址是%x\n",laddress,paddress); if(write==1) page[lnumber].write=1; } else { page_interrupt(lnumber); gotokk; }}voidmain(){ intlnumber,flag,pnumber,write,dnumber; unsignedladdress; inti; printf("輸入頁3表的信息,創(chuàng)建頁3表(若頁°3號為a,則結(jié)束輸入)\n"); printf("輸入頁3號和輔存地址:"); scanf("%d%d",&lnumber,&dnumber); i=0; while(lnumber!=-1) { page[i].lnumber=lnumber; page[i].flag=0; page[i].write=0; page[i].dnumber=dnumber; i++; printf("輸入頁3號和輔存地址:"); scanf("%d%d",&lnumber,&dnumber); } page_length=i; printf(""輸入指令性質(zhì)<1-修改,0-不需要,其他-結(jié)束程序運行>和邏輯地址:",i);scanf("%d",&pnumber); m=0; head=0; while(pnumber!=-1) { if(m<=i) { page[m].pnumber=pnumber; page[m].flag=1; p[m]=m; m++; } scanf("%d",&pnumber); } printf("輸入指令性質(zhì)<1-修改,0-不需要,其他-結(jié)束程序運行>和¨a邏輯地址:""); scanf("%d%x",&write,&laddress); while(write==0||write==1) { command(

溫馨提示

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

最新文檔

評論

0/150

提交評論