實(shí)驗(yàn)四操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告_第1頁(yè)
實(shí)驗(yàn)四操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告_第2頁(yè)
實(shí)驗(yàn)四操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告_第3頁(yè)
實(shí)驗(yàn)四操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告_第4頁(yè)
實(shí)驗(yàn)四操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)四 操作系統(tǒng)存儲(chǔ)管理實(shí)驗(yàn)報(bào)告一、實(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)容(1) 通過(guò)計(jì)算不同算法的命中率比較算法的優(yōu)劣。同時(shí)也考慮了用戶內(nèi)存容量對(duì)命中率的影響。頁(yè)面失效次數(shù)為每次訪問(wèn)相應(yīng)指令時(shí),該指令所對(duì)應(yīng)的頁(yè)不在內(nèi)存中的次數(shù)。在本實(shí)驗(yàn)中,假定頁(yè)面大小為1k,用戶虛存容量為32k,用戶內(nèi)存容量為4頁(yè)到32頁(yè)。(2) produce_addstream通過(guò)隨機(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、 將指令序列變換稱為頁(yè)地址流在用戶虛存中,按每k存放10條指令排列虛存地址,即320條指令在虛存中的存放方式為:第0條第9條指令為第0頁(yè)(對(duì)應(yīng)

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

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

5、e<stdlib.h>#include<time.h>#include<iomanip.h>#include<vector> using namespace std;#define random(x) (rand()%x)#define max_length 320struct produceint num; /指令序號(hào)int zhiling; /指令地址int virtualpage; /指令虛頁(yè)號(hào)produce *next;struct produce*creatlist();void insert(struct produce *first

6、,struct produce *s); /插入一個(gè)節(jié)點(diǎn)(尾插法)void print(struct produce *first); /打印函數(shù)int max(vector<vector<int> >,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;

7、i<(max_length/4);i+)struct produce *s0;s0=new produce;s0->num=i*4+0;s0->zhiling=yanzhengi*4+0;s0->virtualpage=s0->zhiling;insert(first,s0);struct produce *s1;s1=new produce;s1->num=i*4+1;s1->zhiling=yanzhengi*4+1;s1->virtualpage=s1->zhiling;insert(first,s1);struct produce

8、*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->zhiling;insert(first,s3);/*/*for (int i=0;i<(max_length/4);i+)struct produc

9、e *s0;s0=new produce;m=random(max_length);s0->num=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 prod

10、uce;s2->num=i*4+2;s2->zhiling=m1+1;s2->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

11、 produce *s)struct produce *r=first;struct produce *p;while(r)p=r;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<<"指令序號(hào) "<<"指令地址 "<<&q

12、uot;指令虛頁(yè)號(hào)"<<endl;while (p)cout<<p->num<<'t'<<p->zhiling<<setw(14)<<p->virtualpage<<endl;p=p->next;int max(vector<vector<int> > page,int maxpage)int a=0,position=0;for (int i=0;i<maxpage;i+)if (pagei1>a)a=pagei1;posi

13、tion=i;return position;#endif先來(lái)先出調(diào)度算法:fifo.h#ifndef fifo_h#define fifo_hvoid fifo(struct produce *first,int maxpage)vector<int> page(maxpage);/for (int i=0;i<maxpage;i+)pagei=-1;int rear=0;/定義一個(gè)變量,指向要被替換的位置int pages;/定義變量保存當(dāng)前指令的所在的地址int count1=0;/int count2=0;/缺頁(yè)次數(shù)int find=1;struct produce

14、*p=first->next;while (p)pages=p->virtualpage;for(int i=0;i<maxpage;i+)if (pagei=-1|count1<maxpage)pagei=pages;count1 +;count2 +;find =1;break;else if (pagei=pages)find =1;break;find=0;if (find=0)pagerear=pages;rear +;rear=rear%maxpage;count2 +;p=p->next;cout<<"fifo調(diào)度算法缺頁(yè)次數(shù)

15、缺頁(yè)率 命中率"<<endl;cout<<count2<<setw(25)<<double(count2)/max_length<<setw(10)<<1-double(count2)/max_length<<endl;#endif fifo_hlru調(diào)度算法lru.h#ifndef lru_h#define lru_h#include<vector>using namespace std;/int max(vector<vector<int> >,int );vo

16、id lru(struct produce*first,int maxpage)struct produce*p=first->next;vector<vector<int> > page2(maxpage, vector<int>(2); int count1=0; /定義內(nèi)存已經(jīng)被占用的頁(yè)數(shù)int count2=0; /定義記錄缺頁(yè)次數(shù)int equal=0; /定義判斷如果當(dāng)前頁(yè)數(shù)與比較的頁(yè)數(shù),如果相等則為1,否則為0int place=0; /定義要替換的位置for (int i=0;i<maxpage;i+)page2i0=-1;pag

17、e2i1=0;while (p)if (count1<maxpage)for (int i=0;i<maxpage;i+)page2i1=page2i1+1;if (page2i0=-1)page2i0=p->virtualpage;count2+;break;else if (page2i0=p->virtualpage)page2i1 =1;count1+;elsefor (int i=0;i<maxpage;i+)page2i1 +=1;if (page2i0=p->virtualpage)equal=1;place=i;break;if (equal

18、=1)page2place1 =1;equal=0;else place = max(page2,maxpage);page2place1=1;page2place0=p->virtualpage;count2+;p=p->next;cout<<"lru調(diào)度算法缺頁(yè)次數(shù) 缺頁(yè)率 命中率"<<endl;cout<<count2<<setw(24)<<double(count2)/max_length<<setw(10)<<1-double(count2)/max_length<

19、;<endl;#endif lru_hopt調(diào)度算法opt.h#ifndef opt_h#define opt_h#include<vector>using namespace std;int search(struct produce*place,int position);void opt(struct produce*first,int maxpage)struct produce*p =first->next;vector<vector<int> > page3(maxpage, vector<int>(2);int coun

20、t1=0; /定義內(nèi)存已被使用的頁(yè)數(shù)int count2=0; /定義缺頁(yè)次數(shù)int current=0; /定義當(dāng)前工作位置int equal=0; /定義判斷如果當(dāng)前頁(yè)數(shù)與比較的頁(yè)數(shù),如果相等則為1,否則為0int place=0; /定義要替換的位置for (int i=0;i<maxpage;i+)page3i0=-1;page3i1=0;while (p)/cout<<1111<<endl;if (count1<maxpage)for (int i=0;i<maxpage;i+)if (page3i0=-1)page3i0=p->vir

21、tualpage;page3i1=search(p,current);count2+;break;else if (page3i0=p->virtualpage)page3i1=search(p,current);count1+;elsefor (int i=0;i<maxpage;i+)if (page3i0=p->virtualpage)equal=1;place=i;break;if (equal=1)page3place1 =search(p,current);equal=0;elseplace = max(page3,maxpage);page3place1=sea

22、rch(p,current);page3place0=p->virtualpage;count2 +=1;p=p->next;current +=1;cout<<"opt調(diào)度算法缺頁(yè)次數(shù) 缺頁(yè)率 命中率"<<endl;cout<<count2<<setw(25)<<double(count2)/max_length<<setw(10)<<1-double(count2)/max_length<<endl;int search(struct produce*place,

23、int position)struct produce*p=place->next;int current=place->virtualpage;int position1=position+1;while(p)if (current=p->virtualpage)return position1;position1+;p=p->next;return position1;#endif主函數(shù) 控制臺(tái)ccglmain.cpp#include<iostream.h>#include "produce_addstream.h"#include "fifo.h"#include "lru.h"#include "opt.h"void main()int s; /定義變量記錄用戶選擇char again; /定義變量用戶選擇繼續(xù)還是退出cout<<&

溫馨提示

  • 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)論