操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc

上傳人:good****022 文檔編號(hào):116451887 上傳時(shí)間:2022-07-05 格式:DOC 頁(yè)數(shù):18 大?。?59KB
收藏 版權(quán)申訴 舉報(bào) 下載
操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc_第1頁(yè)
第1頁(yè) / 共18頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc_第2頁(yè)
第2頁(yè) / 共18頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc_第3頁(yè)
第3頁(yè) / 共18頁(yè)

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)課程設(shè)計(jì)報(bào)告-頁(yè)面置換算法模擬程序.doc(18頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、操作系統(tǒng)課程設(shè)計(jì)報(bào)告題目:頁(yè)面置換算法模擬程序?qū)W院名稱: 宿 遷 學(xué) 院 專業(yè)班級(jí): 09軟件(1)班 學(xué)生姓名: 指導(dǎo)教師: 成績(jī): 目錄一、 設(shè)計(jì)目的 3二、設(shè)計(jì)題目32.1設(shè)計(jì)內(nèi)容32.2設(shè)計(jì)要求3三、設(shè)計(jì)過(guò)程43.1 FIFO(先進(jìn)先出)43.2 LRU(最近最久未使用)53.3 OPT(最佳置換算法)63.4 隨機(jī)數(shù)發(fā)生器7四、完整代碼 7五、運(yùn)行結(jié)果演示13 六、設(shè)計(jì)心得16七、參考文獻(xiàn)16一、設(shè)計(jì)目的 操作系統(tǒng)是計(jì)算機(jī)教學(xué)中最重要的環(huán)節(jié)之一,也是計(jì)算機(jī)專業(yè)學(xué)生的一門重要的專業(yè)課程。操作系統(tǒng)質(zhì)量的好壞,直接影響整個(gè)計(jì)算機(jī)系統(tǒng)的性能和用戶對(duì)計(jì)算機(jī)的使用。一個(gè)精心設(shè)計(jì)的操作系統(tǒng)能極大地

2、擴(kuò)充計(jì)算機(jī)系統(tǒng)的功能,充分發(fā)揮系統(tǒng)中各種設(shè)備的使用效率,提高系統(tǒng)工作的可靠性。由于操作系統(tǒng)涉及計(jì)算機(jī)系統(tǒng)中各種軟硬件資源的管理,內(nèi)容比較繁瑣,具有很強(qiáng)的實(shí)踐性。要學(xué)好這門課程,必須把理論與實(shí)踐緊密結(jié)合,才能取得較好的學(xué)習(xí)效果。 本課程設(shè)計(jì)是學(xué)生學(xué)習(xí)完計(jì)算機(jī)操作系統(tǒng)課程后,進(jìn)行的一次全面的綜合訓(xùn)練,通過(guò)課程設(shè)計(jì),讓學(xué)生更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對(duì)操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)學(xué)生的動(dòng)手能力。熟悉頁(yè)面置換算法及其實(shí)現(xiàn),引入計(jì)算機(jī)系統(tǒng)性能評(píng)價(jià)方法的概念。 二、設(shè)計(jì)題目 :頁(yè)面置換算法模擬程序 2.1設(shè)計(jì)內(nèi)容編制頁(yè)面置換算法的模擬程序。2.2設(shè)計(jì)要求1).用隨機(jī)數(shù)方法產(chǎn)生頁(yè)面走向

3、,頁(yè)面走向長(zhǎng)度為L(zhǎng)(15=L=20),L由控制臺(tái)輸入。2).根據(jù)頁(yè)面走向,分別采用Optinal、FIFO、LRU算法進(jìn)行頁(yè)面置換,統(tǒng)計(jì)缺頁(yè)率。3).假定可用內(nèi)存塊為m(3=m=5),m由控制臺(tái)輸入,初始時(shí),作業(yè)頁(yè)面都不在內(nèi)存。4).要求寫出一份詳細(xì)的設(shè)計(jì)報(bào)告。課程設(shè)計(jì)報(bào)告內(nèi)容包括:設(shè)計(jì)目的、設(shè)計(jì)內(nèi)容、設(shè)計(jì)原理、算法實(shí)現(xiàn)、流程圖、源程序、運(yùn)行示例及結(jié)果分析、心得體會(huì)、參考資料等。 3 設(shè)計(jì)過(guò)程3.1 FIFO(先進(jìn)先出)設(shè)計(jì)原理:需要進(jìn)行頁(yè)面置換,即把內(nèi)存中裝入最早的那個(gè)頁(yè)面淘汰,換入當(dāng)前的頁(yè)面。算法流程圖:Yi+把pi的內(nèi)容直接裝入最上面一個(gè)空內(nèi)存塊,i+把page中最先裝入的頁(yè)面置換出去.

