版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆廣東省珠海一中等六校高三六校第一次聯(lián)考數(shù)學(xué)試題試卷
- 曾都區(qū)教師合同
- 餐廳勞務(wù)外包合同
- 材料合同作廢說明 模板
- 北京市三方就業(yè)協(xié)議書樣本
- 山西省2024八年級物理上冊第三章物態(tài)變化特色章末小測課件新版新人教版
- 項(xiàng)目事故應(yīng)急預(yù)案保證措施
- 人教版2024-2025學(xué)年二年級數(shù)學(xué)上冊第三次月考質(zhì)量檢測(5-6單元)(含答案)
- 生物安全應(yīng)急處置
- 制證一體機(jī)相關(guān)行業(yè)投資方案范本
- 【核心素養(yǎng)目標(biāo)】4.1 光的直線傳播(教學(xué)設(shè)計(jì))人教版八年級物理上冊
- 《勞動(dòng)創(chuàng)造幸福奮斗成就夢想》主題班會(huì)
- 牛津譯林版英語2024七年級上冊全冊單元知識清單(記憶版)
- 2024小學(xué)道德與法治新教材培訓(xùn):教材解讀及教學(xué)建議
- 2024-2025學(xué)年山西省太原市數(shù)學(xué)高三上學(xué)期模擬試卷與參考答案
- 3.16謠言止于智者-正確處理同學(xué)關(guān)系班會(huì)解析
- 2024版全新勞動(dòng)仲裁證據(jù)目錄范本
- 小學(xué)數(shù)學(xué)北師大版六年級上冊《看圖找關(guān)系》課件
- 人教部編版八年級道德與法治上冊:5.2《預(yù)防犯罪》說課稿1
- (必會(huì))高級茶評員近年考試真題題庫(含答案)
- 2023年貴州省中考化學(xué)真題試卷(解析版)
評論
0/150
提交評論