操作系統(tǒng)實(shí)驗(yàn)(四)實(shí)驗(yàn)報(bào)告虛擬內(nèi)存_第1頁
操作系統(tǒng)實(shí)驗(yàn)(四)實(shí)驗(yàn)報(bào)告虛擬內(nèi)存_第2頁
操作系統(tǒng)實(shí)驗(yàn)(四)實(shí)驗(yàn)報(bào)告虛擬內(nèi)存_第3頁
操作系統(tǒng)實(shí)驗(yàn)(四)實(shí)驗(yàn)報(bào)告虛擬內(nèi)存_第4頁
操作系統(tǒng)實(shí)驗(yàn)(四)實(shí)驗(yàn)報(bào)告虛擬內(nèi)存_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 操作系統(tǒng)實(shí)驗(yàn)(四) 虛擬內(nèi)存1、 實(shí)驗(yàn)題目 頁面置換算法模擬OPT、FIFO和LRU算法 2、 實(shí)驗(yàn)?zāi)康?了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握請求頁式存儲(chǔ)管理的頁面置換算法,如最佳(Optimal)置換算法、先進(jìn)先出(Fisrt In First Out)置換算法和最近最久未使用(Least Recently Used)置換算法3、 實(shí)驗(yàn)內(nèi)容 1)OPT算法:需要發(fā)生頁面置換時(shí),算法總是選擇在將來最不可能訪問的頁面進(jìn)行置換。 2)FIFO算法:算法總是選擇在隊(duì)列中等待時(shí)間最長的頁面進(jìn)行置換。 3)LRU算法:如果某一個(gè)頁面被訪問了,它很可能還要被訪問;相反,如果它長時(shí)間不被訪問,那么,在最近未來是不

2、大可能被訪問的。4、 程序代碼#include<iostream>#include <cstdlib>#include <time.h>#include <cstdio>#define L 30/頁面走向長度最大為30using namespace std;int M=4; /內(nèi)存塊struct P/定義一個(gè)結(jié)構(gòu)體 int num,time;p30;int Input(int m,P pL)/打印頁面走向狀態(tài) m=30; int i,j; j=time(NULL);/取時(shí)鐘時(shí)間 srand(j);/以時(shí)鐘時(shí)間x為種子,初始化隨機(jī)數(shù)發(fā)生器 cout

3、<<"頁面走向: " for(i=0; i<m; i+) pi.num=rand( )%10;/產(chǎn)生1到10之間的隨即數(shù)放到數(shù)組p中 pi.time=0; cout<<pi.num<<" " cout<<endl; return m;void print(P *page1)/打印當(dāng)前的頁面 P *page=new PM; page=page1; for(int i=0; i<M; i+) cout<<pagei.num<<" " cout<<

4、;endl;int Search(int e,P *page1 )/尋找內(nèi)存塊中與e相同的塊號 P *page=new PM; page=page1; for(int i=0; i<M; i+)if(e=pagei.num)return i; /返回i值 return -1;int Max(P *page1)/尋找最近最長未使用的頁面 用于OPT算法 P *page=new PM; page=page1; int e=page0.time,i=0; while(i<M) /找出離現(xiàn)在時(shí)間最長的頁面 if(e<pagei.time) e=pagei.time; i+; for(

5、 i=0; i<M; i+)if(e=pagei.time)return i; /找到離現(xiàn)在時(shí)間最長的頁面返回其塊號 return -1;int Count(P *page1,int i,int t,P pL)/記錄當(dāng)前內(nèi)存塊中頁面離下次使用間隔長度 用于OPT算法 P *page=new PM; page=page1; int count=0; for(int j=i; j<L; j+) if(paget.num=pj.num )break;/當(dāng)前頁面再次被訪問時(shí)循環(huán)結(jié)束 else count+;/否則count+1 return count;/返回count的值int main

6、() int c=1; int m=0,t=0; float n=0;/缺頁次數(shù) m=Input(m,p);/調(diào)用input函數(shù),返回m值 M=4; P *page=new PM; /do while(c=1|c=2|c=3) int i=0; for(i=0; i<M; i+) /初試化頁面基本情況 pagei.num=0; pagei.time=m-1-i; cout<<"1:FIFO頁面置換"<<endl; cout<<"2:LRU頁面置換"<<endl; cout<<"3

7、:OPT頁面置換"<<endl; cout<<"按其它鍵結(jié)束程序;"<<endl; cin>>c; if(c=1)/FIFO頁面置換 /FIFO(); n=0; cout<<" FIFO算法頁面置換情況如下: "<<endl; cout<<endl; while(i<m) if(Search(pi.num,page)>=0) /當(dāng)前頁面在內(nèi)存中 cout<<pi.num<<" " /輸出當(dāng)前頁pi.num

8、cout<<" "<<endl; i+; /i加1 else /當(dāng)前頁不在內(nèi)存中 if(t=M)t=0; else n+; /缺頁次數(shù)加1 paget.num=pi.num; /把當(dāng)前頁面放入內(nèi)存中 cout<<pi.num<<" " print(page); /打印當(dāng)前頁面 t+; /下一個(gè)內(nèi)存塊 i+; /指向下一個(gè)頁面 cout<<"缺頁次數(shù):"<<n<<" 缺頁率:"<<n<<"/"

9、;<<m<<" = "<<n/m<<endl; if(c=2)/LRU頁面置換,最近最久未使用 n=0; cout<<" LRU算法頁面置換情況如下: "<<endl; cout<<endl; while(i<m) int a; t=Search(pi.num,page); if(t>=0)/如果已在內(nèi)存塊中 paget.time=0;/把與它相同的內(nèi)存塊的時(shí)間置0 for(a=0; a<M; a+) if(a!=t)pagea.time+;/其它的時(shí)間

10、加1 cout<<pi.num<<" " cout<<"不缺頁"<<endl; else /如果不在內(nèi)存塊中 n+; /缺頁次數(shù)加1 t=Max(page); /返回最近最久未使用的塊號賦值給t paget.num=pi.num; /進(jìn)行替換 paget.time=0; /替換后時(shí)間置為0 cout<<pi.num<<" " print(page); for(a=0; a<M; a+) if(a!=t)pagea.time+; /其它的時(shí)間加1 i+; co

11、ut<<"缺頁次數(shù):"<<n<<" 缺頁率:"<<n<<"/"<<m<<" = "<<n/m<<endl; if(c=3)/OPT頁面置換 n=0; cout<<" OPT算法置換情況如下:"<<endl; cout<<endl; while(i<m) if(Search(pi.num,page)>=0)/如果已在內(nèi)存塊中 cout<&

12、lt;pi.num<<" " cout<<" "<<endl; i+; else/如果不在內(nèi)存塊中 int a=0; for(t=0; t<M; t+) if(paget.num=0)a+;/記錄空的內(nèi)存塊數(shù) if(a!=0) /有空內(nèi)存塊 int q=M; for(t=0; t<M; t+) if(paget.num=0&&q>t)q=t;/把空內(nèi)存塊中塊號最小的找出來 pageq.num=pi.num;/把缺頁換過來 n+; /缺頁次數(shù)加一 cout<<pi.num<<" " print(page); i+; else int temp=0,s; for(t=0; t<M; t+) /尋找內(nèi)存塊中下次使用離現(xiàn)在最久的頁面 if(temp<Count(page,i,t,p) temp=Count(page,i,t,p); s=t; /把找到的塊號賦給s pages.num=pi.num; n+; cout<<pi.num<<" " print(page); i+; cout<<"缺頁次數(shù):"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論