《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬_第1頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬_第2頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬_第3頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬_第4頁(yè)
《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬《操作系統(tǒng)》實(shí)驗(yàn)五:頁(yè)面置換算法模擬編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:實(shí)驗(yàn)五.請(qǐng)求頁(yè)式存儲(chǔ)管理的模擬[實(shí)驗(yàn)內(nèi)容]:熟悉虛擬存儲(chǔ)管理的各種頁(yè)面置換算法,并編寫模擬程序?qū)崿F(xiàn)請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法最近最久未使用算法(LRU),要求在每次產(chǎn)生置換時(shí)顯示頁(yè)面分配狀態(tài)和缺頁(yè)率。[實(shí)驗(yàn)要求]:1、運(yùn)行給出的實(shí)驗(yàn)程序,查看執(zhí)行情況,進(jìn)而分析算法的執(zhí)行過程,在理解FIFO頁(yè)面置換算法和最近最久未使用算法(LRU)置換算法后,給出最佳置換算法的模擬程序?qū)崿F(xiàn),并集成到參考程序中。2、執(zhí)行2個(gè)頁(yè)面置換模擬程序,分析缺頁(yè)率的情況。最好頁(yè)框數(shù)和訪問序列長(zhǎng)度可調(diào)節(jié),在使用同一組訪問序列數(shù)據(jù)的情況下,改變頁(yè)框數(shù)并執(zhí)行2個(gè)頁(yè)面置換模擬程序,查看缺頁(yè)率的變化。3、在每次產(chǎn)生置換時(shí)要求顯示分配狀態(tài)和缺頁(yè)率。程序的地址訪問序列通過隨機(jī)數(shù)產(chǎn)生,要求具有足夠的長(zhǎng)度。最好頁(yè)框數(shù)和訪問序列長(zhǎng)度可調(diào)節(jié)。實(shí)驗(yàn)的執(zhí)行結(jié)果如下圖所示(左下圖為FIFO執(zhí)行結(jié)果,右下圖為L(zhǎng)RU執(zhí)行結(jié)果):程序源代碼:#include<>#include""#include<>#include<>#include<>#include<>#include<>#include<>voidinitialize();//初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)voidcreateps();//隨機(jī)生成訪問序列voiddisplayinfo();//顯示當(dāng)前狀態(tài)及缺頁(yè)情況voidfifo();//先進(jìn)先出算法intfindpage();//查找頁(yè)面是否在內(nèi)存voidlru();//最近最久未使用算法intinvalidcount=0;//缺頁(yè)次數(shù)intvpoint;//頁(yè)面訪問指針intpageframe[10];//分配的頁(yè)框intpagehistory[10];//記錄頁(yè)框中數(shù)據(jù)的訪問歷史intrpoint;//頁(yè)面替換指針intinpflag;//缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè)structPageInfo//頁(yè)面信息結(jié)構(gòu){intserial[100];//模擬的最大訪問頁(yè)面數(shù),實(shí)際控制在20以上intflag;//標(biāo)志位,0表示無頁(yè)面訪問數(shù)據(jù)intdiseffect;//缺頁(yè)次數(shù)inttotal_pf;//分配的頁(yè)框數(shù)inttotal_pn;//訪問頁(yè)面序列長(zhǎng)度}pf_info;//////////////////////////////////////////////////////////////////////////初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)voidinitialize(){ inti,pf; inpflag=0;//缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè) =0;//缺頁(yè)次數(shù) =0;//標(biāo)志位,0表示無頁(yè)面訪問數(shù)據(jù) printf("\n請(qǐng)輸入要分配的頁(yè)框數(shù):");//自定義分配的頁(yè)框數(shù)scanf("%d",&pf); =pf; for(i=0;i<100;i++)//清空頁(yè)面序列 {[i]=-1;}}/////////////////////////////////////////////////////////////////////隨機(jī)生成訪問序列voidcreateps(void){ ints,i,pn;initialize();//初始化相關(guān)數(shù)據(jù)結(jié)構(gòu) printf("\n請(qǐng)輸入要隨機(jī)生成訪問序列的長(zhǎng)度:");//自定義隨機(jī)生成訪問序列的長(zhǎng)度scanf("%d",&pn);srand(rand());//初始化隨機(jī)數(shù)隊(duì)列的"種子" s=((float)rand()/32767)*50+pn;//隨機(jī)產(chǎn)生頁(yè)面序列長(zhǎng)度 =s; for(i=0;i<s;i++)//產(chǎn)生隨機(jī)訪問序列 { [i]=((float)rand()/32767)*16;//隨機(jī)數(shù)的大小在0-15之間} }//////////////////////////////////////////////////////////////////////////顯示當(dāng)前狀態(tài)及缺頁(yè)情況voiddisplayinfo(void){inti,n;if(vpoint==0){ printf("\n=============頁(yè)面訪問序列=============\n");for(i=0;i<;i++) { printf("%4d",[i]); if((i+1)%10==0)printf("\n");//每行顯示10個(gè) }printf("\n======================================\n");}printf("訪問%3d:內(nèi)存<",[vpoint]);for(n=0;n<;n++)//頁(yè)框信息{if(pageframe[n]>=0) printf("%3d",pageframe[n]); elseprintf("");}printf(">");if(inpflag==1)//缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè){ printf("==>缺頁(yè)"); printf("缺頁(yè)率%3.1f",(float)*vpoint);}printf("\n");}//////////////////////////////////////////////////////////////////////////查找頁(yè)面是否在內(nèi)存,1為在內(nèi)存,0為不在即缺頁(yè)intfindpage(intpage){ intn;for(n=0;n<;n++) { pagehistory[n]++;//訪問歷史加1 } for(n=0;n<;n++) {if(pageframe[n]==page) { inpflag=0;//inpflag缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè) pagehistory[n]=0;//置訪問歷史為0 return1; } } inpflag=1; //頁(yè)面不存在,缺頁(yè)return0; }//////////////////////////////////////////////////////////////////////////FIFO頁(yè)面置換算法voidfifo(void){intn,count,pstate;rpoint=0;//頁(yè)面替換指針初始化為0invalidcount=0;//缺頁(yè)數(shù)初始化為0createps();//隨機(jī)生成訪問序列count=0;//是否裝滿是所有的頁(yè)框for(n=0;n<;n++)//清除頁(yè)框信息{pageframe[n]=-1;}inpflag=0;//缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè)for(vpoint=0;vpoint<;vpoint++)//執(zhí)行算法{ pstate=findpage[vpoint]);//查找頁(yè)面是否在內(nèi)存 if(count<//開始時(shí)不計(jì)算缺頁(yè) { if(pstate==0)//頁(yè)不存在則裝入頁(yè)面 { pageframe[rpoint]=[vpoint]; rpoint=(rpoint+1)%; count++; } } else//正常缺頁(yè)置換 { if(pstate==0)//頁(yè)不存在則置換頁(yè)面 { pageframe[rpoint]=[vpoint]; rpoint=(rpoint+1)%; ++;//缺頁(yè)次數(shù)加1 } }Sleep(10); displayinfo();//顯示當(dāng)前狀態(tài)} //置換算法循環(huán)結(jié)束getch();return;}/////////////////////////////////////////////////////////////////////LRU頁(yè)面置換算法voidlru(void){intn,count,pstate,max;rpoint=0;//頁(yè)面替換指針invalidcount=0;//缺頁(yè)次數(shù)初始化為0createps();//隨機(jī)生成訪問序列count=0;//是否裝滿所有的頁(yè)框for(n=0;n<;n++){ pageframe[n]=-1;//清除頁(yè)框信息 pagehistory[n]=0;//清除頁(yè)框歷史}inpflag=0;//缺頁(yè)標(biāo)志,0為不缺頁(yè),1為缺頁(yè)for(vpoint=0;vpoint<;vpoint++)//執(zhí)行算法{ pstate=findpage[vpoint]);//查找頁(yè)面是否在內(nèi)存 if(count<//開始時(shí)不計(jì)算缺頁(yè) {if(pstate==0)//頁(yè)不存在則裝入頁(yè)面 { pageframe[rpoint]=[vpoint];//把要調(diào)入的頁(yè)面放入一個(gè)空的頁(yè)框里 rpoint=(rpoint+1)%; count++; } } else//正常缺頁(yè)置換 { if(pstate==0)//頁(yè)不存在則置換頁(yè)面 { max=0; for(n=1;n<;n++) { if(pagehistory[n]>pagehistory[max]) { max=n; } } rpoint=max; pageframe[rpoint]=[vpoint]; pagehistory[rpoint]=0; ++;//缺頁(yè)次數(shù)加1 } }Sleep(10); displayinfo();//顯示當(dāng)前狀態(tài)} //置換算法循環(huán)結(jié)束_getch();return;}/////////////////////最佳置換算法自己完成/////////////////////////////////////////////////////////////////////主函數(shù)intmain(){charch;system("cls");while(true){printf("*******************************************\n");printf("若要執(zhí)行FIFO頁(yè)面置算法請(qǐng)按1\n"); printf("若要執(zhí)行LRU頁(yè)面置算法請(qǐng)按2\n");printf("若要退出請(qǐng)按3\n");printf("*******************************************\n");printf("Enteryourchoice(1or2or3):"); do {//如果輸入信息不正確,繼續(xù)輸入ch=(char)getch(); }while(ch!='1'&&ch!='2'&&ch!='3');printf("\n\n你按的是:%c,現(xiàn)在為你執(zhí)行對(duì)應(yīng)操作。",ch);if(c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論