4、i+Page是否有空當(dāng)前p中第i個(gè)元素是否已在內(nèi)存中頁(yè)面走向存入數(shù)組p中,內(nèi)存塊用page表示初始化為0開(kāi)始NYN輸出當(dāng)前內(nèi)存塊狀態(tài)結(jié)束3.2 LRU(最近最久未使用)設(shè)計(jì)原理: 開(kāi)始當(dāng)需要淘汰某一頁(yè)時(shí),選擇離當(dāng)前時(shí)間最近的一段時(shí)間內(nèi)最久沒(méi)有使用過(guò)的頁(yè)先淘汰。該算法的主要出發(fā)點(diǎn)是,如果某頁(yè)被訪問(wèn)了,則它可能馬上還要被訪問(wèn)?;蛘叻催^(guò)來(lái)說(shuō),如果某頁(yè)很長(zhǎng)時(shí)間未被訪問(wèn),則它在最近一段時(shí)間也不會(huì)被訪問(wèn)。算法流程圖:頁(yè)面走向存入數(shù)組p中,內(nèi)存塊用page表示初始化為0Y當(dāng)前p中第i個(gè)元素是否已在內(nèi)存i+NNPage是否有空Y結(jié)束把pi的內(nèi)容直接裝入最上面一個(gè)空內(nèi)存塊,i+輸出當(dāng)前內(nèi)存塊狀態(tài)把page中最近

5、最久未使用的頁(yè)面置換出去.i+3.3 OPT(最佳置換算法)設(shè)計(jì)原理:需要進(jìn)行頁(yè)面置換,把內(nèi)存中以后一段時(shí)間都不使用或是使用時(shí)間離現(xiàn)在最遠(yuǎn)的頁(yè)面換出。流程圖 開(kāi)始Yi+ 結(jié)束輸出當(dāng)前內(nèi)存塊狀態(tài)把page中以后一段時(shí)間都不使用或是使用時(shí)間離現(xiàn)在最遠(yuǎn)的換出.i+把pi的內(nèi)容直接裝入最上面一個(gè)空內(nèi)存塊,i+Page是否有空當(dāng)前p中第i個(gè)元素是否已在內(nèi)存頁(yè)面走向存入數(shù)組p中,內(nèi)存塊用page表示初始化為0NNY3.4 隨機(jī)數(shù)發(fā)生器 #include #include /準(zhǔn)備用時(shí)鐘函數(shù)調(diào)用庫(kù)函數(shù) t=time(NULL);/取時(shí)鐘時(shí)間并存入t調(diào)用庫(kù)函數(shù) srand(t);/用時(shí)間t初始化隨機(jī)數(shù)發(fā)生器調(diào)用

6、 庫(kù)函數(shù) x=rand( )%10+1;/返回一個(gè)110之間的隨機(jī)數(shù) 四完整代碼#include#include #include #include #define L 20/頁(yè)面走向長(zhǎng)度最大為20int M; /內(nèi)存塊struct Pro/定義一個(gè)結(jié)構(gòu)體 int num,time; Input(int m,Pro pL)/打印頁(yè)面走向狀態(tài) cout請(qǐng)輸入實(shí)際頁(yè)面走向長(zhǎng)度L(15=Lm; if(m20|m15)cout實(shí)際頁(yè)面長(zhǎng)度須在1520之間;請(qǐng)重新輸入L: ; else break; while(1); int i,j; j=time(NULL);/取時(shí)鐘時(shí)間 srand(j);/以時(shí)鐘

