操作系统页面置换-最近最少使用(LRU)算法模拟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统页面置换-最近最少使用(LRU)算法模拟

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

class Window extends Frame implements Runnable, ActionListener{

TextField Text[][]=new TextField[4][9];

int record[][]=new int[4][9]; //定义与Text[][]一一映射的数组

int a=-8,b=-8,c=-8,//Age

A=-1,B=-1,C=-1;//内存

Boolean boolea=true;

TextField inPutText=new TextField(8);

Label label=new Label("请输入八个数字,谢谢合作。。。。。。"),

label2=new Label("页面失效率:"),

label3=new Label("I'm waiting…………");

Button button=new Button("Refresh");

Window(){ //构造函数窗口初始化

setTitle("操作系统页面置换-最近最少使用(LRU)算法模拟");

setLayout(new FlowLayout());

add(label);

label.setBackground(Color.cyan);

add(inPutText);

inPutText.addActionListener(this); //对输入信息设置监听

for(int i=0;i<4;i++){

for(int j=0;j<9;j++){

Text[i][j]=new TextField(1);

Text[i][j].setEditable(false);

add(Text[i][j]);

record[i][j]=-1;

}

}

add(label2);

add(label3);

add(button);

button.setBackground(Color.orange);

button.addActionListener(this);

setBackground(Color.gray);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

setBounds(400,180,350,200);

this.setResizable(false);

setVisible(true);

validate();

}

/**

* @param args

*/

@Override

public void run() { //运算线程

// TODO Auto-generated method stub

int m=0;

for(int i=1;i<9;i++){

try {

Thread.sleep(1500); //时钟滴答设为1.5秒

label3.setText("I'm running…………");

}

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

int need=record[0][i];

if(isNotHave(need,i)&&a<0){

A=need;a=0;Text[1][i].setBackground(Color.red);m++;}

else if(isNotHave(need,i)&&b<0){

B=need;b=0;Text[2][i].setBackground(Color.red);m++;}

else if(isNotHave(need,i)&&c<0){

C=need;c=0;Text[3][i].setBackground(Color.red);m++;}

else if(isNotHave(need,i)&&a>b){

if(isNotHave(need,i)&&a>c){

A=need;a=0;Text[1][i].setBackground(Color.red);m++;

}

else{

if(isNotHave(need,i))

C=need;c=0;Text[3][i].setBackground(Color.red);m++;

}

}

else{

if(isNotHave(need,i)&&b>c){

B=need;b=0;Text[2][i].setBackground(Color.red);m++;

}

else{

if(isNotHave(need,i)){

C=need;c=0;Text[3][i].setBackground(Color.red);m++;

}

}

}

a++;b++;c++;

record[1][i]=A;

record[2][i]=B;

record[3][i]=C;

for(int k=1;k<4;k++){

for(int f=1;f<9;f++){

if(record[k][f]>=0)

Text[k][f].setText(""+record[k][f]);

}

}

Text[0][0].setText("Age");

Text[1][0].setText(""+a);

Text[2][0].setText(""+b);

Text[3][0].setText(""+c);

}

label3.setText(""+(double)m/8*100+"%");

label3.setBackground(Color.red);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==inPutText&&boolea){

//对用户输入信息的提取

String number=e.getActionCommand();

int q=Integer.parseInt(number);

System.out.println(q);

int s=1;

for(int i=1;i<9;i++){

record[0][9-i]=(q/s)%10;

System.out.println(record[0][9-i]);

s=s*10;

}

//将提取信息显示在窗口

for(int f=1;f<9;f++){

相关文档
最新文档