頁(yè)面置換實(shí)驗(yàn)報(bào)告_第1頁(yè)
頁(yè)面置換實(shí)驗(yàn)報(bào)告_第2頁(yè)
頁(yè)面置換實(shí)驗(yàn)報(bào)告_第3頁(yè)
頁(yè)面置換實(shí)驗(yàn)報(bào)告_第4頁(yè)
頁(yè)面置換實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩5頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)課程設(shè)計(jì)專(zhuān)題:頁(yè)面置換算法任務(wù):設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),編程序演示下述算法的具體實(shí)現(xiàn)過(guò)程,并計(jì)算訪問(wèn)命中率:要求設(shè)計(jì)主界面以靈活選擇某算法,且以下算法都要實(shí)現(xiàn)1)先進(jìn)先出算法(FIFO)2)最近最久未使用算法(LRU)3)最佳置換算法(OPT)思想:1. 最佳置換算法:最佳置換算法是一種理論上的算法,其所選擇的被淘汰頁(yè)面,將是以后永不使用的,或者是在最長(zhǎng)(未來(lái))時(shí)間內(nèi)不再被訪問(wèn)的頁(yè)面。采用最佳置換算法,通??杀WC獲得最低的缺頁(yè)率。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 177722224440000000777000

2、00333222221111100001111000333332222212. 先進(jìn)先出頁(yè)面置換算法:這是最早出現(xiàn)的置換算法。該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,即使選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面予以淘汰。該算法實(shí)現(xiàn)簡(jiǎn)單,只需把一個(gè)進(jìn)程已調(diào)入內(nèi)存的頁(yè)面,按先后次序連接成一個(gè)隊(duì)列,并設(shè)置一個(gè)指針,成為替換指針,使它總是指向最老的頁(yè)面。但該算法與進(jìn)程實(shí)際運(yùn)行的規(guī)律不相適應(yīng),因?yàn)樵谶M(jìn)程中,有些頁(yè)面經(jīng)常被訪問(wèn),所以先進(jìn)先出算法并不能保證這些頁(yè)面不被淘汰。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17772222444000111111100000000033333300

3、000001113332222222227773. 最近最久未使用置換算法:最久最久未使用的頁(yè)面置換算法,是根據(jù)頁(yè)面調(diào)入的先后的使用情況進(jìn)行決策的。該算法賦予每個(gè)頁(yè)面一個(gè)訪問(wèn)字段,用來(lái)記錄一個(gè)頁(yè)面自上次被訪問(wèn)以來(lái)經(jīng)歷的時(shí)間t,當(dāng)須淘汰一個(gè)頁(yè)面時(shí),選擇現(xiàn)有頁(yè)面中其t值最大的,即使最近最久未使用的頁(yè)面予以淘汰。最近最久未使用算法7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1777222222222222227770000000444000000000000111333333331111111任務(wù)目的:1通過(guò)模擬實(shí)現(xiàn)請(qǐng)求頁(yè)式存儲(chǔ)管理的幾種基本頁(yè)面置換算法,了解虛擬儲(chǔ)技

4、術(shù)的特點(diǎn)。2通過(guò)對(duì)頁(yè)面、頁(yè)表、地址轉(zhuǎn)換和頁(yè)面置換過(guò)程的模擬,加深對(duì)請(qǐng)求調(diào)頁(yè)系統(tǒng)的原理和實(shí)現(xiàn)過(guò)程的理解。3掌握虛擬存儲(chǔ)請(qǐng)求頁(yè)式存儲(chǔ)管理中幾種基本頁(yè)面置換算法的基本思想和實(shí)現(xiàn)過(guò)程,并比較它們的效率。方案:輸入頁(yè)面序列,缺頁(yè)時(shí)按FIFO、LRU、OPT的策略進(jìn)行頁(yè)面置換,輸出置換情況和缺頁(yè)次數(shù)。假設(shè)頁(yè)面數(shù)不超過(guò)pSIZE。process20表示簡(jiǎn)化了的頁(yè)表,只包含頁(yè)號(hào)序列。mSIZE表示分配給該進(jìn)程的塊數(shù)。Count用來(lái)表示置換次數(shù)。初始化:輸入分配的塊數(shù)mSIZE,輸入頁(yè)面序列,存放于數(shù)組process20中。按照循環(huán),依次查找頁(yè)面是否存在于頁(yè)表中,不存在則置換頁(yè)面,初始為0,變化同上。格式化依次

5、輸出訪問(wèn)下一個(gè)頁(yè)面后的頁(yè)表,然后輸出缺頁(yè)中斷總次數(shù)框圖:程序:#include #include #define mSIZE 3#define pSIZE 20static int memerymSIZE=0,0,0;static int processpSIZE=0;void FIFO();void LRU();void OPT();int main() int code,password; get(); do printf(-n); printf(| * * * |n); printf(| 1.FIFO * * * * * |n); printf(| * * |n); printf(| 2

6、.LRU * * * * * * * |n); printf(| * * * * * * * * |n); printf(| 3.OPT * * * * * * |n); printf(| * * * * * * * |n); printf(| 4.EXIT * * * * * * |n); printf(-*-n); printf(enter your choice:); scanf(%d,&code); switch(code) case 1: FIFO(); break; case 2: LRU(); break; case 3: OPT(); break; case 4:break;

7、while (code!=4); system(PAUSE); return 0;get() int i,n; for(i=0;i20;i+) printf(process%d=,i); scanf(%d,&processi) ; printf(n); void FIFO() int memerymSIZE=0,0,0; int timemSIZE=0,0,0; int i,j,k; int max=0; int count=0; for(i=0;ipSIZE;i+) printf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=pro

8、cessi; timei=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE個(gè)數(shù)直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; /*判斷新頁(yè)面號(hào)是否在物理塊中*/ if(k=mSIZE)/*如果都不在物理塊中*/ count+; if(time0time1) max=0; else max=1; if(time2timemax) max=2; memerymax=processi; timemax=i; for(

9、j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time:%dn,count); printf(min zhong lv=%d%,(20-count)*100/20); getch();void LRU() int memerymSIZE=0,0,0; int flagmSIZE=0,0,0; int i,j,k; int max=0,maxflag=0; int count=0; for(i=0;ipSIZE;i+) pr

10、intf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=processi; flagi=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE個(gè)數(shù)直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; else flagj=i; /*判斷新頁(yè)面號(hào)是否在物理塊中*/ if(k=mSIZE)/*如果都不在物理塊中*/ count+; if(flag0flag1) max

11、=0; else max=1; if(flag2flagmax) max=2; memerymax=processi; flagmax=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time:%dn,count); printf(min zhong lv=%d%,(20-count)*100/20); getch();void OPT() int memerymSIZE = 0,0,0; int nextmS

12、IZE=0; int i,j,k,l; int count=0,maxnext,max; for(i=0;ipSIZE;i+) printf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=processi; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE個(gè)數(shù)直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; /*判斷新頁(yè)面號(hào)是否在物理塊中*/ if(k=mSI

13、ZE)/*如果都不在物理塊中*/ count+; for(l=i+1;lpSIZE;l+) if(memery0=processl) next0=l; goto lin1; next0=l; goto lin1; lin1:for(l=i+1;lpSIZE;l+) if(memery1=processl) next1=l; goto lin2; next1=l; goto lin2; lin2:for(l=i+1;l=next1) max=0; else max=1; if(next2=nextmax) max=2; memerymax=processi; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time=%dn,count); printf(min zhong lv=%d%,(20-count)*100/20);getch()

溫馨提示

  • 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)論