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

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)四 操作系統(tǒng)存儲管理實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康拇鎯芾淼闹饕δ苤皇呛侠淼胤峙淇臻g。請求頁式管理是一種常用的虛擬存儲管理技術(shù)。本實(shí)驗(yàn)的目的是通過請求頁式管理中頁面置換算法模擬設(shè)計(jì),了解虛擬存儲技術(shù)的特點(diǎn),掌握請求頁式存儲管理的頁面置換算法。二、實(shí)驗(yàn)內(nèi)容(1) 通過計(jì)算不同算法的命中率比較算法的優(yōu)劣。同時(shí)也考慮了用戶內(nèi)存容量對命中率的影響。頁面失效次數(shù)為每次訪問相應(yīng)指令時(shí),該指令所對應(yīng)的頁不在內(nèi)存中的次數(shù)。在本實(shí)驗(yàn)中,假定頁面大小為1k,用戶虛存容量為32k,用戶內(nèi)存容量為4頁到32頁。(2) produce_addstream通過隨機(jī)數(shù)產(chǎn)生一個(gè)指令序列,共320條指令。A、 指令的地址按下述原

2、則生成:1) 50%的指令是順序執(zhí)行的2) 25%的指令是均勻分布在前地址部分3) 25%的指令是均勻分布在后地址部分B、 具體的實(shí)施方法是:1) 在0,319的指令地址之間隨機(jī)選取一起點(diǎn)m;2) 順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令;3) 在前地址0,m+1中隨機(jī)選取一條指令并執(zhí)行,該指令的地址為m;4) 順序執(zhí)行一條指令,地址為m+1的指令5) 在后地址m+2,319中隨機(jī)選取一條指令并執(zhí)行;6) 重復(fù)上述步驟1)5),直到執(zhí)行320次指令C、 將指令序列變換稱為頁地址流在用戶虛存中,按每k存放10條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(對應(yīng)

3、虛存地址為0,9);第10條第19條指令為第1頁(對應(yīng)虛存地址為10,19);。第310條第319條指令為第31頁(對應(yīng)虛存地址為310,319);按以上方式,用戶指令可組成32頁。(3) 計(jì)算并輸出下屬算法在不同內(nèi)存容量下的命中率。1) 先進(jìn)先出的算法(FIFO);2) 最近最少使用算法(LRU);3) 最佳淘汰算法(OPT);4) 最少訪問頁面算法(LFR);其中3)和4)為選擇內(nèi)容開 始生成地址流輸入算法號S1S4形成地址頁號用戶內(nèi)存空間msize=2Msize32 OPT()FIFO()LRU()LFU()Msize加1S=? 是否用其他算法繼續(xù)結(jié) 束NY1234YN提示出錯(cuò),重新輸入

4、三、系統(tǒng)框圖五 運(yùn)行結(jié)果首先打印出產(chǎn)生的指令信息,第一列為指令序列號,第二列為指令地址,第三列為 指令所在的虛頁號選擇FIFO調(diào)度算法,并且內(nèi)存從3也開始逐漸增加到32頁,打印出缺頁次數(shù)缺頁率,命中率選擇LRU調(diào)度算法,并且內(nèi)存從3也開始逐漸增加到32頁,打印出缺頁次數(shù)缺頁率,命中率選擇OPT調(diào)度算法,并且內(nèi)存從3也開始逐漸增加到32頁,打印出缺頁次數(shù)缺頁率,命中率六 實(shí)驗(yàn)程序產(chǎn)生指令流文件produce_addstream.h#ifndef PRODUCE_ADDSTREAM_H#define PRODUCE_ADDSTREAM_H#include#include#include#inclu

5、de#include using namespace std;#define random(x) (rand()%x)#define MAX_LENGTH 320struct produceint num; /指令序號int zhiling; /指令地址int virtualpage; /指令虛頁號produce *next;struct produce*creatlist();void insert(struct produce *first,struct produce *s); /插入一個(gè)節(jié)點(diǎn)(尾插法)void print(struct produce *first); /打印函數(shù)int

