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

下載本文檔

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

文檔簡介

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

2、的個(gè)數(shù) */ public static int N ; /* * 內(nèi)存塊數(shù)組 */ Object array = new ObjectN; /* * 要訪問的頁面數(shù)組 */ public static intvisit; private int size; /* * 內(nèi)存是非空為否 * return */ public boolean isEmpty() if(0 = size) return true; else return false; /* * 內(nèi)存是非空滿 * return */ public boolean isFulled() if(size >= N) return t

3、rue; else return false; /* * 元素(頁框)的個(gè)數(shù) * return */ public int size() return size; /* * 查找元素o在數(shù)組中的位置 * param o * return */ public int indexOfElement(Object o) for(int i=0; i<N; i+) if(o = arrayi) return i; return -1; /* * 頁面轉(zhuǎn)換 * param obj */ public Object trans(Object obj) Object e = null; int t =

4、 0; if(indexOfElement(obj) != -1) t = indexOfElement(obj); for(int i=t; i<size-1; i+) arrayi = arrayi+1; arraysize-1 = obj; else if(!isFulled() arraysize = obj; size +; else for(int i=0; i<size-1; i+) arrayi = arrayi+1; arraysize-1 = obj; if( -1 = t) return null; else return arrayt; /* * 輸出內(nèi)存區(qū)

5、中的各數(shù)據(jù) */ public void showMemoryBlock() for(int i=0; i<size; i+) System.out.print(arrayi + " "); /* * 清空隊(duì)列(頁框) */ public void clear() /* * param args */ public static void main(String args) Scanner sc = new Scanner(System.in); System.out.print("請輸入內(nèi)存塊的數(shù)量:"); N=sc.nextInt(); Sys

6、tem.out.print("請輸入總頁面數(shù)目:"); int n=sc.nextInt(); visit=new intn; System.out.println("請輸入各個(gè)頁的頁面號碼:"); for(int i=0;i<n;i+) visiti=sc.nextInt(); FIFO fifo = new FIFO(); for(int i=0; i<visit.length; i+) fifo.trans(visiti); fifo.showMemoryBlock(); System.out.println(); 運(yùn)行結(jié)果:2. LU

7、R算法實(shí)現(xiàn)代碼以及運(yùn)行結(jié)果:public class LRU static int volum;/ 棧的容量 static List<Integer>list=new LinkedList<Integer>(); /鏈表用來模擬棧存放頁面 static intvisit;/要訪問的頁面數(shù)組 static int count=0;/記錄缺頁次數(shù) public static void main(String args) Scanner sc = new Scanner(System.in); System.out.print("請輸入棧的容量:"); v

8、olum=sc.nextInt(); System.out.print("請輸入總頁面數(shù)目:"); int n=sc.nextInt(); visit=new intn; System.out.println("請輸入各個(gè)頁的頁面號碼:"); for(int i=0;i<n;i+) visiti=sc.nextInt(); sLRU();/調(diào)用最近最久未使用算法 System.out.println("置換頁面的數(shù)目為:"+count); public static void sLRU() int index=0; while(

9、index<visit.length) boolean flag=false; if(list.size()<=volum) for(int i=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)滿了,且該頁面

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

溫馨提示

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

評論

0/150

提交評論