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

下載本文檔

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

文檔簡介

1、操作系統(tǒng)原理及應(yīng)用課程設(shè)計報告虛擬存儲區(qū)和內(nèi)存工作區(qū) 學(xué)院(系): 計算機科學(xué)與工程學(xué)院 班 級: 107030702 學(xué)號 26 學(xué)生姓名: 許永順 指導(dǎo)教師: 周 敏 時間: 從 2009 年 12 月21日 到 2009 年12月26日 目錄一、課程設(shè)計的目的 3二、課程設(shè)計內(nèi)容及要求3三、實現(xiàn)原理3四、流程圖14五、軟件運行環(huán)境及限制23六、結(jié)果輸出及分析23七、心的體會28八、參考文獻28虛擬存儲器和內(nèi)存工作區(qū)一、 課程設(shè)計的目的本課程設(shè)計是學(xué)生學(xué)習(xí)完計算機操作系統(tǒng)課程后,進行的一次全面的綜合訓(xùn)練,通過課程設(shè)計,讓學(xué)生更好地掌握操作系統(tǒng)的原理及實現(xiàn)方法,加深對操作系統(tǒng)基礎(chǔ)理論和重要算

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

3、是以后永不使用的,或是在最長(未來)時間內(nèi)不再被訪問的頁面。FIFO:先進先出置換算法。該算法總是淘汰最先進入內(nèi)存的頁面,既選擇在內(nèi)存中駐留時間最久的頁面予以淘汰。LRU:最近最久未使用置換算法。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經(jīng)歷的時間數(shù)組flagpsize,當須淘汰一個頁面時,選擇現(xiàn)有頁面中其flagpsize數(shù)組中值最大的給予淘汰。源代碼如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#define bsize 3 /物理塊大小#define psize

4、8 /進程大小int phbbsize=0; /物理塊標號int propsize=0; /進程序列號int flagbsize = 0; /進程等待次數(shù)(存放最久未被使用的進程標志)int i = 0, j = 0,k = 0; /i表示進程序列號,j表示物理塊號int m = -1, n = -1; /物理塊空閑和進程是否相同判斷標志int max = -1,maxflag = 0; /標記替換物理塊進程下標int count = 0; /統(tǒng)計頁面缺頁次數(shù)/*/隨機產(chǎn)生序列號函數(shù)/*void build()int i = 0; for(i=0; i<psize; i+) proi =

5、 10*rand()/(RAND_MAX+1)+1; printf("%d ",proi); printf("n");/*/查找空閑物理塊/*int searchpb()for(j=0; j<bsize; j+) if(phbj = 0) m = j; return m; break; return -1;/*/查找相同進程/*int searchpro()for(j = 0; j < bsize; j+) if(phbj = proi) n = j; return j; return -1;/*/初始化內(nèi)存/*void empty()for

6、(i=0;i<bsize;i+)phbi=0; count=0; /計數(shù)器置零/*/最佳置換算法/*void Optimal() for(i = 0; i<psize; i+) m=searchpb(); /查找空閑物理塊,返回-1則不存在空閑物理塊 n=searchpro(); /查找相同進程,返回值-1則不存在相同進程 if(n = -1) /不存在相同進程 if(m != -1) /存在空閑物理塊 phbm = proi; /進程入駐物理塊 count+; m = -1; /再度初始化m else /不存在空閑物理塊(就需給被替換的物理塊做標記) for(int k=0; k

7、<bsize; k+) for(int j=i; j<psize; j+) if(phbk != proj) /找不到相同的進程 flagk = 1000; /將來不會用,設(shè)置flag為一個很大數(shù) else /找到相同的進程 flagk = j; break; /找flag值最大的(就是找到要被替換的物理塊) for(j = 0; j < bsize;j+) if(flagj>maxflag) maxflag = flagj; /要替換的物理塊 max = j; /要替換的物理塊下標號 phbmax=proi; /置換 count+; /再度初始化flag for(j=

8、0;j<bsize;j+) flagj=0; flagmax=0; /置換完畢,初始化該標志(以便下次判斷) max = -1; maxflag = 0; n=-1; else /存在相同的進程 phbn = proi; /直接調(diào)入進程 max = -1; maxflag = 0; n = -1; for(j = 0 ;j < bsize; j+) printf("%d ",phbj); printf("n"); printf("頁面缺頁次數(shù)為:%dn",count); printf("n");/*/先

