




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、信息工程學院實驗報告 成 績:課程名稱:操作系統 指導教師(簽名):實驗項目名稱:請求頁式存儲管理中常用頁面置換算法模擬 實驗時間: 班級 姓名: 學號: 一、實 驗 目 的: 1. 了解內存分頁管理策略2. 掌握調頁策略3. 掌握一般常用的調度算法4. 學會各種存儲分配算法的實現方法。5. 了解頁面大小和內存實際容量對命中率的影響。二、實 驗 環 境:PC機、windows2000 操作系統、VC+6.0三、實 驗 要 求:本實驗要求4學時完成。1. 采用頁式分配存儲方案,通過分別計算不同算法的命中率來比較算法的優劣,同時也考慮頁面大小及內存實際容量對命中率的影響;2. 實現OPT 算法 (
2、最優置換算法) 、LRU 算法 (Least Recently) 、 FIFO 算法 (First IN First Out)的模擬;3. 會使用某種編程語言。實驗前應復習實驗中所涉及的理論知識和算法,針對實驗要求完成基本代碼編寫、實驗中認真調試所編代碼并進行必要的測試、記錄并分析實驗結果。實驗后認真書寫符合規范格式的實驗報告,按時上交。四、實 驗 內 容 和 步 驟:1. 編寫程序,實現請求頁式存儲管理中常用頁面置換算法LRU算法的模擬。要求屏幕顯示LRU算法的性能分析表、缺頁中斷次數以及缺頁率。2. 在上機環境中輸入程序,調試,編譯。3. 設計輸入數據,寫出程序的執行結
3、果。4. 根據具體實驗要求,填寫好實驗報告。五、實 驗 結 果 及 分 析:實驗結果截圖如下:利用一個特殊的棧來保存當前使用的各個頁面的頁面號。當進程訪問某頁面時,便將該頁面的頁面號從棧中移出,將它壓入棧頂。因此,棧頂始終是最新被訪問頁面的編號,棧底是最近最久未被使用的頁面號。當訪問第5個數據“5”時發生了缺頁,此時1是最近最久未被訪問的頁,應將它置換出去。同理可得,調入隊列為:1 2 3 4 5 6 7 1 3 2 0 5,缺頁次數為12次,缺頁率為80%。六、實 驗 心 得:本次實驗實現了對請求頁式存儲管理中常用頁面置換算法LRU算法的模擬。通過實驗,我對內存分頁管理策略有了更多的了解。最
4、近最久未使用(LRU)置換算法的替換規則:是根據頁面調入內存后的使用情況來進行決策的。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間,當需淘汰一個頁面的時候選擇現有頁面中其時間值最大的進行淘汰。最佳置換算法的替換規則:其所選擇的被淘汰頁面,將是以后永不使用的或許是在最長(未來)時間內不再被訪問的頁面。先進先出(FIFO)頁面置換算法的替換規則:該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。該算法實現簡單只需把一個進程已調入內存的頁面,按先后次序鏈接成一個隊列,并設置一個指針,稱為替換指針,使它總是指向最老的頁面。三種替換算法的命中率由
5、高到底排列OPT>LRU>FIFO。本次的程序是在網上查找的相關代碼然后自己進行修改,先自己仔細地研讀了這段代碼,在這過程中我對C+代碼編寫有了更深的了解??傊?,本次實驗使我明白要學會把課堂上的理論應用到實際操作中。我需要在今后熟練掌握課堂上的理論基礎,只有堅實的基礎,才能在實際操作中更得心應手。附 錄:#include "iostream.h"#include <iomanip.h>const int DataMax=100;const int BlockNum = 10;int DataShowBlockNumDataMax; / 用于存儲要顯示
6、的數組bool DataShowEnableBlockNumDataMax; / 用于存儲數組中的數據是否需要顯示int DataDataMax; / 保存數據int BlockBlockNum; / 物理塊int countBlockNum; / 計數器int N ; / 頁面個數int M;/最小物理塊數int ChangeTimes;void DataInput(); / 輸入數據的函數void DataOutput();void LRU(); / LRU函數/*int main(int argc, char* argv) DataInput();/ DataInput(); LRU()
7、; return 0; /*/void DataInput() cout<<"請輸入最小物理塊數:" cin>>M; while(M > BlockNum) / 大于數據個數 cout<<"物理塊數超過預定值,請重新輸入:" cin>>M; cout<<"請輸入頁面的個數:" cin>>N; while(N > DataMax) / 大于數據個數 cout<<"頁面個數超過預定值,請重新輸入:" cin>>N
8、; cout<<"請輸入頁面訪問序列:"<<endl; for(int i=0;i<N;i+) cin>>Datai;void DataOutput() int i,j; for(i=0;i<N;i+) / 對所有數據操作 cout<<Datai<<” ”; cout<<"n-"<<endl; for(j=0;j<M;j+) cout<<" " for(i=0;i<N;i+) / 對所有數據操作 if( DataSh
9、owEnableji ) cout<<DataShowji<<" | " else cout<<" | " cout<<endl; cout<<"n缺頁次數: "<<ChangeTimes<<endl; cout<<"缺頁率: "<<ChangeTimes*100/N<<"%"<<endl;void LRU() int i,j; bool find; int poi
10、nt; int temp; / 臨時變量 ChangeTimes = 0; for(j=0;j<M;j+) for(i=0;i<N;i+) DataShowEnableji = false; / 初始化為false,表示沒有要顯示的數據 for(i=0;i<M;i+) counti = 0 ; for(i=0;i<N;i+) / 對有所數據操作 / 增加count for(j=0;j<M;j+) countj+; find = false; / 表示塊中有沒有該數據 for(j=0;j<M;j+) if( Blockj = Datai ) countj =
11、0; find = true; if( find ) continue; / 塊中有該數據,判斷下一個數據 / 塊中沒有該數據 ChangeTimes+; / 缺頁次數+ if( (i+1) > M ) / 因為i是從0開始記,而BlockNum指的是個數,從1開始,所以i+1 /獲得要替換的塊指針 temp = 0; for(j=0;j<M;j+) if( temp < countj ) temp = countj; point = j; / 獲得離的最遠的指針 else point = i; / 替換 Blockpoint = Datai; countpoint = 0; / 保存要顯示的數據 for(j=0;j<M;j+) DataS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲消防衛生管理制度
- 車輛管理制度培訓要點
- 銷售團隊全案管理制度
- 食品批發倉庫管理制度
- 飼料加工設備管理制度
- 餐廳采購門店管理制度
- 車輛監控人員管理制度
- 食品公司倉儲管理制度
- 進口食品銷售管理制度
- 食堂賬目收支管理制度
- 2025年天津市南開區中考一模語文試題(含答案)
- 2025年安徽省銅陵市樅陽縣浮山中學高三下學期3月適應性考試歷史試題含解析
- 每日2小時綜合體育實施方案
- 勞動合同法員工培訓課件
- 2024年鹽源縣縣屬國有企業招聘工作人員考試真題
- 2025年北京市順義區高三一模生物試卷(含答案)
- 2025年上海市房屋租賃合同模板(標準版)
- 智慧城市中的公民參與-全面剖析
- 四川省南充市2025屆高三下學期高考適應性考試化學試題(二診)(原卷版+解析版)
- 某建筑勞務分包有限公司項目管理手冊
- 2025年上半年全國總工會部分所屬事業單位公開招聘重點基礎提升(共500題)附帶答案詳解
評論
0/150
提交評論