請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法_第1頁(yè)
請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法_第2頁(yè)
請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法_第3頁(yè)
請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法_第4頁(yè)
請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五 請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)請(qǐng)求頁(yè)式存儲(chǔ)管理中頁(yè)面置換算法模擬程序,了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法。實(shí)驗(yàn)屬性:設(shè)計(jì)實(shí)驗(yàn)內(nèi)容:1.通過(guò)隨機(jī)數(shù)產(chǎn)生一個(gè)指令序列,共320條指令,指令的地址按下述原則生產(chǎn):50的指令是順序執(zhí)行的;25的指令是均勻分布在前地址部分;25的指令是均勻分布在后地址部分。2.將指令序列變換成為頁(yè)地址流:設(shè)頁(yè)面大小為1K;用戶(hù)內(nèi)存容量為4頁(yè)到32頁(yè);用戶(hù)虛存容量為32K。在用戶(hù)虛存中,按每K存放10條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條至第9條指令為第0頁(yè);第1

2、0條至19條指令為第1頁(yè);第310條至319條指令為第31頁(yè)。3.計(jì)算并輸出下述各種算法在不同內(nèi)存容量下的命中率。(1) 先進(jìn)先出算法(FIFO) (2) 最近最少使用算法(LRU)(3) 最佳使用算(OPT) 命中率頁(yè)面失效次數(shù)頁(yè)地址流長(zhǎng)度本實(shí)驗(yàn)中,頁(yè)地址流長(zhǎng)度為320,頁(yè)面失效次數(shù)為每次訪(fǎng)問(wèn)相應(yīng)指令時(shí),該指令所對(duì)應(yīng)的頁(yè)不在內(nèi)存的次數(shù)。實(shí)驗(yàn)思路:關(guān)于隨機(jī)數(shù)的產(chǎn)生辦法,首先要初始化設(shè)置隨機(jī)數(shù),產(chǎn)生序列的開(kāi)始點(diǎn),可通過(guò)下列語(yǔ)句實(shí)現(xiàn): srand ( 400 ) ; (1) 計(jì)算隨機(jī)數(shù),產(chǎn)生320條指令序列 m160;for (i0;i80;i+ ji4; ajm; aj+1m+1; aj+2aj

3、 1.0 rand( )/32767; aj+3aj+2+1 maj+3+(319-aj+3) 1.0rand( )/32767; (2) 將指令序列變換成為頁(yè)地址流 for ( k0;k320;k+) ptak/10; pd= ak%10; (3) 計(jì)算不同算法的命中率 rate1-1.0U/320 ; 其中U為缺頁(yè)中斷次數(shù),320是頁(yè)地址流長(zhǎng)度。 (4) 輸出格式 k fifo 1ru 4 0.23 0.25 32 1.0 1.0實(shí)驗(yàn)內(nèi)容:實(shí)現(xiàn)程序:主要的數(shù)據(jù)結(jié)構(gòu):void build();int searchpb();int searchpro();void Optimal();void

4、 FIFO();void LRU();void empty();void main();主程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#define bsize 4 /物理塊大小#define psize 16 /進(jìn)程大小int phbbsize=0; /物理塊標(biāo)號(hào)int propsize=0; /進(jìn)程序列號(hào)int flagbsize = 0; /進(jìn)程等待次數(shù)(存放最久未被使用的進(jìn)程標(biāo)志)int i = 0, j = 0,k = 0; /i表示進(jìn)程序列號(hào),j表示物理塊號(hào)int m = -1,

5、 n = -1; /物理塊空閑和進(jìn)程是否相同判斷標(biāo)志int max = -1,maxflag = 0; /標(biāo)記替換物理塊進(jìn)程下標(biāo)int count = 0; /統(tǒng)計(jì)頁(yè)面缺頁(yè)次數(shù)/隨機(jī)產(chǎn)生序列號(hào)函數(shù)void build()printf("隨機(jī)產(chǎn)生一個(gè)進(jìn)程序列號(hào)為:n");int i = 0; for(i=0; i<psize; i+) proi = 10*rand()/(RAND_MAX+1)+1; printf("%d ",proi); printf("n");/查找空閑物理塊int searchpb()for(j=0; j&l

6、t;bsize; j+) if(phbj = 0) m = j; return m; break; return -1;/查找相同進(jìn)程int searchpro()for(j = 0; j < bsize; j+) if(phbj = proi) n = j; return j; return -1;/初始化內(nèi)存void empty()for(i=0;i<bsize;i+)phbi=0; count=0; /計(jì)數(shù)器置零/先進(jìn)先出頁(yè)面置換算法void FIFO() for(i = 0; i<psize; i+) m=searchpb(); n=searchpro();/找fla

7、g值最大的 for(j = 0; j < bsize;j+) if(flagj>maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同進(jìn)程 if(m != -1) /存在空閑物理塊 phbm = proi; /進(jìn)程號(hào)填入該空閑物理塊 count+; flagm = 0; for(j = 0;j <= m; j+) flagj+; m = -1; else /不存在空閑物理塊 phbmax = proi; flagmax = 0; for(j = 0;j < bsize; j+) flagj+; max = -1; max

8、flag = 0; count+; else /存在相同的進(jìn)程 phbn = proi; for(j = 0;j < bsize; j+) flagj+; n = -1; for(j = 0 ;j < bsize; j+) printf("%d ",phbj); printf("n"); printf("缺頁(yè)次數(shù)為:%dn",count);printf("n");/主函數(shù)*void main()int sel;do printf("ttt-ttt");printf("ttt

9、 -歡迎進(jìn)入操作系統(tǒng)界面- ttt");printf("ttt-tttn");printf("tttttt"); printf("ttt 虛擬內(nèi)存 ttt");printf("ttt-ttt"); printf("ttt 1、產(chǎn)生隨機(jī)序列 ttt");printf("ttt-ttt"); printf("ttt 2、最佳置換算法(OPT) ttt");printf("ttt-ttt"); printf("ttt 3、

10、先進(jìn)先出(FIFO) ttt");printf("ttt-ttt"); printf("ttt 4、最久未使用(LRU) ttt");printf("ttt-ttt");printf("ttt 5、三種算法的比較 ttt");printf("ttt-ttt");printf("ttt 0、退出(Exit) ttt"); printf("ttttttn"); printf("請(qǐng)選擇所要執(zhí)行的操作(0/1/2/3/4/5):");

11、 scanf("%d",&sel); switch(sel) case0:printf("ttt-再見(jiàn)!- tttn");system("pause");break; case 1:build();break; case 2:printf(最佳置換算法n");Optimal();empty();break; case 3:printf("先進(jìn)先出算法n");FIFO();empty();break; case 4:printf("最久未使用算法n");LRU();empty()

12、;break; case 5: printf("最佳置換算法n");Optimal();empty();printf("先進(jìn)先出算法n");FIFO();empty();printf("最久未使用算法n");LRU();empty();break;default: printf("請(qǐng)輸入正確的選項(xiàng)號(hào)!");printf("nn");break;while(sel!=0);實(shí)驗(yàn)結(jié)果:圖1圖2圖3實(shí)驗(yàn)總結(jié):1請(qǐng)求頁(yè)式存儲(chǔ)管理的實(shí)現(xiàn)原理:請(qǐng)求分頁(yè)虛擬存儲(chǔ)管理是將進(jìn)程信息的副本存放在副主存儲(chǔ)器中,當(dāng)它被

13、調(diào)度投入運(yùn)行時(shí),并不把程序和數(shù)據(jù)全部裝入主存,僅裝入當(dāng)前使用的頁(yè)面,進(jìn)程執(zhí)行過(guò)程中訪(fǎng)問(wèn)不在主存的頁(yè)面時(shí),再把所需信息動(dòng)態(tài)地裝入。當(dāng)需要執(zhí)行某條指令或使用某個(gè)數(shù)據(jù)而發(fā)現(xiàn)他們不在主存時(shí),產(chǎn)生缺頁(yè)異常,系統(tǒng)從磁盤(pán)中把此指令或數(shù)據(jù)所在的頁(yè)面裝入,保證用不到的頁(yè)面不會(huì)被裝入主存。2寫(xiě)出這三種頁(yè)面置換算法的實(shí)現(xiàn)思想。(1) 最佳置換算法(OPT):當(dāng)要調(diào)入一頁(yè)而必須淘汰舊頁(yè)時(shí)應(yīng)該淘汰以后不再訪(fǎng)問(wèn)的頁(yè)或距現(xiàn)在最長(zhǎng)時(shí)間后要訪(fǎng)問(wèn)的頁(yè)面。(2) 先進(jìn)先出(FIFO):基于程序總是按線(xiàn)性順序來(lái)訪(fǎng)問(wèn)物理空間這一假設(shè),總是淘汰最先調(diào)入主存的頁(yè)面,即淘汰在主存中駐留時(shí)間最長(zhǎng)的頁(yè)面,認(rèn)為駐留時(shí)間最長(zhǎng)的頁(yè)不再使用的可能性較大。(3) 最久未使用(LRU):最近最少使用頁(yè)面替換算法淘汰的頁(yè)面是在最近一段時(shí)間內(nèi)最久未被訪(fǎng)問(wèn)的那一頁(yè),基于程序的局部性原理來(lái)考慮,認(rèn)為那些剛被使用過(guò)的頁(yè)面可能還要立即被使用,而那些在較長(zhǎng)時(shí)間內(nèi)未被使用的頁(yè)面可能不會(huì)立即使用。3對(duì)不同算法的性能進(jìn)行評(píng)價(jià)。(1) 最佳置換算法(OPT): 這種算法產(chǎn)生的缺頁(yè)數(shù)最少,卻

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論