模擬面置換算法FIFOLRU的實現(xiàn)_第1頁
模擬面置換算法FIFOLRU的實現(xiàn)_第2頁
模擬面置換算法FIFOLRU的實現(xiàn)_第3頁
模擬面置換算法FIFOLRU的實現(xiàn)_第4頁
模擬面置換算法FIFOLRU的實現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗報告五實驗名稱:模擬頁面置換算法FIFOLRU的實現(xiàn)日期:2015-12-9班級:13級計科學(xué)號:姓名:實驗?zāi)康囊涣私忭撁嬷脫Q的概念,理解頁面置換的算法加深對頁面置換算法的理解。二、實驗內(nèi)容Java編程語言實現(xiàn)FIFO和LUR頁面算法。三、項目要求與分析FIFO算法當(dāng)需要置換頁面時,主要通過置換最早進入內(nèi)存的頁面從而達到先進先出的目的。LRU算法當(dāng)需要置換頁面時,主要通過置換進入內(nèi)存中最久沒有被訪問的頁面而達到最近最久未使用的目的。程序中可以通過標(biāo)志位進行記錄。四、具體實現(xiàn)1. FIFO算法實現(xiàn)代碼以及運行結(jié)果:publicclassFIFO/*內(nèi)存塊的個數(shù)*/publicstaticin

2、t/*內(nèi)存塊數(shù)組N;*/Object口/*arraynewObjectN;*要訪問的頁面數(shù)組*/publicstaticintprivateintsize;/*內(nèi)存是非空為否return口visit;*/publicifbooleanisEmpty()(0=size)returnelsetrue;returnfalse;/*內(nèi)存是非空滿return*/publicbooleanisFulled()if(size>=N)returntrueelsereturnfalse;/*/元素(頁框)的個數(shù)returnpublicintsize()returnsize;o在數(shù)組中的位置/*查找元素,p

3、aramoreturn*/publicintindexOfElement(Objecto)for(inti=0;i<N;i+)if(o=arrayi)returni;/*return-1;頁面轉(zhuǎn)換*/paramobjpublicObjecttrans(Objectobj)Objecte=null;intt=0;if(indexOfElement(obj)!=-1)t=indexOfElement(obj);for(inti=t;i<size-1;i+)arrayi=arrayi+1;arraysize-1=obj;elseif(!isFulled()arraysize=obj;si

4、ze+;elsefor(inti=0;i<size-1;i+)arrayi=arrayi+1;arraysize-1=obj;if(-1=t)returnnull;elsereturnarrayt;/*輸出內(nèi)存區(qū)中的各數(shù)據(jù)*/publicvoidshowMemoryBlock()for(inti=0;i<size;i+)System.out.print(arrayi+"");/*清空隊列(頁框)*/publicvoidclear()/*paramargs*/publicstaticvoidmain(String口args)Scannersc=newScanner

5、(System.in);System.out.print("請輸入內(nèi)存塊的數(shù)量:");N=sc.nextInt();System.out.print("請輸入總頁面數(shù)目:");intn=sc.nextInt();visit=newintn;System.out.println("請輸入各個頁的頁面號碼:");for(inti=0;i<n;i+)visiti=sc.nextInt();FIFOfifo=newFIFO();for(inti=0;i<visit.length;i+)fifo.trans(visiti);fifo

6、.showMemoryBlock();System.out.println();運行結(jié)果:2.LUR算法實現(xiàn)代碼以及運行結(jié)果:publicclassLRUstaticintvolum;/棧的容量staticList<Integer>list=newLinkedList<Integer>();/鏈表用來模擬棧存放頁面staticintvisit;/要訪問的頁面數(shù)組staticintcount=0;/記錄缺頁次數(shù)publicstaticvoidmain(String口args)Scannersc=newScanner(System.in);System.out.print(

7、"請輸入棧的容量:");volum=sc.nextInt();System.out.print("請輸入總頁面數(shù)目:");intn=sc.nextInt();visit=newintn;System.out.println("請輸入各個頁的頁面號碼:"力for(inti=0;i<n;i+)visiti=sc.nextInt();sLRU();/調(diào)用最近最久未使用算法System.out.println("置換頁面的數(shù)目為:"+count);publicstaticvoidsLRU()intindex=0;wh

8、ile(index<visit.length)booleanflag=false;if(list.size()<=volum)for(inti=0;i<list.size();i+)if(int)(list.get(i)=visitindex)list.remove(i);/先刪除list.add(visitindex);/再添加到尾部flag=true;break;if(!flag)if(list.size()<volum)/如果棧未滿,而且此頁面沒有在棧中,就將它入棧list.add(visitindex);else/如果棧已經(jīng)滿了,且該頁面號碼沒有在棧中,就把棧底

9、元素刪除,將新頁插入inttemp=list.get(0);list.remove(0);/最開始一個換出list.add(visitindex);/加到末尾count+;System.out.println("開始換頁了,將棧底的"+temp+"換出");System.out.println("這也是沒有辦法的事情,畢竟棧是有限的");System.out.print("經(jīng)過第"+(index+1)+"個頁面的棧內(nèi)容為");for(intk=0;k<list.size();k+)System.out.print(list.get(k)+"");System.out.println();index+;運行結(jié)果:5、 所遇問題與解決方法問題:針對于FIFO算法定義選擇在內(nèi)存中駐留時間最久的頁面予以淘汰,對于內(nèi)存中的駐留時間理解復(fù)雜了不知道如何下手。解決方案:我們只需要設(shè)置一個先進先出隊列就可以。最先進入內(nèi)存的頁面最早被轉(zhuǎn)換出去。6、 實驗總結(jié)1.通過

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論