⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 experiment2.java

📁 用JAVA实现的操作系统中的LRU页面置换算法
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
class Canvasoutput extends Canvas
   {
      int num;
      int yournum;
      int x=0;
      Canvasoutput()
         {
            setSize(1000,100);
         }
      public void paint(Graphics g,String a0,String a1,String a2,String a3)
         {
            g.drawString(a0,10+50*x,30);
            g.drawString(a1,10+50*x,50);
            g.drawString(a2,10+50*x,70);
            g.drawString(a3,10+50*x,90);
            x++;
            try{
                  Thread.sleep(1000);
                }
            catch(InterruptedException e1)
                {}
         }
   }
class LRUFrame extends Frame implements ActionListener
   {
      TextField textinput,textoutput;
      Label label;
      Button enterbutton,buttonclear;
      Canvasoutput canvasoutput;
      GridBagLayout grid;
      GridBagConstraints c;
      String[] contents;
      int number;
      LRUFrame(String s)
         {
            super(s);
            contents=new String[30];
            grid=new GridBagLayout();
            c=new GridBagConstraints();
            setLayout(grid);
            canvasoutput=new Canvasoutput();
            label=new Label("     请输入页面号");
            textinput=new TextField(20);
            textoutput=new TextField(50);
            textoutput.setEditable(false);
            enterbutton=new Button("Start");
            buttonclear=new Button("clear");
            addComponent(label,0,0,5,1);  
            addComponent(textinput,0,5,8,1);  
            addComponent(enterbutton,0,13,1,1);  
            addComponent(buttonclear,0,15,1,1);  
            addComponent(canvasoutput,1,0,25,4); 
            addComponent(textoutput,0,15,10,1); 
            enterbutton.addActionListener(this);
            buttonclear.addActionListener(this);
            setBounds(400,400,1000,300);
            setVisible(true);
            addWindowListener(new WindowAdapter()
               {
                  public void windowClosing(WindowEvent e)
                     {
                        System.exit(0);
                     }
               });  
         }
      private void addComponent(Component component,int row,int column,int width,int hight)
         {
            c.gridx=column;
            c.gridy=row;
            c.gridwidth=width;
            c.gridheight=hight;
            grid.setConstraints(component,c);
            add(component);
         } 
      public void actionPerformed(ActionEvent e)
         {
             if(e.getSource()==buttonclear)
             {
                textinput.setText(null);
                textoutput.setText(null); 
             }  
            else if(e.getSource()==enterbutton)
            {
            String input=textinput.getText();
            String rorw="   ";
            int times=0;
            float rat;
            number=input.length();
            String singlechar[]=new String[number];
            int singlenum[]=new int[number];
            Graphics g=canvasoutput.getGraphics();
            int outint[]=new int[3];
            int boo2=0,xu=0;
            String outstring[]=new String[3];
            String between1=" ";
            String between2=" ";
            for(int i=0;i<number;i++)
               {
                  singlechar[i]=input.substring(i,i+1);
                  singlenum[i]=Integer.parseInt(singlechar[i]);
               }
            for(int i=0;i<number;i++)
               {
                  boo2=0;
                  if(i==0)
                     {
                        outstring[0]=singlechar[0];
                        outstring[1]=" ";
                        outstring[2]=" ";
                     }
                  else if(i==1)
                     {
                        if(outstring[0].equals(singlechar[1]))
                           {
                              outstring[1]=" ";
                           }
                        else 
                           {
                              between1=outstring[0];
                              outstring[0]=singlechar[1];
                              outstring[1]=between1;
                           }
                     }
                  else if(i==2)
                     {
                        for(int j=0;j<=1;j++)
                           {
                                if(outstring[j].equals(singlechar[2])) 
                                   {
                                      boo2=1;
                                      xu=j;
                                   }                                               
                           }
                              if(boo2==1)
                                 {  
                                    if(xu==1)
                                       {
                                          between1=outstring[0];
                                          outstring[0]=singlechar[2];
                                          outstring[1]=between1;
                                       }
                                    else
                                       {
                                          outstring[2]=" ";
                                       }
                                 }
                              else
                                 {
                                    between1=outstring[0];
                                    between2=outstring[1];
                                    outstring[0]=singlechar[2];
                                    outstring[1]=between1;     
                                    outstring[2]=between2;                           
                                 } 
                     }
                  else 
                     {
                        for(int j=0;j<=2;j++)
                           {
                                if(outstring[j].equals(singlechar[i])) 
                                   {
                                      boo2=1;
                                      xu=j;
                                   }                                              
                           }
                              if(boo2==1)
                                 {  
                                    if(xu==1)
                                       {
                                          between1=outstring[0];
                                          outstring[0]=singlechar[i];
                                          outstring[1]=between1;
                                       }
                                    if(xu==2)
                                       {
                                          between1=outstring[0];
                                          between2=outstring[1];
                                          outstring[0]=singlechar[i];
                                          outstring[1]=between1;
                                          outstring[2]=between2;
                                       }                                    
                                 }
                              else
                                 {
                                    between1=outstring[0];
                                    between2=outstring[1];
                                    outstring[0]=singlechar[i];
                                    outstring[1]=between1;     
                                    outstring[2]=between2;                          
                                 } 
                     }
                   if(boo2==1)
                      {
                          rorw="命中";
                          times++;
                      }
                   else
                      {
                          rorw="不命中";
                      }
                   canvasoutput.paint(g,outstring[0],outstring[1],outstring[2],rorw);
               }
             float number2;
             number2=number;
             rat=(number2-times)/number2;
             textoutput.setText("命中"+times+"次,不命中"+(number-times)+"次,缺页率为"+rat*100+"%");
             } 
         }
   }
public class Experiment2
   {
      public static void main(String args[])
         {
            new LRUFrame("操作系统第二次实验,256302020苏玮");
         } 
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -