頁式存儲管理模擬(共8頁)_第1頁
頁式存儲管理模擬(共8頁)_第2頁
頁式存儲管理模擬(共8頁)_第3頁
頁式存儲管理模擬(共8頁)_第4頁
頁式存儲管理模擬(共8頁)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上學(xué)號姓名王娟實驗日期2018.實驗名稱頁式存儲管理模擬實驗?zāi)康模罕緦嶒炌ㄟ^模擬頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換,和采用先進先出算法(FIFO)的缺頁中斷處理的實現(xiàn)過程,來進一步加深對虛擬存儲的理解。實驗內(nèi)容:此實驗?zāi)M頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和采用先進先出算法(FIFO)的缺頁中斷處理。地址轉(zhuǎn)換是由硬件完成的,實驗中使用軟件程序模擬地址轉(zhuǎn)換過程,模擬地址轉(zhuǎn)換的流程圖如圖1所示(模擬實驗中假定主存64KB,每個主存塊1024字節(jié),即n=10,m=16,物理地址中塊號6位,塊內(nèi)地址10位;作業(yè)最大64KB,即m=16,邏輯地址中頁號6位,頁內(nèi)地址10位)。在模擬實

2、驗中頁表格式如圖2所示。 實驗原理:頁表用數(shù)組模擬,在模擬實驗中,頁表數(shù)據(jù)結(jié)構(gòu)定義為:define n 32 /*模擬實驗中假定的頁表長度*/structint lnumber; /*頁號*/ int flag; /*表示該頁是否在主存,“1”表示在主存,“0”表示不在主存*/ int pnumber; /*該頁所在主存塊的塊號*/ int write; /*該頁是否被修改過,“1”表示修改過,“0”表示沒有修改過*/ int dnumber /*該頁存放在磁盤上的位置,即磁盤快號*/ pagen; /*頁表定義*/本實驗系統(tǒng)采用頁面預(yù)置的方法分配主存空間時將前幾頁調(diào)入主存,假定系統(tǒng)中每個作業(yè)

3、分得主存塊m(m=4)塊,則將第0m-1頁裝入主存。因為是模擬硬件工作,所以模擬實驗中如果訪問的頁不在主存時,則輸出該頁頁號,表示硬件產(chǎn)生缺頁中斷,然后直接轉(zhuǎn)去缺頁中斷處理。模擬實驗中,由于采用頁面預(yù)置方法,在給定的主存塊中一定無空閑塊,只能淘汰已在主存的一頁。模擬實驗中,沒有啟動磁盤的工作,淘汰的頁需要寫回磁盤時,用輸出頁號表示,調(diào)入新的一頁時,將該頁在頁表中的存在標志置為“1”,輸出頁號表示將該頁調(diào)入主存。模擬實驗中使用先進先出調(diào)度算法??梢园言谥鞔鎯ζ鞯捻摰捻撎柊催M入主存的先后次序排成隊列,每次總是調(diào)出隊首的頁,當裝入一個新頁后,把新頁的頁號排入隊尾。模擬實驗中,用一個數(shù)組存放頁號的隊列

4、。假定分配給作業(yè)的主存塊數(shù)為m,數(shù)組可由m個元素組成,p0,p1.pm-1,隊首指針head和隊尾指針tail,當裝入一個新的頁時,將其頁號存入數(shù)組:tail=(tail+1)%m;ptail=新裝入頁的頁號;當選擇淘汰的頁時,淘汰頁的頁號=phead;head=(head+1)%m;模擬實驗中,采用頁面預(yù)置的方法,頁號隊列的長度總是m,tail等于(head+1)%m。因此可以使用一個指針,只用head即可。在裝入一個新的頁時,裝入頁和淘汰頁同時執(zhí)行,語句改為:淘汰頁的頁號=phead;phead=新裝入頁的頁號;head=(head+1)%m; 模擬實驗中,采用先進先出頁面置換算法的缺頁中

