版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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)練,通過課程設(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)過程,并計(jì)算訪問命中率。要求設(shè)計(jì)主界面以靈活選擇某算法,且以下算法都要實(shí)現(xiàn):1、先進(jìn)先出算法(FIFO)2、最近最久未使用算法(LRU)3、最佳置換算法(OPT)三、 實(shí)現(xiàn)原理設(shè)計(jì)思想: 在進(jìn)程運(yùn)行過程中,若其所要訪問的頁面不在內(nèi)存需把它們調(diào)入內(nèi)存,但內(nèi)存已無空閑空間時(shí),為了保證該進(jìn)程能正常運(yùn)行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù),送磁盤的對(duì)換區(qū)中。但應(yīng)將哪個(gè)頁面調(diào)出,所以需要根據(jù)一定的算法來確定。以下分別是三個(gè)算法的設(shè)計(jì)思想。OPTIMAL:最佳置換算法。其所選擇的被淘汰頁面,將
3、是以后永不使用的,或是在最長(未來)時(shí)間內(nèi)不再被訪問的頁面。FIFO:先進(jìn)先出置換算法。該算法總是淘汰最先進(jìn)入內(nèi)存的頁面,既選擇在內(nèi)存中駐留時(shí)間最久的頁面予以淘汰。LRU:最近最久未使用置換算法。該算法賦予每個(gè)頁面一個(gè)訪問字段,用來記錄一個(gè)頁面自上次被訪問以來所經(jīng)歷的時(shí)間數(shù)組flagpsize,當(dāng)須淘汰一個(gè)頁面時(shí),選擇現(xiàn)有頁面中其flagpsize數(shù)組中值最大的給予淘汰。源代碼如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#define bsize 3 /物理塊大小#define psize
4、8 /進(jìn)程大小int phbbsize=0; /物理塊標(biāo)號(hào)int propsize=0; /進(jìn)程序列號(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ì)頁面缺頁次數(shù)/*/隨機(jī)產(chǎn)生序列號(hào)函數(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;/*/查找相同進(jìn)程/*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; /計(jì)數(shù)器置零/*/最佳置換算法/*void Optimal() for(i = 0; i<psize; i+) 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; k
7、<bsize; k+) for(int j=i; j<psize; j+) if(phbk != proj) /找不到相同的進(jìn)程 flagk = 1000; /將來不會(huì)用,設(shè)置flag為一個(gè)很大數(shù) else /找到相同的進(jìn)程 flagk = j; break; /找flag值最大的(就是找到要被替換的物理塊) for(j = 0; j < bsize;j+) if(flagj>maxflag) maxflag = flagj; /要替換的物理塊 max = j; /要替換的物理塊下標(biāo)號(hào) phbmax=proi; /置換 count+; /再度初始化flag for(j=
8、0;j<bsize;j+) flagj=0; flagmax=0; /置換完畢,初始化該標(biāo)志(以便下次判斷) max = -1; maxflag = 0; n=-1; else /存在相同的進(jìn)程 phbn = proi; /直接調(diào)入進(jìn)程 max = -1; maxflag = 0; n = -1; for(j = 0 ;j < bsize; j+) printf("%d ",phbj); printf("n"); printf("頁面缺頁次數(shù)為:%dn",count); printf("n");/*/先
9、進(jìn)先出頁面置換算法/*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) /不存在相同進(jìn)程 if(m != -1) /存在空閑物理塊 phbm = proi; /進(jìn)程號(hào)填入該空閑物理塊 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 /存在相同的進(jìn)程 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) /不存在相同進(jìn)程 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 /存在相同的進(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+) p
13、rintf("%d ",phbj); printf("n"); printf("頁面缺頁次數(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"
14、);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) ttt");printf("ttt-ttt");printf("ttt 4、初始化內(nèi)存 ttt");printf("ttt-ttt&
15、quot;);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 -再見!- tttn");break; case 1:printf("置換算法n");Optimal();syste
16、m("pause");break; case 2:printf("先進(jìn)先出算法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("n
17、n");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 xp ,Viso實(shí)現(xiàn)語言:C語言六、 結(jié)果輸出及分析 運(yùn)行結(jié)果截圖如下: 最佳置換算法實(shí)現(xiàn)結(jié)果輸出截圖結(jié)果分析: i=0時(shí),存在空閑塊,調(diào)入頁面直到i=3,物理塊滿,采用最佳置換算法,由于進(jìn)程9和8與物理塊的頁面相同,所以不需要調(diào)入9和8頁面;當(dāng)i=5時(shí),由于物理塊中不存在與進(jìn)程6相同的頁面,且物理塊中2最久未被使用,因此6替代2;同理,可得到以上結(jié)果。 先進(jìn)先出置換算法結(jié)果截圖結(jié)果分析: i=0到i=2物理塊存在空閑,直接調(diào)入頁面,當(dāng)i=3時(shí),物理塊滿,采用先進(jìn)先出頁面置換算法,5先進(jìn)來,7替換5,如此,直至程序結(jié)束。結(jié)果分析: i=0和i=2時(shí),存在空閑物理塊,直接調(diào)入缺頁進(jìn)入內(nèi)存,i=1時(shí),由于進(jìn)程與物理塊中的進(jìn)程相同,則不調(diào)入;i=4時(shí),4替換9,如此,直至程序運(yùn)行結(jié)束。 最久未使用置換算法截圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高科技項(xiàng)目內(nèi)部承包合同示范文本4篇
- 二零二四年度信息技術(shù)咨詢公司專家派遣與服務(wù)合同3篇
- 2025年度車輛牌照租賃電子化服務(wù)平臺(tái)建設(shè)合同4篇
- 2024版建設(shè)工程施工合同工程概況
- 2025至2030年中國蜂蜜檸檬糖數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國純銅鑄件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國PE/PO/PP袋數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國耐腐蝕零件市場(chǎng)調(diào)查研究報(bào)告
- 2025年度個(gè)人自用住房買賣合同規(guī)范文本協(xié)議2篇
- 2025年度民間借貸金融科技產(chǎn)品測(cè)試與認(rèn)證合同4篇
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫及答案解析
- 2024年中國科學(xué)技術(shù)大學(xué)少年創(chuàng)新班數(shù)學(xué)試題真題(答案詳解)
- 家長心理健康教育知識(shí)講座
- GB/T 292-2023滾動(dòng)軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報(bào)告表
- 民用無人駕駛航空器實(shí)名制登記管理規(guī)定
- 北京地鐵6號(hào)線
- 航空油料計(jì)量統(tǒng)計(jì)員(初級(jí))理論考試復(fù)習(xí)題庫大全-上(單選題匯總)
- 諒解書(標(biāo)準(zhǔn)樣本)
評(píng)論
0/150
提交評(píng)論