




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)編號(hào)4名稱頁面置換算法模擬實(shí)驗(yàn)?zāi)康耐ㄟ^請(qǐng)求頁式存儲(chǔ)治理中頁面置換算法模擬設(shè)計(jì),以便:1、了解虛擬存儲(chǔ)技術(shù)的特點(diǎn)2、掌握請(qǐng)求頁式存儲(chǔ)治理中頁面置換算法實(shí)驗(yàn)內(nèi)容與步驟設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),并使用FIFO和LRU算法計(jì)算訪問命中率.<程序設(shè)計(jì)>先用srand()函數(shù)和rand()函數(shù)定義和產(chǎn)生指令序列,然后將指令序列變換成相應(yīng)的頁地址流,并針對(duì)不同的算法計(jì)算相應(yīng)的命中率.程序1>#include<windows.h>/Windows版,隨機(jī)函數(shù)需要,GetCurrentProcessId()需要/#include<stdlib.h>/Linux
2、版,隨機(jī)函數(shù)srand和rand需要#include<stdio.h>/printf()需要# defineTRUE1# defineFALSE0# defineINVALID-1# defineNULL0# definetotal_instruction320共320條指令# definetotal_vp32虛存頁共32頁# defineclear_period50訪問次數(shù)清零周期typedefstruct定義頁表結(jié)構(gòu)類型(頁面映射表PMT)intpn,pfn,counter,time;/頁號(hào)、頁框號(hào)(塊號(hào))、一個(gè)周期內(nèi)訪問該頁面的次數(shù)、訪問時(shí)間PMT;PMTpmt32;type
3、defstructpfc_struct頁面限制結(jié)構(gòu)intpn,pfn;structpfc_struct*next;pfc_type;pfc_typepfc32;pfc_type*freepf_head,*busypf_head,*busypf_tail;/空閑頁頭指針,忙頁頭指針,忙頁尾指針intNoPageCount;缺頁次數(shù)intatotal_instruction;/指令流數(shù)組intpagetotal_instruction,offsettotal_instruction;每條指令的頁和頁內(nèi)偏移voidinitialize(int);voidFIFO(int);先進(jìn)先出voidLRU(i
4、nt);最近最久未使用voidNRU(int);最近最不經(jīng)常使用/*main()*voidmain()inti,s;/srand(10*getpid();用進(jìn)程號(hào)作為初始化隨機(jī)數(shù)隊(duì)列的種子/Linux版srand(10*GetCurrentProcessId();/用進(jìn)程號(hào)作為初始化隨機(jī)數(shù)的種子/Windows版s=rand()%320;/在0,319的指令地址之間隨機(jī)選取一起點(diǎn)mfor(i=0;i<totalinstruction;i+=4)產(chǎn)生指令隊(duì)列if(s<0|s>319)printf("wheni=%d,error,s=%dn",i,s);exi
5、t(0);ai=s;/任意選一指令訪問點(diǎn)m.(將隨機(jī)數(shù)作為指令地址m)ai+1=ai+1;/順序執(zhí)行下一條指令ai+2=rand()%(s+2);在0,m+1的前地址之間隨機(jī)選取一地址,記為m'ai+3=ai+2+1;/順序執(zhí)行一條指令s=ai+2+(int)rand()%(320-ai+2);/在m',319的指令地址之間隨機(jī)選取一起點(diǎn)if(ai+2>318)|(s>319)printf("a%d+2,anumberwhichis:%dands=%dn",i,ai+2,s);for(i=0;i<total_instruction;i+)/
6、將指令序列變成頁地址流pagei=ai/10;offseti=ai%10;for(i=4;i<=32;i+)內(nèi)存塊分別為4塊、5塊、32塊時(shí)的命中率printf("%2dpageframes",i);FIFO(i);/計(jì)算用FIFO置換時(shí),有i個(gè)內(nèi)存塊時(shí)的命中率LRU(i);最近最久未使用NRU(i);最近最不經(jīng)常使用printf("n");/*initialize()形參:內(nèi)存塊數(shù)功能:初始化*/voidinitialize(inttotal_pf)初始化相關(guān)數(shù)據(jù)結(jié)構(gòu),形參total_pf是用戶進(jìn)程的內(nèi)存頁面數(shù)inti;NoPageCount=0
7、;/缺頁次數(shù),初始化為0for(i=0;i<total_vp;i+)pmti.pn=i;/填邏輯頁號(hào)pmti.pfn=INVALID;/物理頁面號(hào)為-1pmti.counter=0;/置頁面限制結(jié)構(gòu)中的訪問次數(shù)為0pmti.time=-1;置頁面限制結(jié)構(gòu)中的時(shí)間為-1二for(i=0;i<total_pf-1;i+)建立pfci-1和pfci之間的連接pfci.next=&pfci+1;pfci.pfn=i;pfctotal_pf-1.next=NULL;pfctotal_pf-1.pfn=total_pf-1;freepf_head=&pfc0;/頁面隊(duì)列的頭指針
8、為pfc0/*FIFO算法形參:內(nèi)存塊數(shù)輸出:命中率*/voidFIFO(inttotalpf)形參totalpf是用戶進(jìn)程的內(nèi)存頁面數(shù)inti;pfc_type*p;initialize(total_pf);初始化相關(guān)數(shù)據(jù)結(jié)構(gòu)busypf_head=busypf_tail=NULL;for(i=0;i<total_instruction;i+)/訪問每條指令if(pmtpagei.pfn=INVALID)缺頁NoPageCount+=1;/失效做頁)次數(shù)增1if(freepf_head=NULL)無空閑頁面p=busypf_head->next;pmtbusypf_head-&g
9、t;pn.pfn=INVALID;freepf_head=busypf_head;釋放忙頁面隊(duì)歹U的第一個(gè)頁面freepf_head->next=NULL;busypf_head=p;p=freepf_head->next;/按FIFO方式調(diào)新頁面入內(nèi)存freepf_head->next=NULL;freepf_head->pn=pagei;pmtpagei.pfn=freepf_head->pfn;if(busypf_tail=NULL)busypf_head=busypf_tail=freepf_head;elsebusypf_tail->next=fr
10、eepf_head;/free頁面減少一個(gè)busypf_tail=freepf_head;freepf_head=p;printf("FIFO:%6.4f",1-(float)NoPageCount/320);/*LRU算法(最近最久未使用)形參:內(nèi)存塊數(shù)輸出:命中率*/voidLRU(inttotalpf)/形參totalpf是給用戶進(jìn)程的內(nèi)存塊數(shù)intmin,minj,i,j,present_time;initialize(total_pf);present_time=0;for(i=0;i<total_instruction;i+)if(pmtpagei.pfn
11、=INVALID)頁面失效NoPageCount+;if(freepf_head=NULL)無空閑頁面min=32767;for(j=0;j<totalvp;j+)/找出time的最小值if(min>pmtj.time&&pmtj.pfn!=INVALID)min=pmtj.time;minj=j;freepf_head=&pfcpmtminj.pfn;騰出個(gè)單元pmtminj.pfn=INVALID;pmtminj.time=-1;freepf_head->next=NULL;pmtpagei.pfn=freepf_head->pfn;有空閑頁
12、面,改為有效pmtpagei.time=present_time;freepf_head=freepf_head->next;減少一個(gè)free頁面elsepmtpagei.time=present_time;更新該頁面的訪問時(shí)間(并非真的時(shí)間,而是循環(huán)次數(shù),每執(zhí)行一條指令,時(shí)間加1presenttime+;當(dāng)前時(shí)間力口1printf("LRU:%6.4f",1-(float)NoPageCount/320);/*NRU算法最近最不經(jīng)常使用形參:內(nèi)存塊數(shù)輸出:命中率*/voidNRU(inttotal_pf)inti,j,dp,cont_flag,old_dp;init
13、ialize(total_pf);dp=0;for(i=0;i<total_instruction;i+)if(pmtpagei.pfn=INVALID)缺頁NoPageCount+;if(freepfhead=NULL)無空閑頁面cont_flag=TRUE;old_dp=dp;while(cont_flag)if(pmtdp.counter=0&&pmtdp.pfn!=INVALID)cont_flag=FALSE;if(dp=old_dp)for(j=0;j<total_vp;j+)pmtj.counter=0;lfreepf_head=&pfcpmt
14、dp.pfn;pmtdp.pfn=INVALID;freepf_head->next=NULL;pmtpagei.pfn=freepfhead->pfn;freepf_head=freepf_head->next;Ielsepmtpagei.counter=1;if(i%clear_period=0)for(j=0;j<total_vp;j+)pmtj.counter=0;printf("NUR:%6.4f",1-(float)NoPageCount/320);|實(shí)驗(yàn)結(jié)果寫生結(jié)果,截圖也可情輸A幣而長(zhǎng)唐4B輛出隨機(jī)小Y3654?159H211一八,隔
15、人分配的物理按鬲之白>工:MFIF.曲面置掙頁面宜梆負(fù)面置界清選持頁面置掛法,F】FO違法頁面苜由清況如下:總結(jié)收獲,未實(shí)現(xiàn)的步驟這次操作系統(tǒng)課程設(shè)計(jì),讓我們對(duì)操作系統(tǒng)有了更深的熟悉,首先操作系統(tǒng)是一治理電腦硬件與軟件資源的程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)內(nèi)核與基石.操作系統(tǒng)是一個(gè)龐大的治理限制程序,大致包括5個(gè)方面的治理功能:進(jìn)程與處理機(jī)管理、作業(yè)治理、存儲(chǔ)治理、設(shè)備治理、文件治理.我們這次課程設(shè)計(jì)的題目是頁面置換算法,是屬于存儲(chǔ)器治理.在進(jìn)程運(yùn)行過程中,假設(shè)其訪問的頁面不在內(nèi)存而需把它們調(diào)入內(nèi)存,但內(nèi)存以無空閑空間時(shí),為了保證該進(jìn)程能正常的運(yùn)行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù)送磁盤的兌換
16、區(qū)中,但應(yīng)將哪個(gè)頁面調(diào)出,需根據(jù)一定的算法來確定.通常,把選擇換成頁面的算法稱為頁面置換算法.通過本次課程設(shè)計(jì),我們對(duì)頁面置換算法的了解更加的深刻.主要有以下置換算法:OPT最正確置換算法、FIFO先進(jìn)先出置換算法、LRU最近最久未使用算法.每種算法都有各自的優(yōu)缺點(diǎn),OPT算法是實(shí)際中不能實(shí)現(xiàn)的,但是可以利用該算法去評(píng)價(jià)其它算法;FIFO算法與進(jìn)程實(shí)際運(yùn)行的規(guī)律不相適用,由于在進(jìn)程中,有些頁面經(jīng)常被訪問;LRU算法是根據(jù)頁面調(diào)入內(nèi)存后的使用情況進(jìn)行決策的.在這次課程設(shè)計(jì)中,遇到了一些困難,例如怎么實(shí)現(xiàn)各種算法,如何進(jìn)行函數(shù)調(diào)用及對(duì)數(shù)據(jù)的限制操作等,在遇到這些困難的時(shí)候,我們會(huì)去查閱資料,仔細(xì)看書,嘗試用不同的方法解決,在各種
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甘肅張掖市民樂縣前進(jìn)牧業(yè)(德瑞牧場(chǎng))招聘考試筆試試題(含答案)
- 2025年安徽蚌埠市東方投資集團(tuán)有限公司下屬子公司招聘考試筆試試題(含答案)
- 【來賓】2025年廣西來賓市商務(wù)局招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 制作小弓箭教學(xué)課件
- 整車性能檢測(cè)技術(shù)課件
- 整式除法說課課件
- 農(nóng)作物秸稈綜合利用情況調(diào)研報(bào)告
- 敬畏生命小學(xué)班會(huì)課件
- 敬業(yè)與樂業(yè)小學(xué)生課件
- 意外險(xiǎn)理賠調(diào)查實(shí)務(wù)及典型案例分析
- GB/T 16451-2008天然脂肪醇
- GB 5013.2-1997額定電壓450/750V及以下橡皮絕緣電纜第2部分:試驗(yàn)方法
- 山東省中小學(xué)校檔案管理暫行辦法
- 普通高中物理課程標(biāo)準(zhǔn)
- 國(guó)家開放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 完工付款最終付款申請(qǐng)表
- 人工動(dòng)靜脈內(nèi)瘺
- 新版(七步法案例)PFMEA
- 慢阻肺隨訪記錄表正式版
- 廣西大學(xué)數(shù)學(xué)建模競(jìng)賽選拔賽題目
- 受戒申請(qǐng)表(共3頁)
評(píng)論
0/150
提交評(píng)論