7、時(shí)間x為種子,初始化隨機(jī)數(shù)發(fā)生器cout輸出隨機(jī)數(shù): ; for(i=0;im;i+) pi.num=rand( )%10+1;/產(chǎn)生1到10之間的隨即數(shù)放到數(shù)組p中 pi.time=0;coutpi.num ; coutendl; return m;void print(Pro *page1)/打印當(dāng)前的頁(yè)面 Pro *page=new ProM; page=page1; for(int i=0;iM;i+) coutpagei.num ; coutendl;int Search(int e,Pro *page1 )/尋找內(nèi)存塊中與e相同的塊號(hào) Pro *page=new ProM; pag

8、e=page1; for(int i=0;iM;i+)if(e=pagei.num)return i;/返回i值 return -1;int Max(Pro *page1)/尋找最近最長(zhǎng)未使用的頁(yè)面 Pro *page=new ProM; page=page1; int e=page0.time,i=0; while(iM)/找出離現(xiàn)在時(shí)間最長(zhǎng)的頁(yè)面 if(epagei.time) e=pagei.time; i+; for( i=0;iM;i+)if(e=pagei.time)return i;/找到離現(xiàn)在時(shí)間最長(zhǎng)的頁(yè)面返回其塊號(hào) return -1;int Count(Pro *page1

9、,int i,int t,Pro pL)/記錄當(dāng)前內(nèi)存塊中頁(yè)面離下次使用間隔長(zhǎng)度 Pro *page=new ProM; page=page1; int count=0; for(int j=i;jL;j+) if(paget.num=pj.num )break;/當(dāng)前頁(yè)面再次被訪問(wèn)時(shí)循環(huán)結(jié)束 else count+;/否則count+1 return count;/返回count的值 int main() int c; int m=0,t=0;float n=0;Pro pL; m=Input(m,p);/調(diào)用input函數(shù),返回m值 coutM;if(M5|M3)cout內(nèi)存塊m須在35之

10、間,請(qǐng)重新輸入m: ;else break;while(1); Pro *page=new ProM; do for(int i=0;iM;i+)/初試化頁(yè)面基本情況 pagei.num=0; pagei.time=m-1-i; i=0; cout1:FIFO頁(yè)面置換endl; cout2:LRU頁(yè)面置換endl; cout3:OPT頁(yè)面置換endl; cout按其它鍵結(jié)束程序;c; if(c=1)/FIFO頁(yè)面置換 n=0;cout * endl;coutendl; cout FIFO算法頁(yè)面置換情況如下: endl;coutendl; cout * endl; while(i=0)/當(dāng)前頁(yè)

11、面在內(nèi)存中 coutpi.num ;/輸出當(dāng)前頁(yè)pi.numcout不缺頁(yè)endl;i+;/i加1 else /當(dāng)前頁(yè)不在內(nèi)存中 if(t=M)t=0; else n+;/缺頁(yè)次數(shù)加1 paget.num=pi.num;/把當(dāng)前頁(yè)面放入內(nèi)存中 coutpi.num ; print(page);/打印當(dāng)前頁(yè)面 t+;/下一個(gè)內(nèi)存塊i+;/指向下一個(gè)頁(yè)面 cout缺頁(yè)次數(shù):n 缺頁(yè)率:n/mendl; if(c=2)/LRU頁(yè)面置換 n=0; cout * endl;coutendl; cout LRU算法頁(yè)面置換情況如下: endl; coutendl;cout * endl; while(i=

12、0)/如果已在內(nèi)存塊中 paget.time=0;/把與它相同的內(nèi)存塊的時(shí)間置0for(a=0;aM;a+)if(a!=t)pagea.time+;/其它的時(shí)間加1 coutpi.num ;cout不缺頁(yè)endl; else/如果不在內(nèi)存塊中 n+; /缺頁(yè)次數(shù)加1 t=Max(page);/返回最近最久未使用的塊號(hào)賦值給t paget.num=pi.num;/進(jìn)行替換 paget.time=0;/替換后時(shí)間置為0 coutpi.num ;print(page);for(a=0;aM;a+)if(a!=t)pagea.time+;/其它的時(shí)間加1 i+; cout缺頁(yè)次數(shù):n 缺頁(yè)率:n/me

