實(shí)驗(yàn)五 虛擬存儲(chǔ)管理_第1頁(yè)
實(shí)驗(yàn)五 虛擬存儲(chǔ)管理_第2頁(yè)
實(shí)驗(yàn)五 虛擬存儲(chǔ)管理_第3頁(yè)
實(shí)驗(yàn)五 虛擬存儲(chǔ)管理_第4頁(yè)
實(shí)驗(yàn)五 虛擬存儲(chǔ)管理_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)五 虛擬存儲(chǔ)管理一 實(shí)驗(yàn)?zāi)康拇鎯?chǔ)管理的主要功能之一是合理地分配空間。請(qǐng)求頁(yè)式管理是一種常用的虛擬存儲(chǔ)管理技術(shù)。本實(shí)驗(yàn)的目的是通過(guò)請(qǐng)求頁(yè)式管理中頁(yè)面置換算法模擬設(shè)計(jì),了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法。二 實(shí)驗(yàn)內(nèi)容通過(guò)計(jì)算不同算法的命中率比較算法的優(yōu)劣。同時(shí)也考慮了用戶內(nèi)存容量對(duì)命中率的影響。頁(yè)面失效次數(shù)為每次訪問(wèn)相應(yīng)指令時(shí),該指令所對(duì)應(yīng)的頁(yè)不在內(nèi)存中的次數(shù)。計(jì)算并輸出下屬算法在不同內(nèi)存容量下的命中率。l 先進(jìn)先出的算法(FIFO);l 最近最少使用算法(LRU);開(kāi) 始生成地址流輸入算法號(hào)S1S4形成地址頁(yè)號(hào)用戶內(nèi)存空間msize=2Msize32 OPT()FIF

2、O()LRU()LFU()Msize加1S=? 是否用其他算法繼續(xù)結(jié) 束NY1234YN提示出錯(cuò),重新輸入三 系統(tǒng)框圖四頁(yè)面置換算法程序代碼#include<stdio.h> #include<string.h> #include<iostream.h>const int MAXSIZE=1000;/定義頁(yè)訪問(wèn)流的最大長(zhǎng)度const int MAXQUEUE=3;/定義可用頁(yè)面數(shù)typedef struct node int loaded; int hit; page;page pagesMAXQUEUE; /定義頁(yè)面表 int queueMAXSIZE;

3、int quantity;/初始化結(jié)構(gòu)函數(shù) void initial() int i; for(i=0;i<MAXQUEUE;i+) pagesi.loaded=-1; pagesi.hit=0; for(i=0;i<MAXSIZE;i+) queuei=-1; quantity=0;/初始化頁(yè)面函數(shù) void init() int i; for(i=0;i<MAXQUEUE;i+) pagesi.loaded=-1; pagesi.hit=0; /讀入頁(yè)訪問(wèn)流void readData() FILE *fp; char fname20;int i;cout<<&

4、quot;請(qǐng)輸入頁(yè)面流文件名:" cin>>fname;if(fp=fopen(fname,"r")=NULL) cout<<"錯(cuò)誤,文件打不開(kāi),請(qǐng)檢查文件名" else while(!feof(fp) fscanf(fp,"%d ",&queuequantity);quantity+; cout<<"讀入的頁(yè)訪問(wèn)流:" for(i=0;i<quantity;i+)cout<<queuei<<" " /FIFO調(diào)

5、度算法void FIFO() int i,j,p,flag;int absence=0;p=0;cout<<endl<<"-"<<endl; cout<<"先進(jìn)先出調(diào)度算法(FIFO)頁(yè)面調(diào)出流:" for(i=0;i<quantity;i+) flag=0; for(j=0;j<MAXQUEUE;j+) if(pagesj.loaded=queuei) flag=1; if(flag=0) if(absence>=MAXQUEUE) cout<<pagesp.loaded&l

6、t;<" " pagesp.loaded=queuei; p=(p+1)%MAXQUEUE; absence+; cout<<endl<<"總?cè)表?yè)數(shù):"<<absence<<endl; /最近最少使用調(diào)度算法(LRU)void LRU() int absence=0; int i,j; int flag;cout<<endl<<"-"<<endl; cout<<"最近最少使用調(diào)度算法(LRU)頁(yè)面調(diào)出流:"for(

7、i=0;i<quantity;i+) flag=-1; for(j=0;j<MAXQUEUE;j+) if(queuei=pagesj.loaded) flag=j; if(flag=-1) /缺頁(yè)處理if(absence>=MAXQUEUE)cout<<pages0.loaded<<" " / pages0是隊(duì)列頭for(j=0;j<MAXQUEUE-1;j+) pagesj=pagesj+1; pagesMAXQUEUE-1.loaded=queuei;absence+; else /頁(yè)面已載入 pagesquantity

8、=pagesflag;for(j=flag;j<MAXQUEUE-1;j+) pagesj=pagesj+1; pagesMAXQUEUE-1=pagesquantity;cout<<endl<<"總?cè)表?yè)數(shù):"<<absence<<endl; /顯示 void version() cout<<" /*虛擬存儲(chǔ)管理器的頁(yè)面調(diào)度*/"<<endl;cout<<endl; void main() version(); initial();readData();FIFO(); init();LRU(); 五 操作說(shuō)明運(yùn)行程序前先新建一個(gè)頁(yè)面流文件文件(例如a.txt),在文件中存儲(chǔ)的是一系列頁(yè)號(hào)(頁(yè)號(hào)用整數(shù)表示,用空格作為分隔符),用來(lái)模擬程序執(zhí)行時(shí)的頁(yè)訪問(wèn)次序。六 結(jié)果分析1. 對(duì)于如下的頁(yè)面訪問(wèn)序列; 1,2,3,4,1,2,5,1,2,3,4,5 當(dāng)內(nèi)存頁(yè)面數(shù)分別為2、3、4、5時(shí),使用FIFO和LRU置換算法模擬頁(yè)面調(diào)度,記錄并分析實(shí)驗(yàn)結(jié)果(分析內(nèi)存頁(yè)面的具體調(diào)度情況并計(jì)算命中率)。2.思考以下問(wèn)題,并使用實(shí)驗(yàn)數(shù)據(jù)來(lái)回答:l

溫馨提示

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