版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)3請(qǐng)求調(diào)頁(yè)存儲(chǔ)管理力式的模擬1實(shí)驗(yàn)冃的通過(guò)對(duì)頁(yè)而、頁(yè)表、地址轉(zhuǎn)換和頁(yè)而置換過(guò)程的模擬,加深對(duì)請(qǐng)求調(diào)頁(yè)系統(tǒng)的原理和實(shí)現(xiàn)過(guò) 程的理解。2實(shí)驗(yàn)內(nèi)容(1) 假設(shè)每個(gè)頁(yè)面屮可存放10條指令,分配給一作業(yè)的內(nèi)存塊數(shù)為4。(2) 模擬一作業(yè)的執(zhí)行過(guò)程。該作業(yè)共有32()條指令,即它的地址空間為32頁(yè),目前它的所 有頁(yè)都還未調(diào)入內(nèi)存。在模擬過(guò)程中,如果所訪問(wèn)的指令己經(jīng)在內(nèi)存小,則顯示其物理地址, 并轉(zhuǎn)下一條指令。如果所訪問(wèn)的指令還未裝入內(nèi)存,則發(fā)生缺頁(yè),此時(shí)需記錄缺頁(yè)的次數(shù), 并將相應(yīng)頁(yè)調(diào)入內(nèi)存。如果4個(gè)內(nèi)存塊屮均己裝入該作業(yè),則需進(jìn)行頁(yè)面置換。最后顯示其 物理地址,并轉(zhuǎn)下一條指令。在所有32()條指令執(zhí)
2、行完畢后,請(qǐng)計(jì)算并顯示作業(yè)運(yùn)行過(guò)程中 發(fā)生的缺頁(yè)率。(3) 置換算法:請(qǐng)分別考慮opt、fifo和lru算法。(4) 作業(yè)屮指令的訪問(wèn)次序按下述原則生成: 50%的指令是順序執(zhí)行的。25%的指令是均勻分布在前地址部分。25%的指令時(shí)均勻分布在后地址部分。代碼:package main dart;import java.util.arrayust;import java.util.list;import java.util.random;public class fifo private static int times=0;記錄置換內(nèi)存頁(yè)而的次數(shù)/*隨機(jī)產(chǎn)生0-319 z間的數(shù)*產(chǎn)主320條指
3、令* return包含320條指令的數(shù)組*/public static int productnumber()int order = new int320;數(shù)組存儲(chǔ)的數(shù)字表示指令random rand = new random();for(int i=0;i<320;i+)jf(i%4=0)orderi=rand.nextlnt(319); /0<=order<319else if(i%4=l)orderi=orderi-l+l; /l<=order<320else if(i%4=2)orderi= ran d.nextlnt(orderi-l);else if(
4、i%4=3)orderi=orderi-l+rand.nextlnt(320-orderi-l);return order;/*打印鏈表* param list*/public static void printlist(list<lnteger> list) for(int temt:list)system.out.print(temt+"t");system.out.pri ntln();*先進(jìn)先出算法*總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面*在實(shí)現(xiàn)的時(shí)候,記錄上一次所替換的頁(yè)而在內(nèi)存的下標(biāo),則木次要替換的位置就是 上次下標(biāo)+1的位置,并仇下標(biāo)是03循環(huán)的* param
5、 memorynum* param pagepublic static void fifochangepageflistvlnteger> memorynumjnt page)int index = fifochangepage(memorynum,page,+times);memorynum.remove(index);memorynum.add(index,page);/*返回本次替換的頁(yè)面在內(nèi)存中的位置* param memorynum* param page* param times記錄替換頁(yè)面的次數(shù),第一次替換的是內(nèi)存第0個(gè)單元* (©return*/public s
6、tatic int fifochangepage(listvlnteger> memorynumjnt page,int times) if(times=l)return 0;int index = (fifochangepage(memorynum,page,times-l)+l)%4; return index;public static void main(string args) int order = productnumber();system.out.println("320 條隨機(jī)指令數(shù):");for(int i =0;j<order.lengt
7、h;i+)system.out.print(orderi+"th);if(i+l)%10=0)system.out.pri ntln();int count=0; 記錄缺頁(yè)次數(shù)for(int i=0;i<320;i+)int page = orderi/10;if(memorynum.contains(page) 若該指令所在頁(yè)面已經(jīng)在內(nèi)存,輸出該頁(yè)面所在內(nèi)存塊的號(hào)else沒(méi)在內(nèi)存,發(fā)生缺頁(yè),需要判斷內(nèi)存塊是否存滿,if(memorynum.size()<4)內(nèi)存沒(méi)滿,直接將所需頁(yè)面調(diào)入內(nèi)存 memorynum.add(page);else內(nèi)存存滿,需要調(diào)用頁(yè)面置換算法,
8、進(jìn)行頁(yè)面置換 fifochangepage(memorynum,page); 先進(jìn)先岀算法count+;記錄缺頁(yè)次數(shù) printlist(memorynum);/打印內(nèi)存所調(diào)入頁(yè)面的情況system.out.printin(”缺頁(yè)率:m+(double)count/320);package maindart;import java.util.arraylist; import java.util.hashmap; import java.util.list;import java.util.map; import java.util.random;public class lru *隨機(jī)產(chǎn)生0
9、319 z間的數(shù)*產(chǎn)生320條指令* return包含320條指令的數(shù)紐*/public static int productnumber()int order = new int320;數(shù)組存儲(chǔ)的數(shù)字表示指令random rand = new random();for(int i=0;i<320;i+)if(j%4=0)orderi=rand.nextlnt(319); /0<=order<319else if(i%4=l)orderi=orderi-l+l; /l<=order<320else if(i%4=2)orderi= ran d.nextlnt(or
10、deri-l);else if(i%4=3) orderi=orderi-l+rand.nextlnt(320-orderi-l);return order;*打印鏈表* param list*/public static void printlist(list<lnteger> list) for(int temt:list)system.out.print(temt+"t");system.out.pri ntln();*最近最久未使用算法* param order*/public static void lruchangepage(int order)li
11、stvlnteger> memorynum = new arraylistvlnteger>(4);內(nèi)存塊int timeflag =new int-l,-l,-l,-l; 用來(lái)記錄內(nèi)存當(dāng)中各單元未被訪問(wèn)的時(shí)間值int count=0;記錄缺貝次數(shù)for(int i=0;i<320;i+)int page = orderi/10;if(memorynum.contains(page)若該指令所在頁(yè)面已經(jīng)在內(nèi)存int index = memorynum.indexof(page);timeflagindex=o;將時(shí)間變?yōu)?0else沒(méi)在內(nèi)存,發(fā)生缺頁(yè),需要判斷內(nèi)存塊是否存滿,
12、if(memorynum.size()<4)內(nèi)存沒(méi)滿,肓接將所需頁(yè)面調(diào)入內(nèi)存將沒(méi)有命屮的所有頁(yè)面的時(shí)間加一for(int in=0;inv4;in+)if(timeflagin!=-l)timeflagin+=l;將page加入內(nèi)存并將時(shí)間置為0memorynum.add(page);timeflagmemorynum.indexof(page)=0;else內(nèi)存存滿,需要調(diào)用頁(yè)面置換算法,進(jìn)行頁(yè)血置int maxln=-l;/記錄擁有最大時(shí)間值的標(biāo)記的卜標(biāo)int maxt=-l;/記錄最大的時(shí)間值for(int in=0;in<4;in+)/找出內(nèi)存中時(shí)間值最大的進(jìn)行替換 if(
13、timeflagin>maxt)maxt=timeflagi n;maxln 二 in;memorynum.remove(maxln); memorynum.add(maxl n,page);timeflagmaxl n=0;將沒(méi)有命屮的所有頁(yè)而的時(shí)間加一for(int in=0;inv4;in+)if(in!=maxln)timeflagin+=l;count+;記錄缺頁(yè)次數(shù)printlist(memorynum);打印內(nèi)存所調(diào)入頁(yè)血的情況system.out.println(n缺頁(yè)率:h+(double)count/320);public static void main(strin
14、g args) int order = productnumber();system.out.println("320 條隨機(jī)指令數(shù):”); for(int i =0;i<order.length;i+)system.out.print(orderi+“t”);if(i+l)%10=0)system.out.printl n();lruchangepage(order); package main dart;import java.util.arrayust;import java.util.list;import java.util.random;public class o
15、ptimal /*隨機(jī)產(chǎn)生0319 z間的數(shù)*產(chǎn)生320條指令* return包含320條指令的數(shù)紐*/public static int productnumber()int order = new int320;數(shù)組存儲(chǔ)的數(shù)了表示指令random rand = new random();forfint i=0;i<320;i卄)jf(j%4=0)orderi=rand.nextlnt(319); /0<=order<319else if(i%4=l)orderi=orderi-l+l; /l<=order<320else if(i%4=2)orderi= ra
16、nd.n extl nt(orderi-2);else if(i%4=3)orderi=orderi-l+rand.nextlnt(320-orderi-l); return order;* param order 320條指令數(shù)組* return返冋一個(gè)鏈表,依次保存著320條指令每條指令所在的頁(yè)而 */public static listvlnteger> pageseqfint order)listvlnteger> pageseq = new arraylistvlnteger>();for(i nt temp:order)pageseq.add(temp/10);r
17、eturn pageseq;*打印鏈表* param list*/public static void printlist(list<lnteger> list) for(int temt:list)system.out.printftemt+v);system.out.println();*最佳置換算法*根據(jù)肖前已經(jīng)在內(nèi)存屮的頁(yè)面在之后被需要的先后進(jìn)行置換* param pageseq整個(gè)320條指令,從頭到尾所需要的頁(yè)面* param memorynum 己滿的內(nèi)存空間* param page 等待被調(diào)入內(nèi)存的頁(yè)面*/public static void optimalcha
18、ngepage(list vln teger> pageseqj nt start, li st vln teger> memorynum,int page)int maxseq=-l,index=0;forfint pagenum:memorynum) 遍歷內(nèi)存for(int i=start;i<pageseq.size();i+)if(pagenum=pageseq.get(i)if(i>maxseq)maxseq=i;break;訐(maxseq>-l)/maxseq=-l說(shuō)明內(nèi)存當(dāng)屮的四個(gè)頁(yè)面在將來(lái)都不會(huì)再被使丿kl, 這吋默認(rèn)將內(nèi)存塊中的第一個(gè)頁(yè)而置換出
19、index = memorynum.indexof(pageseq.get(maxseq); 記錄將要被置換的 那個(gè)頁(yè)面所在內(nèi)存位置memorynum.remove(index); 將內(nèi)存中將來(lái)最久被使用的頁(yè)|fli刪除 memorynum.add(index, page);將需要調(diào)入的頁(yè)面加入內(nèi)存public static void main(string args) int order = productnumberf);system.out.println("320 條隨機(jī)指令數(shù):”);for(int i =0;i<order.length;i+)system.out.print(orderi+"th);if(i+l)%10=0)system.out.println();list<lnteger> pageseq = pageseq(order);依次存放著指令所在的頁(yè)而號(hào)list<lnteger> memorynum= new arraylist<lnteger>(4); 內(nèi)存塊存儲(chǔ)的頁(yè)血int count=0;記錄缺頁(yè)次數(shù)for(int i
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代農(nóng)業(yè)裝備在種植業(yè)中的技術(shù)優(yōu)勢(shì)
- 現(xiàn)代醫(yī)療技術(shù)中的人才培養(yǎng)與團(tuán)隊(duì)建設(shè)
- 校園文化與企業(yè)文化的對(duì)接與互鑒
- 14《母雞》說(shuō)課稿-2023-2024學(xué)年統(tǒng)編版四年級(jí)語(yǔ)文下冊(cè)
- 24 《古人談讀書》說(shuō)課稿-2024-2025學(xué)年語(yǔ)文五年級(jí)上冊(cè)統(tǒng)編版
- 6 傳統(tǒng)游戲我會(huì)玩2023-2024學(xué)年二年級(jí)下冊(cè)道德與法治同步說(shuō)課稿(統(tǒng)編版)
- 14 圓明園的毀滅 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文五年級(jí)上冊(cè)統(tǒng)編版
- 5 樹(shù)和喜鵲(說(shuō)課稿)-2023-2024學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)下冊(cè)
- 17《爬天都峰》說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文四年級(jí)上冊(cè)
- 2023三年級(jí)英語(yǔ)下冊(cè) Unit 4 Food and Restaurants Lesson 21 In the Restaurant說(shuō)課稿 冀教版(三起)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 光伏十林業(yè)可行性報(bào)告
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 骨科手術(shù)糾紛案例分析課件
- 2022年廣西高考英語(yǔ)真題及答案(全國(guó)甲卷)
- 安全生產(chǎn)責(zé)任清單(加油站)
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫的程序(動(dòng)物防疫與檢疫技術(shù))
- 煤礦復(fù)工復(fù)產(chǎn)專項(xiàng)安全風(fēng)險(xiǎn)辨識(shí)
- DB42T 1049-2015房產(chǎn)測(cè)繪技術(shù)規(guī)程
- 《民航服務(wù)溝通技巧》教案第8課重要旅客服務(wù)溝通
- 學(xué)校副校長(zhǎng)述職報(bào)告PPT模板下載
評(píng)論
0/150
提交評(píng)論