版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 操作系統(tǒng)課程設(shè)計(jì)報(bào)告學(xué) 院: 學(xué)生姓名: 學(xué) 號(hào): 題 目: Clock 及改進(jìn) Clock置換算法實(shí)現(xiàn)指 導(dǎo) 教 師: 一、 課程設(shè)計(jì)目的操作系統(tǒng)課程設(shè)計(jì)是計(jì)算機(jī)專業(yè)重要的教學(xué)環(huán)節(jié),它為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),獨(dú)立分析和解決實(shí)際問(wèn)題的機(jī)會(huì)。 l 進(jìn)一步鞏固和復(fù)習(xí)操作系統(tǒng)的基礎(chǔ)知識(shí)。 l 培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力。 l 提高學(xué)生調(diào)試程序的技巧和軟件設(shè)計(jì)的能力。l 提高學(xué)生分析問(wèn)題、解決問(wèn)題以及綜合利用 C 語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。二、 課程設(shè)計(jì)內(nèi)容與要求:模擬實(shí)現(xiàn)Clock及改進(jìn)Clock置換算法,程序應(yīng)按照Clock置換算法
2、及改進(jìn)Clock置換算法模擬實(shí)現(xiàn)頁(yè)面的置換。1不同的功能使用不同的函數(shù)實(shí)現(xiàn)(模塊化),對(duì)每個(gè)函數(shù)的功能和調(diào)用接口要注釋清楚。對(duì)程序其它部分也進(jìn)行必要的注釋。 2對(duì)系統(tǒng)進(jìn)行功能模塊分析、畫(huà)出總流程圖和各模塊流程圖。 3用戶界面要求使用方便、簡(jiǎn)潔明了、美觀大方、格式統(tǒng)一。所有功能可以反復(fù)使用,最好使用菜單。 4通過(guò)命令行相應(yīng)選項(xiàng)能直接進(jìn)入某個(gè)相應(yīng)菜單選項(xiàng)的功能模塊。 5所有程序需調(diào)試通過(guò)三、 算法及關(guān)鍵數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(1)Clock置換算法:當(dāng)采用簡(jiǎn)單Clock算法是只需為每頁(yè)設(shè)置一位訪問(wèn)位,再將內(nèi)存中的所用頁(yè)面都通過(guò)鏈接指針鏈接成一個(gè)循環(huán)隊(duì)列。當(dāng)某頁(yè)被訪問(wèn)時(shí),其訪問(wèn)位被置1。置換算法在選擇一頁(yè)淘汰
3、時(shí),只需檢查頁(yè)的訪問(wèn)位。如果是0,就選擇該頁(yè)換出;若為1,則重新將他置0,暫不換出,而給該頁(yè)第二次駐留內(nèi)存的機(jī)會(huì),在按照FIFO算法檢查下一個(gè)頁(yè)面。當(dāng)檢查到隊(duì)列中的最后一個(gè)頁(yè)面是,若其訪問(wèn)位仍為1,則再返回到隊(duì)首去檢查第一個(gè)頁(yè)面。(2)算法流程圖(3)改進(jìn)型Clock置換算法在將一個(gè)頁(yè)面換出時(shí),如果該頁(yè)已被修改過(guò),便須將該頁(yè)重新寫回到磁盤上;但如果該頁(yè)未被修改過(guò),則不必將它拷回磁盤。在改進(jìn)型Clock算法中,除須考慮頁(yè)面的使用情況外,還須在增加一個(gè)因素,即置換代價(jià),這樣 頁(yè)面換出時(shí),既要是未使用過(guò)的頁(yè)面,又要是未被修改過(guò)的頁(yè)面。把同時(shí)滿足這兩個(gè)條件的頁(yè)面作為首選淘汰的頁(yè)面。由訪問(wèn)位A和修改位M
4、可以組合成下面四種類型的頁(yè)面:1類(A=0,M=0):表示該頁(yè)最近既未被訪問(wèn),又未被修改,是最佳淘汰頁(yè)。2類(A=0,M=0):表示該頁(yè)最近未被訪問(wèn),但已被修改,并不是很好的淘汰頁(yè)。3類(A=1,M=0):表示該頁(yè)最近已被訪問(wèn),但未被修改,該頁(yè)有可能在被訪問(wèn)。4類(A=1,M=1):表示該頁(yè)最近已被訪問(wèn)且被修改,該頁(yè)可能再被訪問(wèn)。,執(zhí)行過(guò)程: 從查尋指針當(dāng)前位置起掃描內(nèi)存分頁(yè)循環(huán)隊(duì)列,選擇A=0且M=0的第一個(gè)頁(yè)面淘汰;若未找到,轉(zhuǎn) 開(kāi)始第二輪掃描,選擇A=0且M=1的第一個(gè)頁(yè)面淘汰,同時(shí)將經(jīng)過(guò)的所有頁(yè)面訪問(wèn)位置0;若不能找到,轉(zhuǎn)四、 程序代碼分析(1) Clock置換算法代碼實(shí)現(xiàn)void C
5、LOCK(int num)int j;if(isInside(num)cout<<"命中"<<endl;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseif(count = A)lost+;for(j=0; j < A; )if(statej = 0)break;elsestatej = 0;j+;j = j %3;Insidej = Pagenum;s
6、tatej = 1;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseInsidecount = Pagenum;count+;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;(2) 改進(jìn)Clock置換算法實(shí)現(xiàn)void L
7、CLOCK(int num)int j;if(isInside2(num)cout<<"命中"<<endl;for(int i=0 ; i <A; i+)cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseif(count = A)lost+;j =whichpage();Insidej = Pagenum;state2j0 = 1;for(int i=0 ; i <A; i+) cout<<
8、"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseInsidecount = Pagenum;count+;for(int i=0 ; i <A; i+)cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;五程序截圖運(yùn)行截圖:六程序代碼#include<iostream>#include<stdlib.h>using name
9、space std;#define M 2int const A = 4;/內(nèi)存中存放的頁(yè)面數(shù)int count = 0;int InsideA;int const PageCount =10;/總的頁(yè)面數(shù)int PagePageCount;int insert = 0;/先到先出置換算法fcfo中表示 當(dāng)內(nèi)存滿的時(shí)候,新進(jìn)入的頁(yè)號(hào)放的位置int suiji = 0; /隨機(jī)置換算法randchange 當(dāng)內(nèi)存滿的時(shí)候,新進(jìn)入的頁(yè)號(hào)放的位置int stateA;/clock置換算法中,內(nèi)存中的每個(gè)頁(yè)面號(hào)對(duì)應(yīng)的狀態(tài)int state2AM;/ 二維數(shù)組,第一行第一列為訪問(wèn)位,第一行的第二列為修改
10、位double lost = 0.0;/檢測(cè)頁(yè)號(hào)是否在內(nèi)存中bool isInside(int num)for(int i = 0; i < A; i+)if(Insidei = Pagenum)statei = 1;return true;return false;/判斷頁(yè)面是否已經(jīng)被修改bool change()if(rand()%2+1) = 1 )cout<<"該頁(yè)面被修改"<<endl;return true;elsereturn false;/用于改進(jìn)型clock置換算法,檢測(cè)頁(yè)號(hào)是否在內(nèi)存中并把訪問(wèn)位和修改位置1bool isIn
11、side2(int num)for(int i = 0; i < A; i+)if(Insidei = Pagenum)if(change()state2i0 = 1;state2i1 = 1;elsestate2i0 = 1;return true;return false;/用于改進(jìn)型clock置換算法,判斷內(nèi)存中第幾個(gè)需要被置換int whichpage()int j;for(j=0; j < A;j+) if(state2j0 = 0&&state2j1 = 0)return j;for(j=0; j < A;j+ ) if(state2j0 = 0&
12、amp;&state2j1 = 1)return j;state2j0 = 0 ;for(j=0; j < A;j+ )state2j0 = 0 ;return whichpage();/簡(jiǎn)單Clock置換算法void CLOCK(int num)int j;if(isInside(num)cout<<"命中"<<endl;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<
13、<endl;elseif(count = A)lost+;for(j=0; j < A; )if(statej = 0)break;elsestatej = 0;j+;j = j %3;Insidej = Pagenum;statej = 1;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseInsidecount = Pagenum;count+;for(int i=0 ; i <A;
14、 i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;/改進(jìn)型clock置換算法void LCLOCK(int num)int j;if(isInside2(num)cout<<"命中"<<endl;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<&l
15、t;endl;elseif(count = A)lost+;j =whichpage();Insidej = Pagenum;state2j0 = 1;for(int i=0 ; i <A; i+) cout<<"物理塊"<<i<<"#中內(nèi)容:"<<Inside i<<endl;elseInsidecount = Pagenum;count+;for(int i=0 ; i <A; i+)cout<<"物理塊"<<i<<&quo
16、t;#中內(nèi)容:"<<Inside i<<endl;int main() char ch ; cout<<"默認(rèn)的頁(yè)號(hào)為"<<endl; for(int i = 0; i < PageCount; i+) Pagei =rand()%9 + 1;cout<<Pagei<<" " cout<<endl; while(1)cout<<"-1.Clock置換算法(CLOCK)-"<<endl;cout<<&q
17、uot;-2.改進(jìn)型Clock置換算法-"<<endl;cout<<"-0.退出-"<<endl;cout<<"-輸入進(jìn)行選擇-"<<endl;cin>>ch;switch(ch) case '1': lost = 0;count = 0;for(int m = 0; m < A; m+)statem = 0;for(int j = 0; j < A; j+)Insidej = 0;for(int i = 0; i < PageCount;
18、 i+) cout<<"讀入Page"<<i<<"="<<Pagei<<endl; CLOCK(i); cout<<"n頁(yè)面訪問(wèn)次數(shù)"<<PageCount<<"n缺頁(yè)中斷次數(shù)"<<lost<<"n缺頁(yè)率"<<lost/(PageCount)<<"n"<<endl; break; case '2': lost = 0;count = 0;for(int m = 0; m < A; m+) for(int n = 0; n < 2;n+)state2mn = 0;for(int j = 0; j < A; j+) Insidej = 0;for(int i = 0; i < PageCount; i+) cout<<"讀入Page
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水利抽水施工方案(3篇)
- 景區(qū)門票價(jià)格調(diào)整制度
- 罕見(jiàn)腫瘤聯(lián)合治療的策略與選擇
- 2026四川路橋集團(tuán)公路隧道分公司面向社會(huì)招聘TBM施工專業(yè)人才20人備考題庫(kù)(含答案詳解)
- 2026京能集團(tuán)總部部門副職及所屬企業(yè)副總經(jīng)理招聘5人備考題庫(kù)及一套完整答案詳解
- 2026中國(guó)電科十五所秋季校園招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026四川大學(xué)華西醫(yī)院基建運(yùn)行部技術(shù)工人招聘2人備考題庫(kù)有完整答案詳解
- 小型加工企業(yè)財(cái)務(wù)制度
- 佛教場(chǎng)所財(cái)務(wù)制度
- 校長(zhǎng)辦公室財(cái)務(wù)制度
- 神經(jīng)病學(xué)教學(xué)課件:阿爾茨海默病
- LY/T 1598-2011石膏刨花板
- GB/T 31588.1-2015色漆和清漆耐循環(huán)腐蝕環(huán)境的測(cè)定第1部分:濕(鹽霧)/干燥/濕氣
- GB/T 21268-2014非公路用旅游觀光車通用技術(shù)條件
- GB/T 1040.1-2018塑料拉伸性能的測(cè)定第1部分:總則
- GA/T 1495-2018道路交通安全設(shè)施基礎(chǔ)信息采集規(guī)范
- 《大數(shù)據(jù)管理》課程教學(xué)大綱
- 夜間綜合施工專項(xiàng)專題方案公路
- ★神東煤炭集團(tuán)xx煤礦礦井災(zāi)害預(yù)防與處理計(jì)劃
- Q∕GDW 11421-2020 電能表外置斷路器技術(shù)規(guī)范
- 液化氣站建設(shè)可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論