9、進先出頁面置換算法/*void FIFO() for(i = 0; i<psize; i+) m=searchpb(); n=searchpro();/找flag值最大的 for(j = 0; j < bsize;j+) if(flagj>maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同進程 if(m != -1) /存在空閑物理塊 phbm = proi; /進程號填入該空閑物理塊 count+; flagm = 0; for(j = 0;j <= m; j+) flagj+; m = -1; else /不存在

10、空閑物理塊 phbmax = proi; flagmax = 0; for(j = 0;j < bsize; j+) flagj+; max = -1; maxflag = 0; count+; else /存在相同的進程 phbn = proi; for(j = 0;j < bsize; j+) flagj+; n = -1; for(j = 0 ;j < bsize; j+) printf("%d ",phbj); printf("n"); printf("缺頁次數(shù)為:%dn",count);printf(&qu

11、ot;n");/*/最久未使用算法/*void LRU() for(i = 0; i<psize; i+) m=searchpb(); n=searchpro(); /找flag值最大的 for(j = 0; j < bsize;j+) if(flagj>maxflag) maxflag = flagj; max = j; if(n = -1) /不存在相同進程 if(m != -1) /存在空閑物理塊 phbm = proi; count+; flagm = 0; for(j = 0;j <= m; j+) flagj+; m = -1; else /不存在

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

13、rintf("%d ",phbj); printf("n"); printf("頁面缺頁次數(shù)為:%dn",count); printf("n");/*/主函數(shù)/*void main()int sel;do printf("ttt-ttt");printf("ttt -歡迎進入操作系統(tǒng)界面- ttt");printf("ttt-tttn");printf("tttttt"); printf("ttt 虛擬內(nèi)存 ttt"

14、);printf("ttt-ttt"); printf("ttt 1、最佳置換(Optimal) ttt");printf("ttt-ttt"); printf("ttt 2、先進先出(FIFO) ttt");printf("ttt-ttt"); printf("ttt 3、最久未使用(LRU) ttt");printf("ttt-ttt");printf("ttt 4、初始化內(nèi)存 ttt");printf("ttt-ttt&

15、quot;);printf("ttt 0、退出(Exit) ttt"); printf("ttttttn");printf("隨機產(chǎn)生一個進程序列號為:n"); build(); printf("請選擇置換算法(0/1/2/3):"); scanf("%d",&sel); switch(sel) case 0:printf("ttt -再見!- tttn");break; case 1:printf("置換算法n");Optimal();syste

16、m("pause");break; case 2:printf("先進先出算法n");FIFO();system("pause");break; case 3:printf("最久未使用法n");LRU();system("pause");break; case 4:empty();system("pause");printf("n");break; default:printf("請輸入正確的選項號!");printf("n

17、n");break;while(sel!=0);四、 流程圖 查找空閑物理塊流程圖查找相同進程流程圖產(chǎn)生隨機數(shù)流程圖 查找空閑物理塊流程圖查找相同進程流程圖最佳置換算法流程圖先進先出置換算法流程圖 最久未使用流程圖主函數(shù)流程圖五、 軟件運行環(huán)境及限制實驗軟件平臺:Windows xp ,Viso實現(xiàn)語言:C語言六、 結(jié)果輸出及分析 運行結(jié)果截圖如下: 最佳置換算法實現(xiàn)結(jié)果輸出截圖結(jié)果分析: i=0時,存在空閑塊,調(diào)入頁面直到i=3,物理塊滿,采用最佳置換算法,由于進程9和8與物理塊的頁面相同,所以不需要調(diào)入9和8頁面;當i=5時,由于物理塊中不存在與進程6相同的頁面,且物理塊中2最久未被使用,因此6替代2;同理,可得到以上結(jié)果。 先進先出置換算法結(jié)果截圖結(jié)果分析: i=0到i=2物理塊存在空閑,直接調(diào)入頁面,當i=3時,物理塊滿,采用先進先出頁面置換算法,5先進來,7替換5,如此,直至程序結(jié)束。結(jié)果分析: i=0和i=2時,存在空閑物理塊,直接調(diào)入缺頁進入內(nèi)存,i=1時,由于進程與物理塊中的進程相同,則不調(diào)入;i=4時,4替換9,如此,直至程序運行結(jié)束。 最久未使用置換算法截圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論