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

下載本文檔

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

文檔簡介

1、精品實(shí)驗(yàn)五請求頁式存儲管理的模擬實(shí)驗(yàn)內(nèi)容:熟悉虛擬存儲管理的各種頁面置換算法,并編寫模擬程序?qū)崿F(xiàn)請求頁式存儲管理的頁面置換算法-最近最久未使用算法(LRU),要求在每次產(chǎn)生置換時(shí)顯示頁面分配狀態(tài)和缺頁率。實(shí)驗(yàn)要求:1、 運(yùn)行給出的實(shí)驗(yàn)程序,查看執(zhí)行情況,進(jìn)而分析算法的執(zhí)行過程,在理解FIFO頁面置換算法和最近最久未 使用算法(LRU)置換算法后,給出最佳置換算法的模擬程序?qū)崿F(xiàn),并集成到參考程序中。2、執(zhí)行2個(gè)頁面置換模擬程序,分析缺頁率的情況。最好頁框數(shù)和訪問序列長度可調(diào)節(jié),在使用同一組訪問序列數(shù)據(jù)的情況下,改變頁框數(shù)并執(zhí)行2個(gè)頁面置換模擬程序,查看缺頁率的變化。3、 在每次產(chǎn)生置換時(shí)要求顯示

2、分配狀態(tài)和缺頁率。程序的地址訪問序列通過隨機(jī)數(shù)產(chǎn)生,要求具有足夠的長度。 最好頁框數(shù)和訪問序列長度可調(diào)節(jié)。實(shí)驗(yàn)的執(zhí)行結(jié)果如下圖所示(左下圖為FIFO執(zhí)行結(jié)果,右下圖為 LRU執(zhí)行結(jié)果):感謝下載載1 2 f yb Jfi yk SE 請請 w算出 要要要 若若若fl嘰 若奠退出請按LRUhter your choice 0 4 0 6H缺缺 V/5 9 7 *8 2 6MIK缺缺缺H缺缺ifc 5 5 511140424547缺缺缺缺.缺缺缺 4 4 4 4 411111333333399 91111111ccczxccc/xzxcccccccccccccccc存存存存存存#存存存存存存存存存

3、#存存存存#r-ir J r-rTJJri- UHJ-fcJ-fcu -o-,- _J - 1r J 廿廿廿廿廿廿廿廿廿卄廿廿7廿廿計(jì)廿廿廿廿L$00 KIA 缺缺缺 m 缺缺缺3 0 k K 4 5im缺缺缺- 缺JX3B.0 “缺瓦缺貢聿36.45 9 7 8 2 63 4 4n缺缺缺m缺缺缺 A0 9 5 404245 缺鐵缺 m 缺缺缺 7 7 7缺貝45.84444444771 4 4 1 1 3 31存存存存存存存存存存存#存存存存存#存存存存# fcj fcurfcu-UHJ*LHI_-tj -otjfcj-ITET JJ7-I-程序源代碼:#i nclude #in elude

4、 wi ndows.h#in elude #in elude #in elude #i nclude #in elude #in elude void in itialize();/初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)void createps();/隨機(jī)生成訪問序列void displayi nfo();/顯示當(dāng)前狀態(tài)及缺頁情況void fifo();/先進(jìn)先出算法intfin dpage();/查找頁面是否在內(nèi)存void lru();/最近最久未使用算法intin validco unt = 0;/缺頁次數(shù)intvpoi nt;/頁面訪問指針intpageframe10;/分配的頁框intpagehisto

5、ry10;/記錄頁框中數(shù)據(jù)的訪問歷史intrpoi nt;/頁面替換指針intin pflag;/缺頁標(biāo)志,0為不缺頁,1為缺頁struct Page Info/頁面信息結(jié)構(gòu)int serial100; /模擬的最大訪問頁面數(shù),實(shí)際控制在20以上intflag;/標(biāo)志位,0表示尢頁面訪問數(shù)據(jù)intdiseffect;/缺頁次數(shù)inttotal_pf;/分配的頁框數(shù)inttotal_p n;/訪冋頁面序列長度 pf_info;/初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)void in itialize()int i,pf;in pflag=0;/缺頁標(biāo)志,0為不缺頁,1為缺頁pf_in fo.diseffect =0;

6、/缺頁次數(shù)pf_in fo.flag =0;/標(biāo)志位,0表示無頁面訪冋數(shù)據(jù)printf(n請輸入要分配的頁框數(shù):”);/自定義分配的頁框數(shù)scan f(%d,&pf);pf_in fo.total_pf =pf;for(i=0;i100;i+)/ 清空頁面序列pf_in fo.seriali=-1;/隨機(jī)生成訪問序列void createps(void )int s,i,p n;initialize();/初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)printf(n請輸入要隨機(jī)生成訪問序列的長度:”);/自定義隨機(jī)生成訪問序列的長度scan f(%d,&pn);srand(rand();/初始化隨機(jī)數(shù)隊(duì)列的”種子”s=

7、(float) ra nd() / 32767) * 50 + pn;/ 隨機(jī)產(chǎn)生頁面序列長度pf_in fo.total_p n = s;for(i=0;is;i+)/產(chǎn)生隨機(jī)訪問序列pf_info.seriali=(float) rand() / 32767) * 16 ;/ 隨機(jī)數(shù)的大小在 0-15 之間/顯示當(dāng)前狀態(tài)及缺頁情況void displayi nfo(void)int i,n;if(vpo in t=0)prin tf(n=頁面訪問序歹U =、n);for(i=0; ipf_ in fo.total_p n; i+)prin tf(%4d,pf_i nfo.seriali);

