版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 43758.2-2024智能網(wǎng)聯(lián)汽車運(yùn)行安全測(cè)試環(huán)境技術(shù)條件第2部分:半開放道路
- 人教版八年級(jí)物理上冊(cè)《第二章聲現(xiàn)象》章末測(cè)試卷含答案
- 酶解法促進(jìn)海產(chǎn)品副產(chǎn)物資源化
- 高一化學(xué)成長(zhǎng)訓(xùn)練:第三單元人工合成有機(jī)化合物
- 2024屆四川省高考化學(xué)四模試卷含解析
- 2024高中地理第二章自然環(huán)境中的物質(zhì)運(yùn)動(dòng)和能量交換1地殼的物質(zhì)組成和物質(zhì)循環(huán)課時(shí)作業(yè)含解析湘教版必修1
- 2024高考地理一輪復(fù)習(xí)第五單元地表形態(tài)的塑造練習(xí)含解析
- 2025高考數(shù)學(xué)考點(diǎn)剖析精創(chuàng)專題卷三-三角函數(shù)與解三角形【含答案】
- 起重機(jī)委托使用協(xié)議書范本
- 2024年溫州科技職業(yè)學(xué)院高職單招語文歷年參考題庫(kù)含答案解析
- 招商銀行工作總結(jié)匯報(bào)模板課件
- LED燈箱安裝制作及施工方案
- 混凝土澆筑申請(qǐng)表
- 山丹丹開花紅艷艷教案
- 中風(fēng)后認(rèn)知障礙中醫(yī)臨床路徑
- 罌粟湯_朱氏集驗(yàn)方卷十_方劑加減變化匯總
- 《我相信---楊培安》歌詞-勵(lì)志歌曲
- 做一個(gè)幸福班主任
- 初中班主任案例分析4篇
- 公司7s管理組織實(shí)施方案
- Q∕GDW 12147-2021 電網(wǎng)智能業(yè)務(wù)終端接入規(guī)范
評(píng)論
0/150
提交評(píng)論