6、 max(vectorvector ,int );struct produce*creatlist()srand(int)time(0);struct produce*first=new produce;first-next=NULL;int m=0,m1=0;/*int yanzheng20=7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1;for (int i=0;inum=i*4+0;s0-zhiling=yanzhengi*4+0;s0-virtualpage=s0-zhiling;insert(first,s0);struct produce *s1;s

7、1=new produce;s1-num=i*4+1;s1-zhiling=yanzhengi*4+1;s1-virtualpage=s1-zhiling;insert(first,s1);struct produce *s2;s2=new produce;s2-num=i*4+2;s2-zhiling=yanzhengi*4+2;s2-virtualpage=s2-zhiling;insert(first,s2);struct produce *s3;s3=new produce;s3-num=i*4+3;s3-zhiling=yanzhengi*4+3;s3-virtualpage=s3-

8、zhiling;insert(first,s3);/*/*for (int i=0;inum=i*4+0;s0-zhiling=m+1;s0-virtualpage=s0-zhiling/10;insert(first,s0);m1=random(m+1);struct produce *s1;s1=new produce;s1-num=i*4+1;s1-zhiling=m1;s1-virtualpage=s1-zhiling/10;insert(first,s1);struct produce *s2;s2=new produce;s2-num=i*4+2;s2-zhiling=m1+1;s

9、2-virtualpage=s2-zhiling/10;insert(first,s2);struct produce *s3;s3=new produce;s3-num=i*4+3;s3-zhiling=random(MAX_LENGTH-m1-2)+m1+2;s3-virtualpage=s3-zhiling/10;insert(first,s3);/*/return first;void insert(struct produce *first,struct produce *s)struct produce *r=first;struct produce *p;while(r)p=r;

10、r=r-next;p-next=s;p=s;p-next=NULL;void print(struct produce *first) /打印函數(shù)struct produce *p;p =first-next;cout隨機(jī)產(chǎn)生的指令的信息如下endl;cout指令序號 指令地址 指令虛頁號endl;while (p)coutnumtzhilingsetw(14)virtualpagenext;int max(vectorvector page,int Maxpage)int a=0,position=0;for (int i=0;ia)a=pagei1;position=i;return po

11、sition;#endif先來先出調(diào)度算法:fifo.h#ifndef FIFO_H#define FIFO_Hvoid fifo(struct produce *first,int Maxpage)vector page(Maxpage);/for (int i=0;inext;while (p)pages=p-virtualpage;for(int i=0;iMaxpage;i+)if (pagei=-1|count1next;coutFIFO調(diào)度算法缺頁次數(shù) 缺頁率 命中率endl;coutcount2setw(25)double(count2)/MAX_LENGTHsetw(10)1-

12、double(count2)/MAX_LENGTHendl;#endif FIFO_HLRU調(diào)度算法lru.h#ifndef LRU_H#define LRU_H#includeusing namespace std;/int max(vectorvector ,int );void lru(struct produce*first,int Maxpage)struct produce*p=first-next;vectorvector page2(Maxpage, vector(2); int count1=0; /定義內(nèi)存已經(jīng)被占用的頁數(shù)int count2=0; /定義記錄缺頁次數(shù)int

13、 equal=0; /定義判斷如果當(dāng)前頁數(shù)與比較的頁數(shù),如果相等則為1,否則為0int place=0; /定義要替換的位置for (int i=0;iMaxpage;i+)page2i0=-1;page2i1=0;while (p)if (count1Maxpage)for (int i=0;ivirtualpage;count2+;break;else if (page2i0=p-virtualpage)page2i1 =1;count1+;elsefor (int i=0;ivirtualpage)equal=1;place=i;break;if (equal=1)page2place1

14、 =1;equal=0;else place = max(page2,Maxpage);page2place1=1;page2place0=p-virtualpage;count2+;p=p-next;coutLRU調(diào)度算法缺頁次數(shù) 缺頁率 命中率endl;coutcount2setw(24)double(count2)/MAX_LENGTHsetw(10)1-double(count2)/MAX_LENGTHendl;#endif LRU_HOPT調(diào)度算法opt.h#ifndef OPT_H#define OPT_H#includeusing namespace std;int search

15、(struct produce*place,int position);void opt(struct produce*first,int Maxpage)struct produce*p =first-next;vectorvector page3(Maxpage, vector(2);int count1=0; /定義內(nèi)存已被使用的頁數(shù)int count2=0; /定義缺頁次數(shù)int current=0; /定義當(dāng)前工作位置int equal=0; /定義判斷如果當(dāng)前頁數(shù)與比較的頁數(shù),如果相等則為1,否則為0int place=0; /定義要替換的位置for (int i=0;iMaxpa

16、ge;i+)page3i0=-1;page3i1=0;while (p)/cout1111endl;if (count1Maxpage)for (int i=0;ivirtualpage;page3i1=search(p,current);count2+;break;else if (page3i0=p-virtualpage)page3i1=search(p,current);count1+;elsefor (int i=0;ivirtualpage)equal=1;place=i;break;if (equal=1)page3place1 =search(p,current);equal=

17、0;elseplace = max(page3,Maxpage);page3place1=search(p,current);page3place0=p-virtualpage;count2 +=1;p=p-next;current +=1;coutOPT調(diào)度算法缺頁次數(shù) 缺頁率 命中率endl;coutcount2setw(25)double(count2)/MAX_LENGTHsetw(10)1-double(count2)/MAX_LENGTHnext;int current=place-virtualpage;int position1=position+1;while(p)if (c

18、urrent=p-virtualpage)return position1;position1+;p=p-next;return position1;#endif主函數(shù) 控制臺ccglmain.cpp#include#include produce_addstream.h#include fifo.h#include lru.h#include opt.hvoid main()int S; /定義變量記錄用戶選擇char again; /定義變量用戶選擇繼續(xù)還是退出cout開始產(chǎn)生內(nèi)存指令endl;struct produce *first=creatlist();/產(chǎn)生隨機(jī)指令cout打印產(chǎn)生的指令信息endl;print(first);/打印產(chǎn)生的指令信息while (1)int Maxpage=3;/定義內(nèi)存最大頁面數(shù)cout輸入你的選擇endl;cout1:FIFO(先進(jìn)先出)調(diào)度算法n2:LRU(最近最少使用算法)n3

溫馨提示

  • 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

提交評論