JAVA 版的LRU页面调度算法

RT,随便看看吧,很简单的算法,做得还有些不灵活,毕竟只是按实验上的要求做的,大家可以多提提意见。谢谢

 

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Static_Storing{
 
public static int i=0;
 public Static_Storing(){
  JFrame app=new JFrame("页式虚拟存储  ");
  Container c=app.getContentPane();
  JLabel l1=new JLabel("页号");
  JLabel l2=new JLabel("标志");
  JLabel []l={new JLabel("0"),new JLabel("1"),new JLabel("2"),new JLabel("3"),new JLabel("4"),new JLabel("5"),new JLabel("6")};
  JLabel l3=new JLabel("需要访问的指令地址流:0,1,2,3,0,6,4,5,1,2,4,6");
  final JLabel l4=new JLabel("点击按钮开始访问!");
  final int []visit={0,1,2,3,0,6,4,5,1,2,4,6};
  JButton b=new JButton("访问");
  final int []usual={0,1,2,3};
  final JTextField []t={new JTextField("1",10),new JTextField("1"),new JTextField("1"),new JTextField("1"),new JTextField("0"),new JTextField("0"),new JTextField("0")};
  b.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(i>=visit.length) 
     l4.setText("指令流全部访问完!结束进程!");
    else
    {
     if(t[visit[i]].getText().equals("1"))
     {
      l4.setText("访问的指令流"+visit[i]+"在主存中,直接访问");
      int k=0;
      int temp;
      for(k=0;k<usual.length;k++)
       if(visit[i]==usual[k])
        break;
      if(k==1)
      {
       temp=usual[0];
       usual[0]=visit[1];
       usual[1]=temp;
      }
      else
       if(k==2)
       {
        temp=usual[0];
        visit[2]=visit[1];
        usual[0]=visit[2];
        visit[1]=temp;        
       }
       else
        if(k==3)
        {
         temp=usual[0];
         visit[3]=visit[2];
         visit[2]=visit[1];
         usual[0]=visit[2];
         visit[1]=temp;
        }
      temp=usual[k];
      usual[0]=visit[i];
      
     }
     else
     {
      l4.setText("访问的指令流不在主存中,调进页面"+visit[i]+",调出页面"+usual[3]);
      t[visit[i]].setText("1");
      t[usual[3]].setText("0");
      int temp;
      temp=usual[2];
      usual[2]=usual[1];
      usual[1]=usual[0];
      usual[0]=visit[i];
      usual[3]=temp;
     }
     i++;
    }
   }
   
  });
  JPanel p1=new JPanel(new GridLayout(9,0));
  p1.add(l1); p1.add(l2);
  for(int k=0;k<t.length;k++)
  {
   p1.add(l[k]); p1.add(t[k]);
  }
  p1.add(l3);
  p1.setSize(300,300);
  c.add(p1);  c.add(l3);
  JPanel p2=new JPanel(new GridLayout(1,0));
  p2.add(b); p2.add(l4);
  p2.setSize(20,20);
  c.add(p2);
  c.setLayout(new FlowLayout(FlowLayout.CENTER));
  app.setSize(450,350);
  app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  app.setVisible(true);
 }
 public static void main(String []arg0){
  Static_Storing a=new Static_Storing();
 }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值