8、if (i+1) % 10 =0) printf(n);/ 每行顯示 10 個(gè)prin tf(n=n);printf(訪問 %3d :內(nèi)存 ,pf_info.serialvpoint);for(n=0;n=0)prin tf(%3d,pageframe n);elseprintf( );printf(” );if(inpflag=1)/缺頁標(biāo)志,0為不缺頁,1為缺頁printf(= 缺頁);printf(缺頁率 3.1f,(float)(pf_info.diseffect)*100.00/vpoint);prin tf(n);/查找頁面是否在內(nèi)存,1為在內(nèi)存,0為不在即缺頁int fin dp

9、age(i nt page)int n;for(n=0;npf_in fo.total_pf; n+)pagehistoryn +;/ 訪問歷史加 1for(n=0;npf_in fo.total_pf; n+)if (pageframe n=page )1為缺頁inpflag=0 ;/inpflag缺頁標(biāo)志,0為不缺頁,pagehistoryn=0;/ 置訪問歷史為 0return 1;inpflag=1;/頁面不存在,缺頁return 0;/ FIFO頁面置換算法 void fifo(void)int n,coun t,pstate;rpo in t=0;/頁面替換指針初始化為 0in v

10、alidco unt = 0;/缺頁數(shù)初始化為0createps();/隨機(jī)生成訪問序列coun t=0;/是否裝滿是所有的頁框for(n=0; npf_i nfo.total_pf; n+) /清除頁框信息pageframe n=-1;inpflag=0;/缺頁標(biāo)志,0為不缺頁,1為缺頁for(vpoint=0;vpointpf_info.total_pn;vpoint+)/ 執(zhí)行算法pstate=findpage(pf_info.serialvpoint);/ 查找頁面是否在內(nèi)存if(countpf_info.total_pf)/ 開始時(shí)不計(jì)算缺頁if(pstate=0)/頁不存在則裝入頁

11、面pageframerpo in t=pf_i nfo.serialvpo in t;rpo in t=(rpo in t+1) % pf_in fo.total_pf;coun t+;else/正常缺頁置換if(pstate=O)/頁不存在則置換頁面pageframerpo in t=pf_ in fo.serialvpo in t;rpo in t=(rpo in t+1) % pf_in fo.total_pf;pf_info.diseffect+;/ 缺頁次數(shù)加 1Sleep(10);displayinfo();/ 顯示當(dāng)前狀態(tài)/置換算法循環(huán)結(jié)束getch();return;/ LRU

12、頁面置換算法void Iru(void) int n,coun t,pstate,max;rpoin t=0;II頁面替換指針in validco unt = 0;II缺頁次數(shù)初始化為 0createps();II隨機(jī)生成訪問序列coun t=0;II是否裝滿所有的頁框for(n=0;npf_in fo.total_pf; n+)pageframen=-1;II清除頁框信息pagehistoryn=0;II 清除頁框歷史inpflag=0; II缺頁標(biāo)志,0為不缺頁,1為缺頁for(vpo in t=0;vpo in tpf_ in fo.total_p n; vpo in t+)II執(zhí)行算法

13、pstate=findpage(pf_info.serialvpoint);II 查找頁面是否在內(nèi)存if(countpf_info.total_pf)II 開始時(shí)不計(jì)算缺頁if(pstate=0) II頁不存在則裝入頁面pageframerpoi nt=pf_i nfo.serialvpoi nt; II把要調(diào)入的頁面放入一個(gè)空的頁框里rpo in t=(rpo in t+1) % pf_in fo.total_pf;coun t+;else /正常缺頁置換if(pstate=O)頁不存在則置換頁面max=O;for(n=1; npagehistorymax)max =n;rpoi nt=ma

14、 x;pageframerpo in t=pf_ in fo.serialvpo in t; pagehistoryrpo in t=0;pf_info.diseffect+; / 缺頁次數(shù)加 1 Sleep(10);displayinfo();/ 顯示當(dāng)前狀態(tài) /置換算法循環(huán)結(jié)束_getch();return;/最佳置換算法自己完成/ 主函數(shù)int mai n()char ch;system(cls);while ( true )printf(* n);printf(若要執(zhí)行FIFO頁面置算法請按printf(”若要執(zhí)行LRU頁面置算法請按printf(”若要退出請按3n);1 n);2n);printf(* n);prin tf( E nter your choice (1 or 2 or 3):); do/如果輸入信息不正確,繼續(xù)輸入ch = (char)getch();while(ch != 1 & ch != 2& ch != 3);printf(nn 你按的是:%

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論