页面置换模拟程序源代码Read.docx

上传人:b****8 文档编号:28347080 上传时间:2023-07-10 格式:DOCX 页数:18 大小:17.57KB
下载 相关 举报
页面置换模拟程序源代码Read.docx_第1页
第1页 / 共18页
页面置换模拟程序源代码Read.docx_第2页
第2页 / 共18页
页面置换模拟程序源代码Read.docx_第3页
第3页 / 共18页
页面置换模拟程序源代码Read.docx_第4页
第4页 / 共18页
页面置换模拟程序源代码Read.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

页面置换模拟程序源代码Read.docx

《页面置换模拟程序源代码Read.docx》由会员分享,可在线阅读,更多相关《页面置换模拟程序源代码Read.docx(18页珍藏版)》请在冰豆网上搜索。

页面置换模拟程序源代码Read.docx

页面置换模拟程序源代码Read

页面置换模拟程序源代码

//mian.java

importjava.awt.BorderLayout;

importjava.awt.event.*;

importjavax.swing.*;

publicclassmian{

publicstaticvoidmain(String[]args){

JFramemyframe=newJFrame();

pageChangepc=newpageChange();

JTabbedPanetab=newJTabbedPane();

JMenuBarmb=newJMenuBar();

JMenumi=newJMenu("Help");

mi.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente){

JOptionPane.showMessageDialog(newJOptionPane(),"版权:

\n兰州交大数理学院,连乾云","提示!

",JOptionPane.OK_OPTION);

}

});

mb.add(mi);

tab.add("页面置换算法",pc);

myframe.setLayout(newBorderLayout());

myframe.add(BorderLayout.NORTH,mb);

myframe.add(BorderLayout.CENTER,tab);

myframe.setTitle("ComputerOperatingSystemsPage-ReplacementAlgorthms");

myframe.setSize(950,650);

myframe.show(true);

}

}

//pageChange.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclasspageChangeextendsJPanelimplementsActionListener{

JPanelpan1,pan2,pan3,pan4;

JButtonbutton1,button2,button3,clearButton,randomButton;

JTextFieldtext1,text2,text3,text4;

Stringm_random="";//页面序列

intm,n,length;

intmyt[];

randomNumberRN;

displayViewFIFOTA,LRUTA,OptTA;

publicpageChange(){

pan1=newJPanel();

pan2=newJPanel();

pan3=newJPanel();

text1=newJTextField(4);

text2=newJTextField(5);

text3=newJTextField();

text4=newJTextField();

text4.setEditable(false);

pan1.setLayout(newGridLayout(4,2));

pan1.add(newJLabel("物理块数"));

pan1.add(text1);

pan1.add(newJLabel("置换页面数"));

pan1.add(text2);

pan1.add(newJLabel("页表长度"));

pan1.add(text3);

pan1.add(newJLabel("页面号引用串"));

pan1.add(text4);

FIFOTA=newdisplayView();

LRUTA=newdisplayView();

OptTA=newdisplayView();

pan2.setLayout(newGridLayout(1,3));

pan2.add(FIFOTA);

pan2.add(LRUTA);

pan2.add(OptTA);

button1=newJButton("FIFO");

button2=newJButton("LRU");

button3=newJButton("Optimal");

randomButton=newJButton("Random");

clearButton=newJButton("Clear");

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

clearButton.addActionListener(this);

randomButton.addActionListener(this);

pan3.add(randomButton);

pan3.add(button1);

pan3.add(button2);

pan3.add(button3);

pan3.add(clearButton);

setLayout(newBorderLayout());

add(BorderLayout.NORTH,pan1);

add(BorderLayout.CENTER,pan2);

add(BorderLayout.SOUTH,pan3);

}

