分頁管理實驗報告_第1頁
分頁管理實驗報告_第2頁
分頁管理實驗報告_第3頁
分頁管理實驗報告_第4頁
分頁管理實驗報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2015-2016學年第二學期操 作 系 統(tǒng) 課 程實 驗 設(shè) 計 報 告班級 網(wǎng)絡(luò)2班學號 201414620207姓名 韓金鋮成績指導教師 于復興精選范本,供參考!1、實驗題目:1)模擬請求分頁存儲管理中的硬件地址轉(zhuǎn)換和產(chǎn)生卻頁中斷的過程。2)采用先進先出(或LRU)算法實現(xiàn)分頁管理的缺頁調(diào)度。2、實驗目的:1)通過實驗模擬請求分頁存儲管理中的硬件地址轉(zhuǎn)換和產(chǎn)生卻頁中斷幫助理解在分頁式存儲管理中怎樣虛擬存儲器。2)通過采用先進先出(或LRU)算法實現(xiàn)分頁管理的缺頁調(diào)度幫助理解和掌握模擬分頁式虛擬存儲管理的缺頁中斷,幫助自己對請求分頁管理的概念有一個清楚的理解。3、程序設(shè)計及實現(xiàn)過程:1)請求分頁儲存管理是把作業(yè)的全部信息存在磁盤上,當作業(yè)被選中時,可把作業(yè)的開始幾頁先裝入主存并啟動運行。為此,在為作業(yè)建立頁表時,應(yīng)說明哪些頁已在主存,哪些頁尚未裝入主存,頁表格式為:頁號 標志 主存塊號 外存地址其中,標志表示對應(yīng)頁是否已經(jīng)裝入主存, “標志=0”表示該頁尚未裝入主存, “標志1”表示該頁已在主存。主存塊號表示已裝入主存的頁所占用的塊號。外存地址表示該頁在外存的地址。2)作業(yè)執(zhí)行完時,指令中的邏輯地址指出了參加運算的操作數(shù)存放的頁號和單元號,硬件地址轉(zhuǎn)換機構(gòu)按頁號查頁表,若該頁對應(yīng)的標志為“1”,則表示該頁已在主存。根據(jù)關(guān)系式:絕對地址=塊號*塊長+單元號。計算出欲訪問的主存單元地址, 將塊長設(shè)成 2的整次冪,可把塊號作為地址寄存器的高位部分,單元號作為低位部分。 兩個拼接形成絕對地址。 按計算出的絕對地址取操作數(shù),完成一條指令的執(zhí)行。若訪問的頁對應(yīng)標志為“ 0”,則表示不在主存, 這時硬件發(fā)缺頁中斷信號,由操作系統(tǒng)按頁表中的該頁對應(yīng)的外存地址把該頁裝入主存后,執(zhí)行該指令。(3)設(shè)計一個“地址變換”程序來模擬硬件的地址轉(zhuǎn)換工作。 當訪問的頁不在主存時,則形成絕對地址后不去模擬指令的執(zhí)行, 而用輸出轉(zhuǎn)換后的地址來代替一條指令的執(zhí)行, 當訪問的頁不在主存時,則輸出“ *”,表示產(chǎn)生了一次缺頁中斷。該算法框圖如下:精選范本,供參考!地址變換算法:假定主存的每塊長度為 126個字節(jié);現(xiàn)有一個共 7頁的作業(yè),其中第 0頁至第3頁已裝入,其余三頁尚未裝入主存,該作業(yè)的頁表為:頁號標志主存塊號外存地址015011118012219013311021400225002360121精選范本,供參考!運行設(shè)計的地址變換機構(gòu)程序,顯示或打印運行結(jié)果。因僅模擬地址變換,并不模擬指令的實際執(zhí)行。4)在分頁式虛擬存貯系統(tǒng)中,當硬件發(fā)出缺頁中斷后,轉(zhuǎn)操作系統(tǒng)處理缺頁中斷。如果主存中已無空閑塊,當采用先進先出算法時,則淘汰最先進入主存的一頁,若該頁修改過,還要存入磁盤,然后在把當前要訪問的頁裝入該塊,并修改頁表中的對應(yīng)標志。當采用LRU算法時,則淘汰最近沒有訪問的頁。大概流程圖如下:(5)有了具體的核心算法實現(xiàn)方法之后,就可以開發(fā)簡單的界面,并且把以上綜合到程序中,最后調(diào)試BUG,完成實驗。4、實驗結(jié)果及分析:1)對于題目一我制作了一個幫助界面(如圖1),可以便于我記起實驗的內(nèi)容以及理解相應(yīng)知識,有了已知內(nèi)容,我輸入邏輯地址(例如320),則程序輸出為(如圖2)。精選范本,供參考!圖1“題目一幫助界面” 圖2“題目一運行界面”(2)對于題目二我同樣制作了一個幫助界面(如圖3),可以便于我操作程序不出現(xiàn)格式錯誤,如果出錯程序會彈出窗口報錯(如圖4)。當物理塊數(shù)為3,頁面使用列表為233223123233時,則采用先進先出算法時table表應(yīng)如下:2332212122332333221223232333212******(‘*‘代表缺頁中斷)采用LRU算法時table表應(yīng)如下:233223123233233223123232332231212*****(‘*‘代表缺頁中斷)則程序輸出為(如圖5、6)。圖3“題目二幫助界面” 圖4“題目二錯誤窗口”精選范本,供參考!圖5“題目二 FIFO算法” 圖6“題目二LRU算法”5、實驗收獲和體會:通過本次實驗,使我對于虛擬存儲管理的相關(guān)內(nèi)容有了更深的認識, 同時提升了我的編程水平和思考問題的能力, 對于以后學習或者工作上的困難克服有很大的積極作用。 通過程序設(shè)計的訓練,我進一步學習和掌握了對程序的設(shè)計和編寫, 從中體會到了面向?qū)ο蟪绦蛟O(shè)計的方便和巧妙。 懂得了在進行編寫一個程序之前, 要有明確的目標和整體的設(shè)計思想。 另外某些具體的細節(jié)內(nèi)容也是相當?shù)闹匾?這些寶貴的編程思想和從中摸索到的經(jīng)驗都是在編程的過程中獲得的寶貴財富。這些經(jīng)驗對我以后的編程會有很大的幫助的,我要好好利用。我很珍惜這次實驗的機會,冰凍三尺非一日之寒,我相信以后會更加細心、更加勤奮。6、源程序:1、下面是 MenuFrame.Javapackagecom.hjc;import static com.hjc.Constant.*;import java.awt.Button;import java.awt.Color;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;精選范本,供參考!// 菜單界面public class MenuFrameextendsFrame implements ActionListener{/****/private static final long serialVersionUID =1L;private Image icon=Toolkit. getDefaultToolkit ().getImage("image//icon.png" ); // 圖標private Image text =Toolkit. getDefaultToolkit ().getImage("image//text.png" ); // 文字private Button workOne= newButton( "進入題目一"); //Button1private Button workTwo= newButton( "進入題目二"); //Button2public MenuFrame(String title ){this .setTitle( title ); // 設(shè)置題目this .setLayout( null); // 設(shè)置布局this .setBounds(( PM_WIDTH-EXE_WIDTH)/2,(PM_HEIGHT-EXE_HEIGHT)/2, EXE_WIDTH,EXE_HEIGHT);// 應(yīng)用的位置this .setIconImage( icon); // 設(shè)置圖標this .setBackground(Color. YELLOW);// 設(shè)置背景workOne.setBounds(( EXE_WIDTH-200)/2,( EXE_HEIGHT-40)/2,200,40);workOne.addActionListener( this);this .add(workOne); // 添加Button1workTwo.setBounds(( EXE_WIDTH-200)/2,( EXE_HEIGHT-40)/2+80,200,40);workTwo.addActionListener( this);this .add(workTwo); // 添加Button2this .addWindowListener( newWindowAdapter(){public voidwindowClosing(WindowEvent e){super.windowClosing( e);System.exit(0);}}); // 添加窗口監(jiān)聽this .setResizable( false); // 設(shè)置不可改變大小this .setVisible( true); // 設(shè)置可視}精選范本,供參考!"制作:樂事@Happy",380,480);// 繪制的方法public voidpaint(Graphics g){Color c= g.getColor(); // 得到初始g顏色g.setColor(Color. BLUE); // 設(shè)置畫筆為藍色g.drawImage(text,( EXE_WIDTH-400)/2,40,400,150, this); // 繪制text圖片g.drawString( "(實驗四)",400,160); // 繪制文字g.drawString( "題目一 :模擬請求分頁存儲管理中的硬件地址轉(zhuǎn)換和產(chǎn)生卻頁中斷的過程 ",50,400); // 繪制文字g.drawString( "題目二 :采用先進先出(或 LRU)算法,實現(xiàn)分頁管理的缺頁調(diào)度",50,430); // 繪制文字g.setColor(Color. RED); // 設(shè)置畫筆為紅色g.drawRect(45,380,400,70); // 繪制矩形g.setColor(Color. CYAN);g.drawString(g.setColor( c); // 恢復畫筆初始顏色}public static voidmain(String[] args){newMenuFrame("歡迎");}動作監(jiān)聽publicvoidactionPerformed(ActionEvente){if(e.getSource()==workOne){this.setVisible(false);newworkOneFrame(this);}elseif(e.getSource()==workTwo){this.setVisible(false);newworkTwoFrame(this);}}}2、下面是Constant.Javapackagecom.hjc;import java.awt.Toolkit;public class Constant{精選范本,供參考!publicstaticintEXE_WIDTH=500;//應(yīng)用寬度publicstaticintEXE_HEIGHT=500;//應(yīng)用高度publicstaticintPM_WIDTH=Toolkit.getDefaultToolkit().getScreenSize().width;//得到屏幕寬度publicstaticint=PM_HEIGHTToolkit.getDefaultToolkit().getScreenSize().height;//得到屏幕高度publicstaticintMAX=100;}3、下面是Page.Javapackagecom.hjc;public class Page{int pno;// 頁號int flag;// 標志位int cno;// 主存號intaddr;//外存地址publicPage(intpno,intflag,intaddr){this.pno=pno;this.flag=flag;this.addr=addr;}publicPage(intpno,intflag,intcno,intaddr){this.pno=pno;this.flag=flag;o=cno;this.addr=addr;}}4、下面是helpOneFrame.Javapackagecom.hjc;importstaticcom.hjc.Constant.EXE_HEIGHT;importstaticcom.hjc.Constant.EXE_WIDTH;importstaticcom.hjc.Constant.PM_HEIGHT;importstaticcom.hjc.Constant.;PM_WIDTH精選范本,供參考!import java.awt.Color;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class helpOneFrame extends Frame{/****/private static final long serialVersionUID =1L;private workOneFrame wof;private Image icon=Toolkit. getDefaultToolkit ().getImage("image//icon.png" ); // 圖標private Image back=Toolkit. getDefaultToolkit ().getImage("image//helponeback.png" ); // 背景public helpOneFrame(workOneFrame wof){this.wof=wof;this.setTitle("幫助");this.setLayout(null);//布局為nullthis.setBounds((PM_WIDTH-EXE_WIDTH)/2,(-)/2,,);//應(yīng)PM_HEIGHTEXE_HEIGHTEXE_WIDTHEXE_HEIGHT用的位置this.setIconImage(icon);//設(shè)置應(yīng)用圖標this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){setVisible(false);wof.setVisible(true);}});this.setResizable(false);//大小不可變this.setVisible(true);//可視}public voidpaint(Graphics g){精選范本,供參考!Color c= g.getColor();g.drawImage(back,0,0,EXE_WIDTH,EXE_HEIGHT,this);g.setColor(c);}}5、下面是helpTwoFrame.Javapackagecom.hjc;importstaticcom.hjc.Constant.EXE_HEIGHT;importstaticcom.hjc.Constant.;EXE_WIDTHimportstaticcom.hjc.Constant.PM_HEIGHT;importstaticcom.hjc.Constant.;PM_WIDTHimport java.awt.Color;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class helpTwoFrame extends Frame{/****/private static final long serialVersionUID =1L;private workTwoFrame wtf;private Image icon=Toolkit. getDefaultToolkit ().getImage("image//icon.png" ); // 圖標private Image back=Toolkit. getDefaultToolkit ().getImage("image//helptwoback.png" ); // 背景public helpTwoFrame(workTwoFrame wtf){this .wtf= wtf;this .setTitle( "幫助");this .setLayout( null); // 布局為nullthis .setBounds(( PM_WIDTH-EXE_WIDTH)/2,(PM_HEIGHT-EXE_HEIGHT)/2, EXE_WIDTH,EXE_HEIGHT);// 應(yīng)用的位置精選范本,供參考!this.setIconImage(icon);//設(shè)置應(yīng)用圖標this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){setVisible(false);wtf.setVisible(true);}});this.setResizable(false);//大小不可變this.setVisible(true);//可視}publicvoidpaint(Graphicsg){Colorc=g.getColor();g.drawImage(back,0,0,EXE_WIDTH,EXE_HEIGHT,this);g.setColor(c);}}6、下面是workOneFrame.Javapackagecom.hjc;importstaticcom.hjc.Constant.EXE_HEIGHT;importstaticcom.hjc.Constant.EXE_WIDTH;importstaticcom.hjc.Constant.PM_HEIGHT;importstaticcom.hjc.Constant.;PM_WIDTHimportjava.awt.Button;importjava.awt.Color;importjava.awt.Font;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.TextArea;importjava.awt.TextField;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.awt.event.WindowAdapter;精選范本,供參考!import java.awt.event.WindowEvent;import javax.swing.JOptionPane;public class workOneFrameextends Frame implements ActionListener{/****/privatestaticfinallongserialVersionUID=1L;privateMenuFramemf;//大管家privateImageicon=Toolkit.getDefaultToolkit().getImage("image//icon.png");//圖標privateImageback=Toolkit.getDefaultToolkit().getImage("image//back.png");//背景privateButtonstart=newButton("Run...");privateButtonbtHelp=newButton("幫助");privateTextFieldtf_Logical_Address=newTextField();privateTextAreata_Output=newTextArea();privatestaticintEach_Length=126;//主存的每塊長度privatestaticintMax_Numbers=7;//作業(yè)頁數(shù)public workOneFrame(MenuFramemf){this .mf= mf;this .setTitle( "地址轉(zhuǎn)換和產(chǎn)生卻頁中斷的過程 ");this .setLayout( null); // 布局為nullthis .setBounds(( PM_WIDTH-EXE_WIDTH)/2,(PM_HEIGHT-EXE_HEIGHT)/2, EXE_WIDTH,EXE_HEIGHT);// 應(yīng)用的位置this .setIconImage( icon); // 設(shè)置應(yīng)用圖標tf_Logical_Addresstf_Logical_Addresstf_Logical_Address字