13、ndl; if(c=3)/OPT頁(yè)面置換 n=0;cout * endl;coutendl;cout OPT算法置換情況如下:endl;coutendl;cout * endl; while(i=0)/如果已在內(nèi)存塊中 coutpi.num ;cout不缺頁(yè)endl;i+;else/如果不在內(nèi)存塊中int a=0; for(t=0;tM;t+)if(paget.num=0)a+;/記錄空的內(nèi)存塊數(shù)if(a!=0)/有空內(nèi)存塊int q=M;for(t=0;tt)q=t;/把空內(nèi)存塊中塊號(hào)最小的找出來(lái)pageq.num=pi.num;n+; coutpi.num ;print(page);i+;

14、elseint temp=0,s;for(t=0;tM;t+)/尋找內(nèi)存塊中下次使用離現(xiàn)在最久的頁(yè)面if(tempCount(page,i,t,p)temp=Count(page,i,t,p);s=t;/把找到的塊號(hào)賦給spages.num=pi.num; n+; coutpi.num ; print(page); i+;cout缺頁(yè)次數(shù):n 缺頁(yè)率:n/mendl;while(c=1|c=2|c=3); return 0; 五運(yùn)行結(jié)果演示 六.設(shè)計(jì)心得通過(guò)這次課程設(shè)計(jì),不僅讓我了解了三種頁(yè)面置換算法,即FIFO(先進(jìn)先出)、LRU(最近最久未使用)、OPT(最佳置換)算法。開(kāi)始我對(duì)源代碼一味

15、的進(jìn)行調(diào)試,但發(fā)現(xiàn)總是有點(diǎn)錯(cuò)誤,于是調(diào)試了若干次還是沒(méi)有編譯成功。又重新分析了幾次設(shè)計(jì)要求,發(fā)現(xiàn)自己事先沒(méi)有完全弄清楚這三種算法的做法,接著便是暫時(shí)停下程序的編譯,將學(xué)習(xí)資料仔細(xì)地將這三種不同的算法研究了一下,待到基本弄懂它們具體怎么實(shí)現(xiàn)的時(shí)候,我才再一次去研究當(dāng)初總是有問(wèn)題的代碼,結(jié)合課本知識(shí)與詳細(xì)的流程圖分析,經(jīng)過(guò)不斷的調(diào)試,多次嘗試后,編譯成功了,運(yùn)行后發(fā)現(xiàn)此功能正是本次課程設(shè)計(jì)所需要的。本次課程設(shè)計(jì)不僅讓我對(duì)操作系統(tǒng)這門課程有了更深入的研究、對(duì)很多重要的概念有了鞏固和掌握。通過(guò)努力,三個(gè)頁(yè)面置換算法程序都已經(jīng)完成。雖然自己所做的很少也不夠完善,但畢竟也是努力的結(jié)果。主要有以下幾點(diǎn)收獲:

16、1.通過(guò)對(duì)上網(wǎng)和看書查閱相關(guān)資料,使自己對(duì)VC +語(yǔ)言的基本框架有新的了解,加深了對(duì)可視化程序的認(rèn)識(shí)。2.在使用VC+語(yǔ)言來(lái)實(shí)現(xiàn)功能時(shí),不像以往用的其他語(yǔ)言,它比較簡(jiǎn)練,更容易理解,實(shí)用性很強(qiáng)。3.先進(jìn)先出頁(yè)面置換和LRU以及OPT算法各有特點(diǎn),但是實(shí)踐起來(lái)卻很大,使自己對(duì)頁(yè)面置換算法有了新的認(rèn)識(shí)。一周半的課程設(shè)計(jì)就要結(jié)束了,不但對(duì)專業(yè)知識(shí)有了更深的理解,更使的自己認(rèn)識(shí)到實(shí)踐的重要性,理論、實(shí)踐相結(jié)合才能達(dá)到很好的學(xué)習(xí)效果,特別是程序語(yǔ)言的學(xué)習(xí)。 7 參考文獻(xiàn)計(jì)算機(jī)操作系統(tǒng)教程 徐甲同等編著 操作系統(tǒng) 羅宇等編著 操作系統(tǒng)實(shí)驗(yàn)教程 張麗芬, 劉利雄, 王全玉編著 計(jì)算機(jī)操作系統(tǒng) 梁紅兵、哲風(fēng)屏、湯子瀛 編著18

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!