操作系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、操作系統(tǒng)原理及應(yīng)用課程設(shè)計(jì)報(bào)告虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū) 學(xué)院(系): 計(jì)算機(jī)科學(xué)與工程學(xué)院 班 級(jí): 107030702 學(xué)號(hào) 26 學(xué)生姓名: 許永順 指導(dǎo)教師: 周 敏 時(shí)間: 從 2009 年 12 月21日 到 2009 年12月26日 目錄一、課程設(shè)計(jì)的目的 3二、課程設(shè)計(jì)內(nèi)容及要求3三、實(shí)現(xiàn)原理3四、流程圖14五、軟件運(yùn)行環(huán)境及限制23六、結(jié)果輸出及分析23七、心的體會(huì)28八、參考文獻(xiàn)28虛擬存儲(chǔ)器和內(nèi)存工作區(qū)一、 課程設(shè)計(jì)的目的本課程設(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ǔ)理論和重要算

2、法的理解,加強(qiáng)學(xué)生的動(dòng)手能力。二、 課程設(shè)計(jì)內(nèi)容及要求設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),編程序演示下述算法的具體實(shí)現(xiàn)過(guò)程,并計(jì)算訪問(wèn)命中率。要求設(shè)計(jì)主界面以靈活選擇某算法,且以下算法都要實(shí)現(xiàn):1、先進(jìn)先出算法(fifo)2、最近最久未使用算法(lru)3、最佳置換算法(opt)三、 實(shí)現(xiàn)原理設(shè)計(jì)思想: 在進(jìn)程運(yùn)行過(guò)程中,若其所要訪問(wèn)的頁(yè)面不在內(nèi)存需把它們調(diào)入內(nèi)存,但內(nèi)存已無(wú)空閑空間時(shí),為了保證該進(jìn)程能正常運(yùn)行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁(yè)程序或數(shù)據(jù),送磁盤的對(duì)換區(qū)中。但應(yīng)將哪個(gè)頁(yè)面調(diào)出,所以需要根據(jù)一定的算法來(lái)確定。以下分別是三個(gè)算法的設(shè)計(jì)思想。optimal:最佳置換算法。其所選擇的被淘汰頁(yè)面,將

3、是以后永不使用的,或是在最長(zhǎng)(未來(lái))時(shí)間內(nèi)不再被訪問(wèn)的頁(yè)面。fifo:先進(jìn)先出置換算法。該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,既選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面予以淘汰。lru:最近最久未使用置換算法。該算法賦予每個(gè)頁(yè)面一個(gè)訪問(wèn)字段,用來(lái)記錄一個(gè)頁(yè)面自上次被訪問(wèn)以來(lái)所經(jīng)歷的時(shí)間數(shù)組flagpsize,當(dāng)須淘汰一個(gè)頁(yè)面時(shí),選擇現(xiàn)有頁(yè)面中其flagpsize數(shù)組中值最大的給予淘汰。源代碼如下:#include#include#include#define bsize 3 /物理塊大小#define psize 8 /進(jìn)程大小int phbbsize=0; /物理塊標(biāo)號(hào)int propsize=0; /進(jìn)