5、斷流程圖如圖3所示。 模擬實驗執(zhí)行一條指令時,不模擬指令的執(zhí)行,只是考慮執(zhí)行是否修改頁面,若修該頁面,則將頁面的頁表中修改標志置為“1”,然后輸出轉(zhuǎn)換后的物理地址,并輸出物理地址來表示一條指令的完成;如果訪問的頁不存在時,則產(chǎn)生缺頁中斷,往后直接轉(zhuǎn)去缺頁中斷處理,最后模擬中斷返回,就是返回重新進行地址轉(zhuǎn)換。一條指令執(zhí)行的模擬流程圖如圖4所示。模擬程序中首先手工輸入頁表信息,創(chuàng)建該作業(yè)的頁表;然后循環(huán)執(zhí)行假定的指令,觀察地址轉(zhuǎn)換情況。模擬程序的完整流程圖如圖5所示。實驗過程與結(jié)果: #define n 64 /*模擬實驗中假定的頁表長度*/ #define length 10 Struct in

6、t lnumber; /*頁號*/ int flag; /*表示頁是否在主存,“1”表示在,“0”表示不在*/ int pnumber; /*該頁所在主存塊的塊號*/ int write; /*該頁是否被修改過,“1”表示修改過,“0”表示沒有修改過*/ int dnumber; /*該頁存放在磁盤上的位置,即磁盤塊號*/ pagen; /*頁表定義*/ int m; /*m為作業(yè)在主存中的主存塊塊數(shù)*/ int page_length; /*頁表實際長度*/ int plength; /*存放在主存中頁的頁號*/ int head; /*主存中頁號隊列頭指針*/ page_interrupt

7、(lnumber) int lnumber; int j;Printf(“發(fā)生缺頁中斷* %dn”,lnumber);/*淘汰頁*/j=phead;phead=lnumber;head=(head+1)%m;if(pagej.write=1) printf(“將頁%d寫回磁盤第%d塊n”,j,pagej.dnumber);pagej.flag=0; /*第j頁存在標志改為“0”*/pagelnumber.pnumber=pagej.pnumber;pagelnumber.flag=1; /*第lnumber頁存在標志改為“0”*/pagelnumber.write=0; /*第lunmber頁

8、修改標志改為“1”*/printf(“淘汰主存塊%2d中的頁%2d,從磁盤第%d塊中調(diào)入頁%2dn”,pagej.pnumber,j,pagelnumber.dnumber,umber);/*缺頁中斷處理函數(shù)結(jié)束*/Command(laddress,write)unsigned laddress;int write;unsigned paddress,ad,pnumber,lnumber;kk:/*取出邏輯地址laddress的頁號lnumber(高6位)和頁內(nèi)地址ad*/lnumber=laddress>>10;ad=laddress&0x33ff;if(lnumber&

9、gt;=page_length)printf(“不存在該頁n”);return;if (pagelnumber.flag=1) /*頁在主存*/pnumber=pagelnumber.pnumber; /*從頁表中取得塊號*/paddress=pnumber<<10/ad; /*合并塊號和塊內(nèi)地址,形成物理地址padress*/ Printf(“邏輯地址是:%x對應(yīng)的物理地址是:%xn”,laddress,paddress); If(write=1) /*如果需要寫,修改頁的修改標志位*/ Pagelnumberwrite=1; else page_interrupt(lnumbe

10、r); -goto kk; /*命令處理函數(shù)結(jié)束*/main() int lnumber,flag,pnumber,write,dnumber;unsigned laddress;int I;/*輸入頁表信息,創(chuàng)建頁表page*/printf(“輸入頁表信息,創(chuàng)建頁表(若頁號為-1,則結(jié)束輸入)n”);printf(“輸入頁號和輔存地址:”);scanf(%d%d,&lnumber,&dnumber);I=0;While(lnumber !=-1)pageI.lnumber=lnumber; pageI.flag=0; pageI.write=0; pageI.dnumber=

11、dnumber; I+; Printf(“輸入頁號和輔存地址:”); scanf(%d%d,&lnumber,&dnumber);page_length=I;printf(“輸入主存塊號,主存塊數(shù)要小于%d,(以-1結(jié)束):”,i);scanf(“%d”,&pnumber);m=0;head=0;while(pnumber !=-1)if(m<=i)pagem.pnumber=pnumber; pagem=m; m+;scanf(“%d”,&pnumber);printf(“輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:”);scan

