資源簡介
操作系統頁面置換模擬,功能簡單實用,思路清晰,內含報告。

代碼片段和文件信息
package?osd;
import?java.io?.BufferedInputStream;
import?java.util.*;
public?class?page_replacement?{
????private?int?n;//內儲頁框
????private?int?m;//訪問次數
????private?int?F;//沒能直接找到的次數(F/m)為缺頁率
????private?Listlist=null;//訪問地址走向
????private?Mapmap=null;//訪問內儲頁框
???????public?page_replacement(){
???? ?F=0;
???? ?map=new?HashMap();//存儲每一個內儲頁框所存的內容?
???? ?Scanner?cin=new?Scanner(new?BufferedInputStream(System.in));
???? ?System.out.println(“請輸入用戶訪問頁面號序列:“);//獲得訪問頁面號序列
???? ?list=new?ArrayList();
???? ?String?s=cin.nextLine();
???? ?String?[]s1=s.split(“?“);
???? ?m=s1.length;
???? ?for?(int?i=0;i ???? ?list.add(Integer.valueOf(s1[i]));//將地址碼逐個放入表中
???? ?System.out.println(“請輸入內儲葉框數量:“);
???? ?n=cin.nextInt();?
???? ?menu();
???? ?switch(cin.nextInt()){
?????????case?1:OPT();break;
?????????case?2:FIFO();break;
?????????case?3:LRU();break;
??????????}
?????????cin.close();
???}
???public?void?menu(){//選擇頁面置換算法
??????System.out.println(“****?選擇最佳置換算法請按1?**********“);
??????System.out.println(“****?選擇先進先出置換算法請按2?*******“);
??????System.out.println(“****?選擇最近最遠未使用置換算法請按3?***“);
??????}
???public?void?OPT(){
????????int?j;
????????for?(int?i=0;i ????????{
???????? int?k=list.get(i);//待處理元素
???????? if?(!map.containsValue(k)){
???????? F++;
???????? if?(map.size() ???????? int?temp=map.size();
???????? map.put(temp?k);
???????? }
???????? else{//如果裝滿了
???????? int?index=0;//把哪個位置的淘汰出去
???????? int?min=0;//初始最長長度
???????? for?(int?t=0;t ???????? {
???????? for?(j=i+1;j ???????? if?(list.get(j)==map.get(t)){//第一次找到
???????? if?(j-i>min){
???????? index=t;//更新值
???????? min=j-i;
???????? }
???????? break;
???????? }
???????? ????}
???????? if?(j==m){//如果到最后
???????? index=t;
???????? min=j-i;
???????? }????????????????????
???????? }
???????? map.remove(index);
???????? map.put(indexk);//修改表內元素
???????? }
???????? }
???????? System.out.println(map);
????????}
???????System.out.println(“缺頁中斷次數為:“+F);
???????System.out.println(“頁面置換次數為:“+(F-n));
???????System.out.println(“缺頁率為:“+F*1.0/m);
?}
???public?void?FIFO(){
?Queueq=new?linkedList();
??for?(int?i=0;i ??????{
?????? int?k=list.get(i);//待處理元素
???? if?(!map.containsValue(k)){
???? F++;
???? if?(map.size() ???? int?temp=map.size();
???? map.put(temp?k);
???? q.offer(temp);
???? }
???? else
???? {
???? ????int?temp=q.poll();//排除的元素位置
???? map.remove(temp);
???? map.put(tempk);
???? q.offer(temp);
????
???? ?????}
???? System.out.println(map);
???? }
????}
??????System.out.println(“缺頁中斷次數為:“+F);
??????System.out.println(“頁面置換次數為:“+(F-n));
??System.out.println(“缺頁率為:“+F*1.0/m);
???}
???public?void?LRU(){
?Listlinkedlist=new?linkedLis
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????323568??2018-01-11?19:33??操作系統20152027頁面置換模擬\20152027+田創世+頁面置換模擬.doc
?????文件???????4363??2018-01-11?18:33??操作系統20152027頁面置換模擬\OS\src\osd\page_replacement.java
?????目錄??????????0??2018-10-06?23:59??操作系統20152027頁面置換模擬\OS\src\osd
?????目錄??????????0??2018-10-06?23:59??操作系統20152027頁面置換模擬\OS\src
?????目錄??????????0??2018-10-06?23:59??操作系統20152027頁面置換模擬\OS
?????目錄??????????0??2018-10-06?23:59??操作系統20152027頁面置換模擬
-----------?---------??----------?-----??----
???????????????327931????????????????????6
評論
共有 條評論