4、程序列號(hào)int flagbsize = 0; /進(jìn)程等待次數(shù)(存放最久未被使用的進(jìn)程標(biāo)志)int i = 0, j = 0,k = 0; /i表示進(jìn)程序列號(hào),j表示物理塊號(hào)int m = -1, n = -1; /物理塊空閑和進(jìn)程是否相同判斷標(biāo)志int max = -1,maxflag = 0; /標(biāo)記替換物理塊進(jìn)程下標(biāo)int count = 0; /統(tǒng)計(jì)頁(yè)面缺頁(yè)次數(shù)/*/隨機(jī)產(chǎn)生序列號(hào)函數(shù)/*void build()int i = 0; for(i=0; ipsize; i+) proi = 10*rand()/(rand_max+1)+1; printf(%d ,proi); printf

5、(n);/*/查找空閑物理塊/*int searchpb()for(j=0; jbsize; j+) if(phbj = 0) m = j; return m; break; return -1;/*/查找相同進(jìn)程/*int searchpro()for(j = 0; j bsize; j+) if(phbj = proi) n = j; return j; return -1;/*/初始化內(nèi)存/*void empty()for(i=0;ibsize;i+)phbi=0; count=0; /計(jì)數(shù)器置零/*/最佳置換算法/*void optimal() for(i = 0; ipsize; i

6、+) m=searchpb(); /查找空閑物理塊,返回-1則不存在空閑物理塊 n=searchpro(); /查找相同進(jìn)程,返回值-1則不存在相同進(jìn)程 if(n = -1) /不存在相同進(jìn)程 if(m != -1) /存在空閑物理塊 phbm = proi; /進(jìn)程入駐物理塊 count+; m = -1; /再度初始化m else /不存在空閑物理塊(就需給被替換的物理塊做標(biāo)記) for(int k=0; kbsize; k+) for(int j=i; jpsize; j+) if(phbk != proj) /找不到相同的進(jìn)程 flagk = 1000; /將來(lái)不會(huì)用,設(shè)置flag為一

7、個(gè)很大數(shù) else /找到相同的進(jìn)程 flagk = j; break; /找flag值最大的(就是找到要被替換的物理塊) for(j = 0; j maxflag) maxflag = flagj; /要替換的物理塊 max = j; /要替換的物理塊下標(biāo)號(hào) phbmax=proi; /置換 count+; /再度初始化flag for(j=0;jbsize;j+) flagj=0; flagmax=0; /置換完畢,初始化該標(biāo)志(以便下次判斷) max = -1; maxflag = 0; n=-1; else /存在相同的進(jìn)程 phbn = proi; /直接調(diào)入進(jìn)程 max = -1;

8、 maxflag = 0; n = -1; for(j = 0 ;j bsize; j+) printf(%d ,phbj); printf(n); printf(頁(yè)面缺頁(yè)次數(shù)為:%dn,count); printf(n);/*/先進(jìn)先出頁(yè)面置換算法/*void fifo() for(i = 0; ipsize; i+) m=searchpb(); n=searchpro();/找flag值最大的 for(j = 0; j maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同進(jìn)程 if(m != -1) /存在空閑物理塊 phbm = pro

9、i; /進(jìn)程號(hào)填入該空閑物理塊 count+; flagm = 0; for(j = 0;j = m; j+) flagj+; m = -1; else /不存在空閑物理塊 phbmax = proi; flagmax = 0; for(j = 0;j bsize; j+) flagj+; max = -1; maxflag = 0; count+; else /存在相同的進(jìn)程 phbn = proi; for(j = 0;j bsize; j+) flagj+; n = -1; for(j = 0 ;j bsize; j+) printf(%d ,phbj); printf(n); prin

10、tf(缺頁(yè)次數(shù)為:%dn,count);printf(n);/*/最久未使用算法/*void lru() for(i = 0; ipsize; i+) m=searchpb(); n=searchpro(); /找flag值最大的 for(j = 0; j maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同進(jìn)程 if(m != -1) /存在空閑物理塊 phbm = proi; count+; flagm = 0; for(j = 0;j = m; j+) flagj+; m = -1; else /不存在空閑物理塊 phbmax = pr

11、oi; flagmax = 0; for(j = 0;j bsize; j+) flagj+; max = -1; maxflag = 0; count+; /置換 else /存在相同的進(jìn)程 phbn = proi; flagn = 0; /剛進(jìn)入物理塊的進(jìn)程等待次數(shù)重設(shè) if(m != -1) /若存在空閑物理塊 flagm = 0; /進(jìn)程等待次數(shù)重設(shè) for(j = 0;j bsize; j+) flagj+; max = -1; maxflag = 0; n = -1; for(j = 0 ;j bsize; j+) printf(%d ,phbj); printf(n); prin

12、tf(頁(yè)面缺頁(yè)次數(shù)為:%dn,count); printf(n);/*/主函數(shù)/*void main()int sel;do printf(ttt-ttt);printf(ttt -歡迎進(jìn)入操作系統(tǒng)界面- ttt);printf(ttt-tttn);printf(tttttt); printf(ttt 虛擬內(nèi)存 ttt);printf(ttt-ttt); printf(ttt 1、最佳置換(optimal) ttt);printf(ttt-ttt); printf(ttt 2、先進(jìn)先出(fifo) ttt);printf(ttt-ttt); printf(ttt 3、最久未使用(lru) tt

13、t);printf(ttt-ttt);printf(ttt 4、初始化內(nèi)存 ttt);printf(ttt-ttt);printf(ttt 0、退出(exit) ttt); printf(ttttttn);printf(隨機(jī)產(chǎn)生一個(gè)進(jìn)程序列號(hào)為:n); build(); printf(請(qǐng)選擇置換算法(0/1/2/3):); scanf(%d,&sel); switch(sel) case 0:printf(ttt -再見(jiàn)!- tttn);break; case 1:printf(置換算法n);optimal();system(pause);break; case 2:printf(先進(jìn)先出算法

14、n);fifo();system(pause);break; case 3:printf(最久未使用法n);lru();system(pause);break; case 4:empty();system(pause);printf(n);break; default:printf(請(qǐng)輸入正確的選項(xiàng)號(hào)!);printf(nn);break;while(sel!=0);四、 流程圖 查找空閑物理塊流程圖查找相同進(jìn)程流程圖產(chǎn)生隨機(jī)數(shù)流程圖 查找空閑物理塊流程圖查找相同進(jìn)程流程圖最佳置換算法流程圖先進(jìn)先出置換算法流程圖 最久未使用流程圖主函數(shù)流程圖五、 軟件運(yùn)行環(huán)境及限制實(shí)驗(yàn)軟件平臺(tái):windows

15、 xp ,viso實(shí)現(xiàn)語(yǔ)言:c語(yǔ)言六、 結(jié)果輸出及分析 運(yùn)行結(jié)果截圖如下: 最佳置換算法實(shí)現(xiàn)結(jié)果輸出截圖結(jié)果分析: i=0時(shí),存在空閑塊,調(diào)入頁(yè)面直到i=3,物理塊滿,采用最佳置換算法,由于進(jìn)程9和8與物理塊的頁(yè)面相同,所以不需要調(diào)入9和8頁(yè)面;當(dāng)i=5時(shí),由于物理塊中不存在與進(jìn)程6相同的頁(yè)面,且物理塊中2最久未被使用,因此6替代2;同理,可得到以上結(jié)果。 先進(jìn)先出置換算法結(jié)果截圖結(jié)果分析: i=0到i=2物理塊存在空閑,直接調(diào)入頁(yè)面,當(dāng)i=3時(shí),物理塊滿,采用先進(jìn)先出頁(yè)面置換算法,5先進(jìn)來(lái),7替換5,如此,直至程序結(jié)束。結(jié)果分析: i=0和i=2時(shí),存在空閑物理塊,直接調(diào)入缺頁(yè)進(jìn)入內(nèi)存,i=1時(shí),由于進(jìn)程與物理塊中的進(jìn)程相同,則不調(diào)入;i=4時(shí),4替換9,如此,直至程序運(yùn)行結(jié)束。 最久未使用置換算法截圖 退出系統(tǒng)截圖七、 心得體會(huì)經(jīng)過(guò)一學(xué)期的學(xué)習(xí),對(duì)操作系統(tǒng)基礎(chǔ)知識(shí)有了一定的掌

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論