12、f(“%d%x”,&write,&laddress);while(write= =0/write= =1)command(laddress,write); /*執(zhí)行指令*/ printf(“輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:”); scanf(“%d%x”,&write,&laddress); /*main()結(jié)束*/3測試(運行時屏幕顯示) 輸入頁表信息,創(chuàng)建頁表(若頁號為-1,則結(jié)束輸入) 輸入頁號和輔存地址:0 11 輸入頁號和輔存地址:1 12 輸入頁號和輔存地址:2 13 輸入頁號和輔存地址:3 21 輸入頁號和輔存地

13、址:4 22 輸入頁號和輔存地址:5 23 輸入頁號和輔存地址:6 121 輸入頁號和輔存地址:-1 1輸入主存塊號,主存塊號要小于7,(以-1結(jié)束):5 8 9 1 1 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 46 邏輯地址是:46 對應(yīng)的物理地址是:1446 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 432 邏輯地址是:432 對應(yīng)的物理地址是:2032 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 80f 邏輯地址是:80f 對應(yīng)的物理地址是:240f 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程

14、序運行)和邏輯地址:0 c15 邏輯地址是:c15 對應(yīng)的物理地址是:415 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 38 邏輯地址是:38 對應(yīng)的物理地址是:1438 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 1828 發(fā)生缺頁中斷*6 淘汰主存塊5中的頁0,從磁盤121塊中調(diào)入頁6 邏輯地址是:1828 對應(yīng)的物理地址是:1428 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 1035 發(fā)生缺頁中斷*4 淘汰主存塊8中的頁1,從磁盤22塊中調(diào)入頁4 邏輯地址是:1035 對應(yīng)的物理地址是:2035 輸入

15、指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 1417 發(fā)生缺頁中斷*5 淘汰主存塊9中的頁2,從磁盤23塊中調(diào)入頁5 邏輯地址是:1417 對應(yīng)的物理地址是:2417 輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:1 425 發(fā)生缺頁中斷*1 將頁3寫回磁盤第21塊淘汰主存塊1中的頁3,從磁盤第12塊中調(diào)入頁1邏輯地址是:425 對應(yīng)物理地址是:425輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:0 84e發(fā)生缺頁終端*2淘汰主存塊5中的頁6,從磁盤第13塊中調(diào)入頁2邏輯地址是:84e 對應(yīng)物理地址是:144e輸入指令性質(zhì)(1

16、-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:01001邏輯地址是:1001 對應(yīng)物理地址是:2001輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:11854發(fā)生缺頁終端*6將頁4寫回磁盤第22塊淘汰主存塊8中的頁4,從磁盤第121塊中調(diào)入頁6邏輯地址是:1854 對應(yīng)物理地址是:2054輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:-11輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址:-11思考題1 為實現(xiàn)分頁存儲管理,需要哪些硬件支持。頁表機制、地址變換機構(gòu)2 實現(xiàn)虛擬存儲器,需要哪些硬件支持。(1)請求分頁/段的頁表或

17、段表機制:請求分頁存儲管理是建立在分頁存儲管埋的基礎(chǔ)上,并結(jié)合虛擬存儲系統(tǒng)原理實現(xiàn)的,是目前常用的一種實現(xiàn)虛擬存儲器的方式。(2)缺頁/段中斷機構(gòu):作用就是就是要訪問的頁不在主存,需要操作系統(tǒng)將其調(diào)入主存后再進行訪問。在這個時候,被內(nèi)存映射的文件實際上成了一個分頁交換文件。(3)地址變換機構(gòu):當進程要訪問某個邏輯地址中的數(shù)據(jù)時,分頁地址變換機構(gòu)會自動地將有效地址(相對地址)分為頁號頁內(nèi)地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬件執(zhí)行。在執(zhí)行檢索之前,先將頁號與頁表長度進行比較,如果頁號大于或等于頁表長度,則表示本次所訪問的地址已超越進程的地址空間。于是,這一錯誤將被系統(tǒng)發(fā)現(xiàn)并產(chǎn)生一地址越界中斷。若未出現(xiàn)越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,于是可從中

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論