




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)課程設(shè)計(jì)報(bào)告題目:頁(yè)面置換算法模擬程序?qū)W院名稱: 專業(yè)班級(jí): 學(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)能極大地?cái)U(kuò)充計(jì)算
2、機(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è)面走向,頁(yè)面走
3、向長(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中
4、最先裝入的頁(yè)面置換出去.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)
5、存塊狀態(tài)把page中最近最久未使用的頁(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 <stdlib.h>#include <time.h> /準(zhǔn)備用時(shí)鐘函數(shù)調(diào)用庫(kù)函數(shù) t=time(NULL
6、);/取時(shí)鐘時(shí)間并存入t調(diào)用庫(kù)函數(shù) srand(t);/用時(shí)間t初始化隨機(jī)數(shù)發(fā)生器調(diào)用 庫(kù)函數(shù) x=rand( )%10+1;/返回一個(gè)110之間的隨機(jī)數(shù) 四完整代碼#include<iostream.h>#include <stdlib.h>#include <time.h>#include <stdio.h>#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í)
7、際頁(yè)面走向長(zhǎng)度L(15<=L<=20):" do cin>>m; if(m>20|m<15)cout<<"實(shí)際頁(yè)面長(zhǎng)度須在1520之間;請(qǐng)重新輸入L: " else break; while(1); int i,j; j=time(NULL);/取時(shí)鐘時(shí)間 srand(j);/以時(shí)鐘時(shí)間x為種子,初始化隨機(jī)數(shù)發(fā)生器cout<<"輸出隨機(jī)數(shù): " for(i=0;i<m;i+) pi.num=rand( )%10+1;/產(chǎn)生1到10之間的隨即數(shù)放到數(shù)組p中 pi.time=0;co
8、ut<<pi.num<<" " cout<<endl; return m;void print(Pro *page1)/打印當(dāng)前的頁(yè)面 Pro *page=new ProM; page=page1; for(int i=0;i<M;i+) cout<<pagei.num<<" " cout<<endl;int Search(int e,Pro *page1 )/尋找內(nèi)存塊中與e相同的塊號(hào) Pro *page=new ProM; page=page1; for(int i=0;i
9、<M;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(i<M)/找出離現(xiàn)在時(shí)間最長(zhǎng)的頁(yè)面 if(e<pagei.time) e=pagei.time; i+; for( i=0;i<M;i+)if(e=pagei.time)return i;/找到離現(xiàn)在時(shí)間最長(zhǎng)的頁(yè)面返回其塊號(hào) return -1;int Count(Pro *page1,int i
10、,int t,Pro pL)/記錄當(dāng)前內(nèi)存塊中頁(yè)面離下次使用間隔長(zhǎng)度 Pro *page=new ProM; page=page1; int count=0; for(int j=i;j<L;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值 cout<<"請(qǐng)輸入可用內(nèi)存頁(yè)面數(shù)m(
11、35): " do cin>>M;if(M>5|M<3)cout<<"內(nèi)存塊m須在35之間,請(qǐng)重新輸入m: "else break;while(1); Pro *page=new ProM; do for(int i=0;i<M;i+)/初試化頁(yè)面基本情況 pagei.num=0; pagei.time=m-1-i; i=0; cout<<"1:FIFO頁(yè)面置換"<<endl; cout<<"2:LRU頁(yè)面置換"<<endl; cout
12、<<"3:OPT頁(yè)面置換"<<endl; cout<<"按其它鍵結(jié)束程序;"<<endl; cin>>c; if(c=1)/FIFO頁(yè)面置換 n=0;cout<<" * "<<endl;cout<<endl; cout<<" FIFO算法頁(yè)面置換情況如下: "<<endl;cout<<endl; cout<<" * "<<endl; whil
13、e(i<m) if(Search(pi.num,page)>=0)/當(dāng)前頁(yè)面在內(nèi)存中 cout<<pi.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)存中 cout<<pi.num<<" " print(page);/打印當(dāng)前頁(yè)面 t+;/下一個(gè)內(nèi)存塊i+;/指向下一個(gè)頁(yè)
14、面 cout<<"缺頁(yè)次數(shù):"<<n<<" 缺頁(yè)率:"<<n/m<<endl; if(c=2)/LRU頁(yè)面置換 n=0; cout<<" * "<<endl;cout<<endl; cout<<" LRU算法頁(yè)面置換情況如下: "<<endl; cout<<endl;cout<<" * "<<endl; while(i<m) int a
15、; t=Search(pi.num,page); if(t>=0)/如果已在內(nèi)存塊中 paget.time=0;/把與它相同的內(nèi)存塊的時(shí)間置0for(a=0;a<M;a+)if(a!=t)pagea.time+;/其它的時(shí)間加1 cout<<pi.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í)間置
16、為0 cout<<pi.num<<" "print(page);for(a=0;a<M;a+)if(a!=t)pagea.time+;/其它的時(shí)間加1 i+; cout<<"缺頁(yè)次數(shù):"<<n<<" 缺頁(yè)率:"<<n/m<<endl; if(c=3)/OPT頁(yè)面置換 n=0;cout<<" * "<<endl;cout<<endl;cout<<" OPT算法置換情況如下
17、:"<<endl;cout<<endl;cout<<" * "<<endl; while(i<m)if(Search(pi.num,page)>=0)/如果已在內(nèi)存塊中 cout<<pi.num<<" "cout<<"不缺頁(yè)"<<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
18、;for(t=0;t<M;t+)if(paget.num=0&&q>t)q=t;/把空內(nèi)存塊中塊號(hào)最小的找出來(lái)pageq.num=pi.num;n+; cout<<pi.num<<" "print(page);i+;elseint temp=0,s;for(t=0;t<M;t+)/尋找內(nèi)存塊中下次使用離現(xiàn)在最久的頁(yè)面if(temp<Count(page,i,t,p)temp=Count(page,i,t,p);s=t;/把找到的塊號(hào)賦給spages.num=pi.num; n+; cout<<pi.num<<" " print(page); i+;cout<<"缺頁(yè)次數(shù):"<<n<<" 缺頁(yè)率:"<<n/m<<endl;while(c=1|c=2|c=3); return 0; 五運(yùn)行結(jié)果演示 六.設(shè)計(jì)心得通過(guò)這次課程設(shè)計(jì),不僅讓我了解了三種頁(yè)面置換算法,即FIFO(先進(jìn)先出)、LRU(最近最久未使用)、OPT(最佳置換)算法
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拔尖創(chuàng)新人才課題申報(bào)書
- 貴州課題申報(bào)書怎么寫的
- 低年級(jí)微型課題申報(bào)書
- 高校思政類課題申報(bào)書
- 教師課題申報(bào)評(píng)審書
- 化工課題申報(bào)書范文
- 黨務(wù)課題申報(bào)書范文模板
- 醫(yī)學(xué)課題申報(bào)書的撰寫
- 校史課題研究申報(bào)書
- 智能項(xiàng)目課題申報(bào)書范文
- 患者跌倒的預(yù)防及管理課件
- 兒科病毒性腦炎課件
- 北京中醫(yī)藥大學(xué)《護(hù)理藥理學(xué)》平時(shí)作業(yè)2答卷
- 萬(wàn)科物業(yè)管理服務(wù)工作手冊(cè)
- JY-T 0470-2015 小學(xué)美術(shù)教學(xué)器材配備標(biāo)準(zhǔn)
- 燃?xì)獍踩b置改造施工方案
- 北京市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 部編版一年級(jí)語(yǔ)文寫話教學(xué)講座培訓(xùn)課件
- 項(xiàng)目部管理人員公路架橋機(jī)過(guò)孔旁站監(jiān)督確認(rèn)記錄表
- 煤炭物流園區(qū)總體規(guī)劃(2016-2030)參考范本
- 混凝土構(gòu)件之梁配筋計(jì)算表格(自動(dòng)版)
評(píng)論
0/150
提交評(píng)論