publicvoidmisInPut(){

try{

Stringstr1,str2;

str1="";

str2="";

m=nteger.parseInt(text1.getText());

n=Integer.parseInt(text2.getText());

length=Integer.parseInt(text3.getText());

if(m==0||n==0||length==0){

JOptionPane.showMessageDialog(this,"请输入数字字符","提示!

",

JOptionPane.ERROR_MESSAGE);

}

if(m>n&&length!

=0){

JOptionPane.showMessageDialog(this,"输入的物理块数大于页面数或页表长度为0",

"警告!

",JOptionPane.WARNING_MESSAGE);

text1.setText("0");

text2.setText("0");

text3.setText("0");

text4.setText("");

}else{

myt=newint[n];

RN=newrandomNumber();

myt=RN.rand(n,length);

for(inti=0;i

str2=String.valueOf(myt[i]);

str1=str1+""+str2;

}

m_random=str1;

//产生随即页面序列

text4.setText(""+m_random);

}

}catch(NumberFormatExceptionee){

JOptionPane.showMessageDialog(this,"输入数字字符!

","警告!

",

JOptionPane.WARNING_MESSAGE);

text1.setText("0");

text2.setText("0");

text3.setText("0");

text4.setText("");

FIFOTA.text1.setText("0");

FIFOTA.text2.setText("0");

FIFOTA.text3.setText("0");

FIFOTA.text4.setText("0");

FIFOTA.textarea.setText(null);

LRUTA.text1.setText("0");

LRUTA.text2.setText("0");

LRUTA.text3.setText("0");

LRUTA.text4.setText("");

LRUTA.textarea.setText(null);

OptTA.text1.setText("0");

OptTA.text2.setText("0");

OptTA.text3.setText("0");

OptTA.text4.setText("");

OptTA.textarea.setText(null);

}

}

publicvoidFIFO(){

intm_absent;//缺页数

doublem_absentf;//缺页率

intm_change;//置换次数

doublem_changef;//页面置换率

intmym[];//存放物理块中现有的页面号

intm1=0,r;

intas=0;//置换页面数

booleanx;//页面是否需要置换

Stringstr1,str2;

Stringm_list="FIFO置换算法";

mym=newint[m];

for(inti=0;i

str1="";

str2="";

x=true;

for(intk=0;k

if(myt[i]==mym[k]){

for(r=k;r

mym[r]=mym[r+1];

mym[r]=myt[i];

x=false;//判断物理块中是不是有跟当前须替换的页面

break;

}

}

if(x){

mym[0]=myt[i];

for(r=0;r

mym[r]=mym[r+1];

mym[r]=myt[i];

as++;

}

intb;

for(intj=0;j

b=mym[j];

str2=String.valueOf(b);

str1=str1+""+str2;

}

m_list=m_list+'\n'+str1;

}

m_absent=as;

m_absentf=(double)as/n;

if((as-m)<=0){

m_change=0;

m_changef=0;

}else{

m_change=as-m;

m_changef=(double)(as-m)/n;

}

FIFOTA.text1.setText(""+m_absent);

FIFOTA.text2.setText(""+m_absentf);

FIFOTA.text3.setText(""+m_change);

FIFOTA.text4.setText(""+m_changef);

FIFOTA.textarea.setText(""+m_list);

}

publicvoidLRU(){

intm_absent;//缺页数

doublem_absentf;//缺页率

intm_change;//置换次数

doublem_changef;//页面置换率

intmym[];//存放物理块中现有的页面号

intmyb[];

intas=0;//置换页面数

myb=newint[n];

intm1=0,a;

booleanx;//页面是否需要置换

Stringstr2,str1;

Stringm_list="LUR置换算法";

mym=newint[m];

for(inti=0;i

str1="";

str2="";

x=true;

for(intk=0;k

if(myt[i]==mym[k])//判断物理块中的页面是否与当前页面相等

{

myb[k]=myb[0];

for(intj=0;j

if(j!

=k)

myb[j]=myb[j]+1;//使物理块中的每个未使用页面的时间增一

}

x=false;//判断物理块中是不是有跟当前须替换的页面

m1++;

break;

}

}

if(x){

intc=0,d;

if((i-m1)

a=i-m1;

}//当前物理页面未填满时直接装入

else{

d=myb[0];

for(inth=0;h

if(d

d=myb[h];

c=h;

}

}

a=c;//找出物理块中最久未使用的页面号

}

mym[a]=myt[i];//将其替换

myb[a]=0;

for(intk=0;k

if(k!

=a)

myb[k]=myb[k]+1;//使物理块中的每个未改变页面的时间增一

}

myb[a]=0;

as++;

}

for(intj=0;j

intb;

b=mym[j];

str2=String.valueOf(b);

str1=str1+""+str2;

}

m_list=m_list+"\n"+str1;

}

m_absent=as;

m_absentf=(double)as/n;

if((as-m)<=0){

m_change=0;

m_changef=0;

}else{

m_change=as-m;

m_changef=(double)(as-m)/n;

}

LRUTA.text1.setText(""+m_absent);

LRUTA.text2.setText(""+m_absentf);

LRUTA.text3.setText(""+m_change);

LRUTA.text4.setText(""+m_changef);

LRUTA.textarea.setText(""+m_list);

}

publicvoidOpt(){

intm_absent;//缺页数

doublem_absentf;//缺页率

intm_change;//置换次数

doublem_changef;//页面置换率

intmym[];//存放物理块中现有的页面号

intmyb[];

intas=0;//置换页面数

myb=newint[n];

intm1=0,a;

booleanx;//页面是否需要置换

Stringstr2,str1;

Stringm_list="Optimal置换算法";

mym=newint[m];

for(inti=0;i

str1="";

str2="";

x=true;

for(intk=0;k

if(myt[i]==mym[k])//判断物理块中的页面是否与当前页面相等

{

x=false;//判断物理块中是不是有跟当前须替换的页面

m1++;

break;

}

}

if(x){

intc=0,d;

if((i-m1)

a=i-m1;

}//当前物理页面未填满时直接装入

else{

for(intk=0;k

for(inth=i;h

if(mym[k]==myt[h])//判断物理块中的页面是否与未来页面相等

{

myb[k]=h;

break;

}

if(h==length-1)

myb[k]=length;

}

}

d=myb[0];

for(inth=0;h

if(d

d=myb[h];

c=h;

}

}

a=c;//找出物理块中最久未使用的页面号

}

mym[a]=myt[i];//将其替换

myb[a]=0;

for(intk=0;k

if(k!

=a)

myb[k]=myb[k]+1;//使物理块中的每个未改变页面的时间增一

}

myb[a]=0;

as++;

}

for(intj=0;j

intb;

b=mym[j];

str2=String.valueOf(b);

str1=str1+""+str2;

}

m_list=m_list+"\n"+str1;

}

m_absent=as;

m_absentf=(double)as/n;

if((as-m)<=0){

m_change=0;

m_changef=0;

}else{

m_change=as-m;

m_changef=(double)(as-m)/n;

}

OptTA.text1.setText(""+m_absent);

OptTA.text2.setText(""+m_absentf);

OptTA.text3.setText(""+m_change);

OptTA.text4.setText(""+m_changef);

OptTA.textarea.setText(""+m_list);

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==randomButton){

misInPut();

}

if(e.getSource()==button1){

FIFO();

}

if(e.getSource()==button2){

LRU();

}

if(e.getSource()==button3){

Opt();

}

if(e.getSource()==clearButton){

text1.setText("0");

text2.setText("0");

text3.setText("0");

text4.setText("");

FIFOTA.text1.setText("0");

FIFOTA.text2.setText("0");

FIFOTA.text3.setText("0");

FIFOTA.text4.setText("0");

FIFOTA.textarea.setText(null);

LRUTA.text1.setText("0");

LRUTA.text2.setText("0");

LRUTA.text3.setText("0");

LRUTA.text4.setText("0");

LRUTA.textarea.setText(null);

OptTA.text1.setText("0");

OptTA.text2.setText("0");

OptTA.text3.setText("0");

OptTA.text4.setText("0");

OptTA.textarea.setText(null);

myt=newint[0]

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1