




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件學(xué)院上機(jī)實(shí) 驗(yàn)報(bào)告課程名稱(chēng):操作系統(tǒng)原理實(shí)驗(yàn)項(xiàng)目:虛擬內(nèi)存頁(yè)面置換算法實(shí)驗(yàn)室:地獄018姓 名: 死神 學(xué) 號(hào):專(zhuān)業(yè)班級(jí): 實(shí)驗(yàn)時(shí)間:2015/12/13實(shí)驗(yàn)成績(jī)?cè)u(píng)閱教師實(shí)驗(yàn)?zāi)康募耙笸ㄟ^(guò)這次實(shí)驗(yàn),加深對(duì)虛擬內(nèi)存頁(yè)面置換概念的理解, 進(jìn)一步掌握先進(jìn)先出FIFO 最佳置換OPI和最近最久未使用LRU頁(yè)面置換算法的實(shí)現(xiàn)方法。結(jié)合 Linux的內(nèi)層的分 析方法查看內(nèi)存的分配過(guò)程及l(fā)inux kernel的內(nèi)存管理機(jī)制二、實(shí)驗(yàn)性質(zhì)設(shè)計(jì)性三、實(shí)驗(yàn)學(xué)時(shí)4學(xué)時(shí)四、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境1.實(shí)驗(yàn)環(huán)境:C與C+®序設(shè)計(jì)學(xué)習(xí)與實(shí)驗(yàn)系統(tǒng)2.知識(shí)準(zhǔn)備:(1)使用Linux的基本命令;(2) 了解Linux v
2、mstat、free、top等命令查看linux系統(tǒng)的內(nèi)存分配 情況;(3)掌握虛擬內(nèi)存頁(yè)面置換算法 FIFO等基本算法理論。五、實(shí)驗(yàn)內(nèi)容及步驟假設(shè)有n個(gè)進(jìn)程分別在 T1,,Tn時(shí)刻到達(dá)系統(tǒng),它們需要的服務(wù)時(shí)間分別為 S1,Sn=分別采用先來(lái)先服務(wù)FCF辭口短作業(yè)優(yōu)先SJF51程調(diào)度算法進(jìn)行調(diào)度,計(jì)算每 個(gè)進(jìn)程的完成時(shí)間、周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間,并且統(tǒng)計(jì)n個(gè)進(jìn)程的平均周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。步驟通過(guò)已知最小物理塊數(shù)、頁(yè)面?zhèn)€數(shù)、頁(yè)面訪問(wèn)序列、及采用置換方式可以得出頁(yè)面 置換的缺頁(yè)次數(shù)和缺頁(yè)率,及每次缺頁(yè)時(shí)物理塊中存儲(chǔ)。1 .輸入的形式int PageOrderMaxNumber;/頁(yè)面序歹!
3、Jint PageNum,LackNum=0,BlockNum;/頁(yè)面?zhèn)€數(shù),缺頁(yè)次數(shù),最小物理塊數(shù)2 .輸出的形式double LackPageRate/缺頁(yè)率缺頁(yè)個(gè)數(shù)每次缺頁(yè)時(shí)物理塊中存儲(chǔ)程序所能達(dá)到的功能模擬先進(jìn)先出FIF。最佳置換OPI和最近最久未使用LRU頁(yè)面置換算法的工作過(guò)程。 假設(shè)內(nèi)存中分配給每個(gè)進(jìn)程的最小物理塊數(shù)為m,在進(jìn)程運(yùn)行過(guò)程中要訪問(wèn)的頁(yè)面?zhèn)€數(shù)為n,頁(yè)面訪問(wèn)序列為P1,Pn,分別利用不同的頁(yè)面置換算法調(diào)度進(jìn)程的頁(yè)面訪問(wèn)序 列,給出頁(yè)面訪問(wèn)序列的置換過(guò)程,計(jì)算每種算法缺頁(yè)次數(shù)和缺頁(yè)率。測(cè)試數(shù)據(jù),包括 正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。程序中用到的所有抽象數(shù)據(jù)
4、類(lèi)型的定義、主程序的流程以及各程序模塊之間的層次 (調(diào)用)關(guān)系。int PageOrderMaxNumber;/頁(yè)面序歹!Jint PageCountMaxNumber=0;/計(jì)算內(nèi)存內(nèi)數(shù)據(jù)離下一次出現(xiàn)的距離int PageNum,LackNum=0,BlockNum;/頁(yè)面?zhèn)€數(shù),缺頁(yè)次數(shù),最小物理塊數(shù) double LackPageRate=0;bool found=false;整理范本頭文件流程圖六、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析運(yùn)行截圖:圖6.1 XC: UlSOFrCTursnt>inm e»p. eze圖6.2明不續(xù)粕面八面4注1尊一是數(shù)數(shù)埋列 tiR個(gè)物序I 0 3 市;20救
5、 結(jié)據(jù):墳,受X入套匚_' 3圖6.3七、實(shí)驗(yàn)總結(jié)這次試驗(yàn),讓我加深了對(duì)虛擬內(nèi)存頁(yè)面置換算法的理解, 進(jìn)一步掌握先進(jìn)先出FIFO 最佳置換OPI和最近最久未使用LRU頁(yè)面置換算法的實(shí)現(xiàn)方法。熟悉 Linux需要經(jīng)過(guò)大 量的實(shí)驗(yàn)、改進(jìn)與思考,在編寫(xiě)代碼的過(guò)程中遇到了一些問(wèn)題要積極面對(duì)并通過(guò)討論上 網(wǎng)或者問(wèn)老師解決。通過(guò)這次試驗(yàn)我了解了虛擬內(nèi)存置換算法的一些知識(shí),是我對(duì)于所 學(xué)習(xí)的專(zhuān)業(yè)知識(shí)得到了更好的鞏固和提升。附錄源程序清單#include <iostream>using namespace std;#define MaxNumber 100void OPI(int Page
6、OrderMaxNumber,int PageCountMaxNumber, int PageNum,int LackNum,int BlockNum, double LackPageRate,boo found)int moduleMaxNumber;int sum=0;int i,j,k,m;for(i=0;i<BlockNum;i+)/將內(nèi)存填滿 modulei=PageOrderi;sum+;for(j=0;j<=i;j+)cout<<modulej<<""cout<<endl;LackNum=BlockNum;for
7、(i=BlockNum;i<PageNum;i+)found=false;for(j=0;j<BlockNum;j+ )/遍歷已存儲(chǔ),判斷是否缺頁(yè)if(modulej=PageOrderi)found=true;break;if(found=false)/缺頁(yè),選擇替換for(j=0;j<BlockNum;j+) /計(jì)算內(nèi)存內(nèi)數(shù)據(jù)離下次出現(xiàn)的距離 PageCountj=0;for(k=i+1;k<PageNum;k+)if(modulej!=PageOrderk)PageCountj+;elsebreak;int max=PageCount0;int kind=0;fo
8、r(j=0;j<BlockNum;j+)找出最大值if(PageCountj>max)max=PageCountj;kind=j;modulekind=PageOrderi;LackNum+;for(m=0; m<3;m+)cout<<modulem<<""cout<<endl;LackPageRate=(LackNum*1.0)/PageNum;cout<<”該算法缺頁(yè)次數(shù)為:"<<LackNum<<endl;cout<<”該算法缺頁(yè)率為:"<&
9、lt;LackPageRate*100<<'%'<<endl;先進(jìn)先出置換算法*/*void FIFO(int PageOrderMaxNumber,int PageCountMaxNumber, int PageNum,int LackNum,int BlockNum, double LackPageRate,boo found)int moduleMaxNumber;int sum=0;int i,j,m;for(i=0;i<BlockNum;i+)/將內(nèi)存填滿modulei=PageOrderi;sum+;PageCounti=3-i;for
10、(j=0;j<=i;j+)cout<<modulej<<""cout<<endl;LackNum=BlockNum;for(i=BlockNum;i<PageNum;i+)found=false;for(j=0;j<BlockNum;j+ )/遍歷已存儲(chǔ),判斷是否缺頁(yè)if(modulej=PageOrderi)found=true;break;if(found=false)/缺頁(yè),選擇替換int max=PageCount0;int kind=0;for(j=0;j<BlockNum;j+)找出最大值if(Page
11、Countj>max)max=PageCountj;kind=j;for(int k=0;k<BlockNum;k+)/不是最大值,貝慳 +1if(k!=kind)PageCountk+;modulekind=PageOrderi;PageCountkind=0;/替換之后已經(jīng)查詢的次數(shù)改為 LackNum+;for(m=0; m<3;m+)cout<<modulem<<""cout<<endl;LackPageRate=(LackNum*1.0)/PageNum;cout<<”該算法缺頁(yè)次數(shù)為:"
12、<<LackNum<<endl;cout<<”該算法缺頁(yè)率為:"<<LackPageRate*100<<'%'<<endl;最近最久未使用置換算法*/*void LRU(int PageOrderMaxNumber,int PageCountMaxNumber,int PageNum,int LackNum,int BlockNum, doublefound)int moduleMaxNumber;int sum=0;int i,j,m;for(i=0;i<BlockNum;i+)/將內(nèi)存填
13、滿modulei=PageOrderi;sum+;PageCounti=3-i;for(j=0;j<=i;j+) cout<<modulej<<""cout<<endl;LackNum=BlockNum;for(i=BlockNum;i<PageNum;i+)found=false;for(j=0;j<BlockNum;j+)遍歷已存儲(chǔ),判斷是否缺頁(yè)if(modulej=PageOrderi)found=true;PageCountj=0;/查詢后,更改次數(shù)for(int k=0;k<BlockNum;k+) if
14、(k!=j)PageCountk+; break;if(found=false)/缺頁(yè),選擇替換int max=PageCount0;int kind=0;for(j=0;j<BlockNum;j+)找出最大值if(PageCountj>max)max=PageCountj;kind=j;for(int k=0;k<BlockNum;k+)if(k!=kind)PageCountk+;modulekind=PageOrderi;PageCountkind=0;/替換之后未查詢的次數(shù)改為 0LackNum+;for(m=0; m<3;m+)cout<<modu
15、lem<<""cout<<endl;LackPageRate=(LackNum*1.0)/PageNum;cout<<”該算法缺頁(yè)次數(shù)為:"<<LackNum<<endl;cout<<”該算法缺頁(yè)率為:"<<LackPageRate*100<<'%'<<endl;int main ()int PageOrderMaxNumber;/頁(yè)面序歹!Jint PageCountMaxNumber=0;/計(jì)算內(nèi)存內(nèi)數(shù)據(jù)離下一次出現(xiàn)的距離int
16、 PageNum,LackNum=0,BlockNum;須面?zhèn)€數(shù),缺頁(yè)次數(shù),最小物理塊數(shù) double LackPageRate=0;bool found=false;int chioce1=0,chioce2,chioce3;int i=0;while(chioce1=0)cout<<”是否重新輸入數(shù)據(jù);0:不輸入,1:重新輸入:"cin>>chioce2;if(chioce2=1)cout<<"請(qǐng)輸入頁(yè)面?zhèn)€數(shù):"cin>> PageNum;cout<<"請(qǐng)輸入最小物理塊數(shù)"cin>>BlockNum;cout<<"請(qǐng)輸入頁(yè)面序列:"<<endl;for(i=0;i<PageNum;i+)cin>>PageOrderi;整理范本cout<<"請(qǐng)選擇算法:1-FIFQ 2-OPI, 3-LRU:"cin>>chioce3;if(chioce3=1)FIFO(PageOrder,PageCount,PageNum,LackNum, BlockNum, LackPageRate,整理范本found);elsei
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車(chē)輛風(fēng)險(xiǎn)協(xié)議書(shū)范本
- 車(chē)提車(chē)銷(xiāo)售合同協(xié)議
- 進(jìn)入小區(qū)檢修協(xié)議書(shū)范本
- 道路運(yùn)輸合同協(xié)議常用版
- 輪胎銷(xiāo)售經(jīng)理合同協(xié)議
- 水庫(kù)劃界協(xié)議書(shū)
- 送銷(xiāo)售合同協(xié)議
- 豬場(chǎng)分紅協(xié)議書(shū)
- 轎車(chē)托運(yùn)運(yùn)輸合同協(xié)議
- 車(chē)銷(xiāo)售購(gòu)車(chē)合同協(xié)議
- 2022年道路交通安全防汛工作應(yīng)急預(yù)案
- (完整)《神經(jīng)病學(xué)》考試題庫(kù)及答案
- 國(guó)網(wǎng)北京市電力公司授權(quán)委托書(shū)(用電)
- 邊坡支護(hù)之錨桿施工技術(shù)ppt版(共35頁(yè))
- 黃芩常見(jiàn)的病蟲(chóng)害癥狀及防治措施
- 思政課社會(huì)實(shí)踐報(bào)告1500字6篇
- GB∕T 25119-2021 軌道交通 機(jī)車(chē)車(chē)輛電子裝置
- 電池PCBA規(guī)格書(shū)
- 機(jī)械零件加工驗(yàn)收檢驗(yàn)記錄(共2頁(yè))
- 機(jī)械加工切削全參數(shù)推薦表
- 終端塔基礎(chǔ)預(yù)偏值(抬高值)計(jì)算表格
評(píng)論
0/150
提交評(píng)論