![操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/4e3bb4da-61c2-4b57-9939-41d73dde028b/4e3bb4da-61c2-4b57-9939-41d73dde028b1.gif)
![操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/4e3bb4da-61c2-4b57-9939-41d73dde028b/4e3bb4da-61c2-4b57-9939-41d73dde028b2.gif)
![操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/4e3bb4da-61c2-4b57-9939-41d73dde028b/4e3bb4da-61c2-4b57-9939-41d73dde028b3.gif)
![操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/4e3bb4da-61c2-4b57-9939-41d73dde028b/4e3bb4da-61c2-4b57-9939-41d73dde028b4.gif)
![操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/4e3bb4da-61c2-4b57-9939-41d73dde028b/4e3bb4da-61c2-4b57-9939-41d73dde028b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 河南師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五 存儲管理一、實(shí)驗(yàn)?zāi)康?1 、加深對操作系統(tǒng)存儲管理的理解 2 、能過模似頁面調(diào)試算法,加深理解操作系統(tǒng)對內(nèi)存的高度管理 2、 總的設(shè)計(jì)思想、環(huán)境語言、工具等總的設(shè)計(jì)思想:1、編寫函數(shù)計(jì)算并輸出下述各種算法的命中率 OPT頁面置換算法OPT所選擇被淘汰的頁面是已調(diào)入內(nèi)存,且在以后永不使用的,或是在最長時(shí)間內(nèi)不再被訪問的頁面。因此如何找出這樣的頁面是該算法的關(guān)鍵??蔀槊總€(gè)頁面設(shè)置一個(gè)步長變量,其初值為一足夠大的數(shù),對于不在內(nèi)存的頁面,將其值重置為零,對于位于內(nèi)存的頁面,其值重置為當(dāng)前訪問頁面與之后首次出現(xiàn)該頁面時(shí)兩者之間的距離,因此該值越大表示該頁
2、是在最長時(shí)間內(nèi)不再被訪問的頁面,可以選擇其作為換出頁面。 FIFO頁面置換算法FIFO總是選擇最先進(jìn)入內(nèi)存的頁面予以淘汰,因此可設(shè)置一個(gè)先進(jìn)先出的忙頁幀隊(duì)列,新調(diào)入內(nèi)存的頁面掛在該隊(duì)列的尾部,而當(dāng)無空閑頁幀時(shí),可從該隊(duì)列首部取下一個(gè)頁幀作為空閑頁幀,進(jìn)而調(diào)入所需頁面。 LRU頁面置換算法LRU是根據(jù)頁面調(diào)入內(nèi)存后的使用情況進(jìn)行決策的,它利用“最近的過去”作為“最近的將來”的近似,選擇最近最久未使用的頁面予以淘汰。該算法主要借助于頁面結(jié)構(gòu)中的訪問時(shí)間time來實(shí)現(xiàn),time記錄了一個(gè)頁面上次的訪問時(shí)間,因此,當(dāng)須淘汰一個(gè)頁面時(shí),選擇處于內(nèi)存的頁面中其time值最小的頁面,即最近最久未使用的頁面予
3、以淘汰。 LFU頁面置換算法LFU要求為每個(gè)頁面配置一個(gè)計(jì)數(shù)器(即頁面結(jié)構(gòu)中的counter),一旦某頁被訪問,則將其計(jì)數(shù)器的值加1,在需要選擇一頁置換時(shí),則將選擇其計(jì)數(shù)器值最小的頁面,即內(nèi)存中訪問次數(shù)最少的頁面進(jìn)行淘汰。 NUR頁面置換算法NUR要求為每個(gè)頁面設(shè)置一位訪問位(該訪問位仍可使用頁面結(jié)構(gòu)中的counter表示),當(dāng)某頁被訪問時(shí),其訪問位counter置為1。需要進(jìn)行頁面置換時(shí),置換算法從替換指針開始(初始時(shí)指向第一個(gè)頁面)順序檢查處于內(nèi)存中的各個(gè)頁面,如果其訪問位為0,就選擇該頁換出,否則替換指針下移繼續(xù)向下查找。如果內(nèi)存中的所有頁面掃描完畢未找到訪問位為0的頁面,則將替換指針重
4、新指向第一個(gè)頁面,同時(shí)將內(nèi)存中所有頁面的訪問位置0,當(dāng)開始下一輪掃描時(shí),便一定能找到counter為0的頁面。2、 在主函數(shù)中生成要求的指令序列,并將其轉(zhuǎn)換成頁地址流;在不同的內(nèi)存容量下調(diào)用上述函數(shù)使其計(jì)算并輸出相應(yīng)的命中率。環(huán)境語言:Linux下的GNU 編譯環(huán)境三、數(shù)據(jù)結(jié)構(gòu)與模塊說明程序中用到的數(shù)據(jù)結(jié)構(gòu)、類型定義及主要的函數(shù)原型如下:1、 數(shù)據(jù)結(jié)構(gòu)(1) 頁面結(jié)構(gòu) typedef struct int pn, pfn, counter, time; pl_type ;pl_type pltotal_vp;其中pn為頁面號(頁號),pfn為頁幀號(物理塊號),counter為一個(gè)周期內(nèi)訪問該
5、頁面的次數(shù),time為訪問時(shí)間;pltotal_vp為頁面結(jié)構(gòu)數(shù)組,由于共有320條指令,每頁可裝入10條指令,因此虛頁長total_vp的值為32。(2)頁幀控制結(jié)構(gòu)struct pfc_struct int pn, pfn;struct pfc_struct *next;typedef struct pfc_struct pfc_type;pfc_type pfctotal_vp, *freepf_head, *busypf_head, *busypf_tail;其中pfctotal_vp定義用戶進(jìn)程的頁幀控制結(jié)構(gòu)數(shù)組,在該實(shí)驗(yàn)中,用戶內(nèi)存工作區(qū)是動(dòng)態(tài)變化的,最多可達(dá)到用戶進(jìn)程的虛頁數(shù)目,
6、即32個(gè)物理塊。*freepf_head為空閑頁幀頭的指針*busypf_head為忙頁幀頭的指針*busypf_tail忙頁幀尾的指針2、 變量定義(1) int atotal_instruction: 指令流數(shù)組(2) int diseffect: 頁面失效次數(shù)(3) int pagetotal_instruction: 每條指令所屬頁面號(4) int offsettotal_instruction: 每頁裝入10條指令后取模運(yùn)算得出的頁內(nèi)偏移地址(5) int total_pf: 用戶進(jìn)程的內(nèi)存頁幀數(shù)3、 主要函數(shù)(1) void initialize(int): 初始化函數(shù)該函數(shù)主要
7、對頁面結(jié)構(gòu)數(shù)組pl和頁幀結(jié)構(gòu)數(shù)組pfc進(jìn)行初始化,如置頁面結(jié)構(gòu)中的頁面號pn,初始化頁幀號pfn為空,訪問次數(shù)counter為0,訪問時(shí)間time為-1;同樣對頁幀數(shù)組進(jìn)行初始化,形成一個(gè)空閑頁幀隊(duì)列。(2) void OPT(int): 計(jì)算使用最佳頁面算法時(shí)的命中率(3) void FIFO(int): 計(jì)算使用先進(jìn)先出頁面置換算法時(shí)的命中率(4) void LRU(int): 計(jì)算使用最近最久未使用頁面置換算法時(shí)的命中率(5) void LFU(int): 計(jì)算使用最少使用置換算法時(shí)的命中率(6) void NUR(int): 計(jì)算使用最近未使用置換算法時(shí)的命中率四、主要算法的設(shè)計(jì)與實(shí)現(xiàn)
8、void FIFO(int total_pf) /*先進(jìn)先出頁面置換算法*/ int i,j; pfc_type *p; initialize(total_pf); busypf_head=busypf_tail=NULL;for(i=0;i<total_instruction;i+) if(plpagei.pfn=INVALID) /*頁面失效*/ diseffect=diseffect+1;if(freepf_head=NULL) /*無空閑頁幀*/ p=busypf_head->next;plbusypf_head->pn.pfn=INVALID; /將忙頁幀隊(duì)首頁面作
9、為換出頁面freepf_head=busypf_head; freepf_head->next=NULL;busypf_head=p; /忙頁幀頭指針后移p=freepf_head->next; /有空閑頁幀freepf_head->next=NULL;freepf_head->pn=pagei; /* 將所需頁面調(diào)入空閑頁幀 */plpagei.pfn=freepf_head->pfn;if(busypf_tail=NULL) /* 若忙頁幀隊(duì)列為空,則將其頭尾指針都指向剛調(diào)入頁面所在的頁幀 */busypf_head=busypf_tail=freepf_he
10、ad;else /否則,將剛調(diào)入頁面所在的頁幀掛在忙頁幀隊(duì)列尾部busypf_tail->next=freepf_head;busypf_tail=freepf_head;freepf_head=p; /空閑頁幀頭指針后移 printf("FIFO:%6.4f ",1-(float)diseffect/320);void LRU(int total_pf) /*最近最久未使用頁面置換算法*/ int i,j; int min,minj,present_time; initialize(total_pf); present_time=0;for(i=0;i<tot
11、al_instruction;i+) if(plpagei.pfn=INVALID) /*頁面失效*/diseffect+;if(freepf_head=NULL) /*無空閑頁幀*/min=32767;for(j=0;j<total_vp;j+) /*找出位于內(nèi)存且time值最小的頁面作為置換頁面*/if(min>plj.time && plj.pfn!=INVALID)min=plj.time;minj=j;freepf_head=&pfcplminj.pfn; /騰出一個(gè)單元plminj.pfn=INVALID;plminj.time=-1;freep
12、f_head->next=NULL;plpagei.pfn=freepf_head->pfn; /有空閑頁面,改為有效plpagei.time=present_time; /修改頁面的訪問時(shí)間freepf_head=freepf_head->next; /減少一個(gè)free 頁面elseplpagei.time=present_time; /命中則修改該單元的訪問時(shí)間present_time+; printf("LRU:%6.4f ",1-(float)diseffect/320);void NUR(int total_pf)/* 最近未使用頁面置換算法 *
13、/int i,j,dp,cont_flag,old_dp; initialize(total_pf); dp=0;for(i=0;i<total_instruction;i+) if(plpagei.pfn=INVALID) /*頁面失效*/ diseffect+; if(freepf_head=NULL) /*無空閑頁幀*/ cont_flag=TRUE;old_dp=dp;while(cont_flag)if(pldp.counter=0&&pldp.pfn!=INVALID)cont_flag=FALSE; /找到位于內(nèi)存且未被訪問的頁面 elsedp+;if(dp
14、=total_vp) dp=0; /將替換指針重新指向第一個(gè)頁面if(dp=old_dp)/* 若內(nèi)存中所有頁面掃描完畢未找到訪問位為0的頁面,將內(nèi)存中所有頁面的訪問位置0 */for(j=0;j<total_vp;j+)plj.counter=0;freepf_head=&pfcpldp.pfn; /騰出一個(gè)單元pldp.pfn=INVALID;freepf_head->next=NULL; plpagei.pfn=freepf_head->pfn; /有空閑頁面,改為有效 freepf_head=freepf_head->next; /減少一個(gè)free 頁面
15、 else plpagei.counter=1; /命中則將訪問位置1 if(i%clear_period=0) /清零周期到,將所有訪問位清零 for(j=0;j<total_vp;j+) plj.counter=0; printf("NUR:%6.4f ",1-(float)diseffect/320);void OPT(int total_pf) /* 最佳頁面置換算法 */ int i,j,max,maxpage,d,disttotal_vp; initialize(total_pf); for(i=0;i<total_instruction;i+) i
16、f(plpagei.pfn=INVALID) /*頁面失效*/ diseffect+; if(freepf_head=NULL) /*無空閑頁面*/ for(j=0;j<total_vp;j+)if(plj.pfn!=INVALID)/所有位于內(nèi)存頁面的距離變量賦一足夠大的數(shù)distj=32767; else /不在內(nèi)存的頁面該變量則置為0distj=0;d=1; /* 對于位于內(nèi)存且在當(dāng)前訪問頁面之后將再次被訪問的頁面,dist重置為當(dāng)前頁面與之后首次出現(xiàn)該頁面時(shí)兩者之間的距離 */for(j=i+1;j<total_instruction;j+) if(plpagej.pfn!
17、=INVALID && distpagej=32767) distpagej=d; d+;max=-1;/查找dist變量值最大的頁面作為換出頁面for(j=0;j<total_vp;j+) if(max<distj) max=distj; maxpage=j; freepf_head=&pfcplmaxpage.pfn; /騰出一個(gè)單元freepf_head->next=NULL;plmaxpage.pfn=INVALID; plpagei.pfn=freepf_head->pfn; /有空閑頁面,改為有效 freepf_head=freepf
18、_head->next; /減少一個(gè)free 頁面 printf("OPT:%6.4f ",1-(float)diseffect/320);void LFU(int total_pf) /* 最少使用頁面置換算法 */ int i,j,min,minpage; initialize(total_pf); for(i=0;i<total_instruction;i+) if(plpagei.pfn=INVALID) /頁面失效 diseffect+; if(freepf_head=NULL) /無空閑頁幀 min=32767;for(j=0;j<total_vp;j+) /查找位于內(nèi)存且訪問次數(shù)最少的頁面作為換出頁面 if(min>plj.counter&&plj.pfn!=INVALID) min=plj.counter; minpage=j; plj.counter=0; fre
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年五年級上學(xué)期英語教師工作總結(jié)范例(二篇)
- 2025年產(chǎn)品銷售運(yùn)輸三方協(xié)議(2篇)
- 2025年亮化工程施工合同標(biāo)準(zhǔn)版本(4篇)
- 2025年臨時(shí)人員勞動(dòng)合同常用版(2篇)
- 2025年個(gè)人購買墓地協(xié)議(2篇)
- 旗艦店鋪內(nèi)墻裝修工程協(xié)議
- 2025年度安全生產(chǎn)費(fèi)用使用監(jiān)督合同
- 2025年度城市綜合體安全保衛(wèi)服務(wù)合同范本
- 化妝品運(yùn)輸保險(xiǎn)協(xié)議樣本
- 繩鋸切割樓板施工方案
- 山西省太原市2024-2025學(xué)年九年級上學(xué)期期末歷史試題(含答案)
- 2024年全國體育專業(yè)單獨(dú)招生考試數(shù)學(xué)試卷試題真題(含答案)
- 2025屆高三八省聯(lián)考語文試卷分析 課件
- 2025年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度檢修計(jì)劃
- 2024-2025學(xué)年冀教版數(shù)學(xué)五年級上冊期末測試卷(含答案)
- 商業(yè)綜合體市場調(diào)研報(bào)告
- 資源枯竭型城市的轉(zhuǎn)型發(fā)展 課件 2024-2025學(xué)年高二上學(xué)期地理人教版選擇性必修2
- 少兒素描課件
- 2025屆河北省衡水市衡水中學(xué)高考仿真模擬英語試卷含解析
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 生物 含解析
評論
0/150
提交評論