.setBounds(200,110,100,30);.setFont( newFont( "Courier" ,Font. PLAIN,25));.addKeyListener( newKeyAdapter() {// 只允許輸入數(shù)public voidkeyTyped(KeyEvent e){int keyChar= e.getKeyChar();if (keyChar>=KeyEvent. VK_0&&keyChar<=KeyEvent. VK_9){} else{精選范本,供參考!e.consume(); // 關(guān)鍵,屏蔽掉非法輸入}}});this .add(tf_Logical_Address );start .setBounds(320,160,100,30);start .addActionListener( this);this .add(start );btHelp.setBounds(320,200,100,30);btHelp.addActionListener( this);this .add(btHelp);ta_Output.setBounds((EXE_WIDTH-450)/2,250,450,200);ta_Output.setFont(newFont("Courier",Font.PLAIN,15));ta_Output.setEditable(false);this.add(ta_Output);this .addWindowListener( newWindowAdapter(){public voidwindowClosing(WindowEvent e){setVisible( false);mf.setVisible( true);}});this .setResizable( false); // 大小不可變this .setVisible( true); // 可視}public voidpaint(Graphics g){Color c= g.getColor();g.setColor(Color. BLACK);g.drawImage(back,0,0, EXE_WIDTH,EXE_HEIGHT,this);g.drawString( "指令的邏輯地址: ",100,130);g.setColor( c);}public voidchangeaddr(Page p[], int logaddr){ // 地址變換精選范本,供參考!intj=logaddr/;//對應(yīng)的塊號Each_Lengthintk=logaddr%Each_Length;//對應(yīng)的偏移量intflag=0;//頁面標志intaddr;//物理地址for(inti=0;i<;i++){Max_Numbers找到對應(yīng)的頁號if (p[i].pno== j){// 頁面標志為1if (p[i].flag ==1){addr= p[i].cno* Each_Length+k;ta_Output.setText( ta_Output.getText() +"物理地址為:" +addr+"\n");ta_Output.setText( ta_Output.getText()+ "詳細信息:\t 頁面號:"+p[i].pno+"\t 主存號:" +p[i].cno+"\t 偏移量:"+ k+"\n");flag =1;break;}}}if (flag ==0){ta_Output.setText( ta_Output.getText() +"該頁不在主存,產(chǎn)生缺頁中斷\n");}ta_Output.setText( ta_Output.getText()+ "\n\n" );}public voidRun(){int ins;// 指令邏輯地址Page[] p= newPage[8];p[0]= newPage(0,1,5,011);p[1]= newPage(1,1,8,012);p[2]= newPage(2,1,9,013);p[3]= newPage(3,1,1,021);p[4]= newPage(4,0,022);p[5]= newPage(5,0,023);p[6]= newPage(6,0,121);精選范本,供參考!ins=Integer. parseInt(tf_Logical_Address .getText());ta_Output.setText( ta_Output.getText() +"您輸入指令的邏輯地址: "+ins+"\n\n" );changeaddr(p, ins);}public voidactionPerformed(ActionEvent e){if (e.getSource()== start ){try {ta_Output.setText( "");ta_Output.setText( "");Run();}catch(Exception ee){JOptionPane.showMessageDialog(null, "對不起,輸入錯誤,請檢查輸入格式! ", "錯誤",JOptionPane.ERROR_MESSAGE);}}if (e.getSource()== btHelp){this.setVisible( false);newhelpOneFrame(this );}}}7、下面是workTwoFrame.Javapackagecom.hjc;import static com.hjc.Constant.*;import java.awt.Button;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.TextArea;import java.awt.TextField;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;精選范本,供參考!import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JOptionPane;publicclassworkTwoFrameextendsFrameimplementsActionListener{/****/privatestaticfinallongserialVersionUID=1L;privateTextFieldta_Serial_Numbers=newTextField();privateTextFieldta_Physical_Block_Numbers=newTextField();privateTextAreataOutput=newTextArea();privateButtonbtFIFO=newButton("先進先出");privateButtonbtLRU=newButton("近期最少");privateButtonbtClear=newButton("清空");privateButtonbtHelp=newButton("幫助");privateImageicon=Toolkit.getDefaultToolkit().getImage("image//icon.png");//圖標privateImageline=Toolkit.getDefaultToolkit().getImage("image//line.png");//線privateImageback=Toolkit.getDefaultToolkit().getImage("image//back.png");//背景public MenuFramemf; //MenuFrame引用privateintPhysical_Block_Numbers;privateint[]Serial;privateintMax_Digits;privateintPages_Missing_Numbers;publicworkTwoFrame(MenuFramemf){this.mf=mf;this.setTitle("分頁管理的缺頁調(diào)度");//設(shè)置標題this.setLayout(null);//布局為nullthis.setBounds((PM_WIDTH-EXE_WIDTH)/2,(PM_HEIGHT-EXE_HEIGHT)/2, EXE_WIDTH,EXE_HEIGHT);// 應(yīng)用的位置精選范本,供參考!this .setIconImage( icon); // 設(shè)置應(yīng)用圖標btClear.setBounds(400,50,80,30);btClear.addActionListener( this);this .add(btClear);// 物理塊數(shù)輸入框ta_Physical_Block_Numbers .setBounds(100,50,200,30);ta_Physical_Block_Numbers .setFont( newFont( "Courier" ,Font. PLAIN,25));ta_Physical_Block_Numbers .addKeyListener( newKeyAdapter(){ // 只允許輸入數(shù)字public voidkeyTyped(KeyEvent e){int keyChar= e.getKeyChar();if (keyChar>=KeyEvent. VK_0&&keyChar<=KeyEvent. VK_9){} else{e.consume(); // 關(guān)鍵,屏蔽掉非法輸入}}});this .add(ta_Physical_Block_Numbers );// 頁面號引用串輸入框ta_Serial_Numbers .setBounds(100,110,380,30);ta_Serial_Numbers .setFont( newFont("Courier" ,Font. PLAIN,25));ta_Serial_Numbers .addKeyListener( newKeyAdapter(){ // 只允許輸入數(shù)字和空格public voidkeyTyped(KeyEvent e){int keyChar= e.getKeyChar();if ((keyChar>=KeyEvent. VK_0&&keyChar<=KeyEvent.VK_9)|| keyChar==KeyEvent. VK_SPACE){} else{e.consume(); // 關(guān)鍵,屏蔽掉非法輸入}}});this .add(ta_Serial_Numbers );taOutput.setBounds(30,200,300,280);taOutput.setFont(newFont("Courier",Font.PLAIN,15));taOutput.setEditable(false);this.add(taOutput);精選范本,供參考!btFIFO.setBounds(365,230,100,30);btFIFO.addActionListener( this);this .add(btFIFO);btLRU.setBounds(365,310,100,30);btLRU.addActionListener( this);this .add(btLRU);btHelp.setBounds(365,390,100,30);btHelp.addActionListener( this);this .add(btHelp);this .addWindowListener( newWindowAdapter(){public voidwindowClosing(WindowEvent e){setVisible( false);mf.setVisible( true);}});this .setResizable( false); // 大小不可變this .setVisible( true); // 可視}// 繪制方法public voidpaint(Graphics g){Color c= g.getColor(); // 先得到背景色g.setColor(Color.black);//設(shè)置畫筆顏色為黑色g.drawImage(back,0,0,EXE_WIDTH,EXE_HEIGHT,this);g.drawImage(line,0,160,500,10, this );g.drawString( "物理塊數(shù):",30,70);g.drawString( "頁面使用列表 :",20,130);g.drawString( "輸出:",30,190);g.setColor( c); // 恢復為背景色}public voidactionPerformed(ActionEvent e){if (e.getSource()== btFIFO){ // 先進先出按鈕try {Physical_Block_Numbers =Integer.parseInt(ta_Physical_Block_Numbers .getText()); //精選范本,供參考!為物理塊數(shù)賦值String[] s=ta_Serial_Numbers .getText().replaceAll( "+","").split( "");Serial = newint[s.length];Max_Digits =0;for (int i=0; i<s.length; i++){Serial [i]=Integer. parseInt(s[i]); // 為串號列表數(shù)組賦值if (String. valueOf(Serial[i]).length()> Max_Digits){Max_Digits =String. valueOf(Serial [i]).length();}}taOutput.setText( "");Pages_Missing_Numbers=0;FIFO(); // 先進先出算法}catch(Exception exception ){JOptionPane.showMessageDialog(null, "對不起,輸入錯誤,請檢查輸入格式! ", "錯誤",JOptionPane.ERROR_MESSAGE);}}if (e.getSource()== btLRU){ // 先進先出按鈕try {Physical_Block_Numbers =Integer.parseInt(ta_Physical_Block_Numbers .getText()); //為物理塊數(shù)賦值String[] s=ta_Serial_Numbers .getText().replaceAll( "+","").split( "");Serial = newint[s.length];Max_Digits =0;for (int i=0; i<s.length; i++){Serial [i]=Integer. parseInt(s[i]); // 為串號列表數(shù)組賦值if (String. valueOf(Serial[i]).length()> Max_Digits){Max_Digits =String. valueOf(Serial [i]).length();}}taOutput.setText( "");Pages_Missing_Numbers=0;LRU(); // 先進先出算法}catch(Exception exception ){JOptionPane.showMessageDialog(null,"對不起,輸入錯誤,請檢查輸入格式!","錯誤",JOptionPane.ERROR_MESSAGE);精選范本,供參考!}}if(e.getSource()==btClear){ta_Physical_Block_Numbers.setText("");ta_Physical_Block_Numbers.setText("");ta_Serial_Numbers.setText("");ta_Serial_Numbers.setText("");taOutput.setText("");taOutput.setText("");}if(e.getSource()==btHelp){this.setVisible(false);newhelpTwoFrame(this);}}//FIFO算法publicvoidFIFO(){charflag;intSerial_Length=Serial.length;int[]mem=newint[Physical_Block_Numbers+2];char[]f=newchar[Serial_Length];int[][]table=newint[Physical_Block_Numbers][Serial_Length];taOutput.setText(taOutput.getText()+"*FIFO算法*\n\n");taOutput.setText(taOutput.getText()+"輸出結(jié)果為下表*代表有缺頁\n\n");for(inti=0;i<mem.length;i++){mem[i]=-1;}for(inti=0;i<Serial_Length;i++){intq=0;while((Serial[i]!=mem[q])&&(q!=Physical_Block_Numbers)){q++;}if(q==Physical_Block_Numbers){flag='*';//缺頁則置標志flag為'*'精選范本,供參考!Pages_Missing_Numbers++;}else{flag = '' ;}if (flag =='*' ){for (int j= Physical_Block_Numbers -1; j>0; j--){淘汰最先調(diào)入的頁面調(diào)入當前訪問的mem[j]= mem[j-1];}mem[0]= Serial [i];}for (int j=0; j< Physical_Block_Numbers ; j++){table[j][i]= mem[j];}f[i]= flag;}for (int i=0; i< Physical_Block_Numbers ; i++){for (int j=0; j< Serial_Length ; j++){String s= "";int temp=Max_Digits -String. valueOf(table[i][j]).length();if (table[i][j]==-1){for (int k=0; k< Max_Digits; k++){s+= "";}taOutput.setText( taOutput.getText()+ s+ " " );} else{for (int k=0; k< temp; k++){s+= "";}taOutput .setText(taOutput.getText()+table[i][j]+s+"");}}taOu

溫馨提示

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

評論

0/150

提交評論