操作系统课程设计银行家算法和页面置换算法.docx

上传人:b****5 文档编号:30275435 上传时间:2023-08-13 格式:DOCX 页数:33 大小:498.12KB
下载 相关 举报
操作系统课程设计银行家算法和页面置换算法.docx_第1页
第1页 / 共33页
操作系统课程设计银行家算法和页面置换算法.docx_第2页
第2页 / 共33页
操作系统课程设计银行家算法和页面置换算法.docx_第3页
第3页 / 共33页
操作系统课程设计银行家算法和页面置换算法.docx_第4页
第4页 / 共33页
操作系统课程设计银行家算法和页面置换算法.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

操作系统课程设计银行家算法和页面置换算法.docx

《操作系统课程设计银行家算法和页面置换算法.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计银行家算法和页面置换算法.docx(33页珍藏版)》请在冰豆网上搜索。

操作系统课程设计银行家算法和页面置换算法.docx

操作系统课程设计银行家算法和页面置换算法

南京工程学院

操作系统课程设计说明书

目操作系统

—银行家算法和页面置换算法

软件101

生姓名

刘洋

202100320

课设截图:

 

2

遴程号

alocation

daim

need

available

332

F0

F1

F2

F3

F4

743

122

S00

011

431

753

322

902

222

433

D10

2Q0

302

211

D02

可用竟原;3

请求竟源世程号

释前资源进程号

请术资源对

诵定

LJU

揺啟资滙

currenta\ail

need

allocation

ojrr..+aHo...

possible

P1

332

122

200

W32

Tr^e

PS

5.32

011

511

743

True

P4

143

i31

D02

745

True

PO

745

7+3

D10

755

True

P2

755

600

302

1357

True

开冶检测

安全醐匕啟珂艮聲

 

 

 

 

9410458S761

[30.31

[09.4]

[9410]

円10.4]

(1045]

I*5.8]

(45.0]

(5a?

]

[B7M

FM]

门蜜克中斷丈数;处8此聲黑貌页中斷零为-站

 

 

源代码:

3个类:

MainFrame.java:

importjava.awt.Font;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.ButtonGroup;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JRadioButton;

importjavax.swing.UIManager;

importjavax.swing.UIManager.LookAndFeelInfo;

publicclassMainFrameextendsJFrameimplementsActionListener{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privateJPanelpanel1,panel2,panel3;

privateJLabellabel1,label2;

privateJButtonbutton1;

privateJRadioButtonb1,b2;

publicMainFrame()

{

super("操作系统课程设计");

this.setBounds(300,150,800,500);this.setBackground(java.awt.Color.LIGHT_GRAY);this.setLayout(newjava.awt.GridLayout(3,1));

panel1=newJPanel();

panel2=newJPanel();

panel3=newJPanel();

Fontf=newFont("楷体",1,60);

Fontf1=newFont("宋体",3,30);

Fontf2=newFont("幼圆",1,15);

label1=newJLabel("操作系统课程设计");label1.setFont(f);

label2=newJLabel("算法模拟题目:

");label2.setFont(f1);

panel1.add(label1);

panel2.add(label2);

ButtonGroupbgroup=newButtonGroup();b1=newJRadioButton("银行家算法",true);b1.setFont(f1);

bgroup.add(b1);

b2=newJRadioButton("页面置换算法");

b2.setFont(f1);

bgroup.add(b2);

panel2.add(b1);

panel2.add(b2);

button1=newJButton("开始演示");button1.setFont(f2);button1.addActionListener(this);panel3.add(button1);

this.add(panel1);

this.add(panel2);

this.add(panel3);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==button1)

{

if(b1.isSelected())

{

newBanker();

}

if(b2.isSelected())

{

newYemian();

}publicstaticvoidmain(String[]args)

{try{for(LookAndFeelInfoinfo:

UIManager.getInstalledLookAndFeels()){if("Nimbus".equals(info.getName())){

UIManager.setLookAndFeel(info.getClassName());break;

}}}catch(Exceptione1){}newMainFrame();

}

}

Banker.java:

importjava.awt.*;

importjava.awt.event.*;

importjava.util.ArrayList;

importjavax.swing.*;

importjavax.swing.table.DefaultTableCellRenderer;

importjavax.swing.table.DefaultTableModel;

publicclassBankerextendsJFrameimplementsActionListener

{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privateJTabletable1,table2;

privateJPanelp0,p1,p11,p12,p13,p14,p2,p3,p31,p32,p33,p34,p4,p5;

privateJLabelt1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;

privateJButtonb1,b2,b3,b4,b5,b6;

privateTextFieldtext01,text02,text03,text04,text05,text06;//编辑框

privateJTextField[]text1,text2,text3,text4,text5;//进程组的数据DefaultTableModeltablemodel,tablemodel1;

ArrayListlist;

int[][]claim,allocation,need;int[]available;

int[]request,temavail,release;boolean[]possible;

intm,n,index=0;

publicBanker()

{

super("银行家算法模拟");p0=newJPanel();

p1=newJPanel();p11=newJPanel();p12=newJPanel();p13=newJPanel();p14=newJPanel();p2=newJPanel();p3=newJPanel();p31=newJPanel();p32=newJPanel();p33=newJPanel();p34=newJPanel();p4=newJPanel();

p5=newJPanel();

p0.setLayout(newGridLayout(5,1));

p1.setLayout(newGridLayout(4,1));

p3.setLayout(newGridLayout(4,1));

p1.add(p11);

p1.add(p12);

p1.add(p13);

p1.add(p14);

p3.add(p31);

p3.add(p32);

p3.add(p33);

p3.add(p34);

p0.add(p1);

p0.add(p2);

p0.add(p3);

p0.add(p4);

p0.add(p5);t1=newJLabel("进程数");

t2=newJLabel("资源数");

t3=newJLabel("进程号");

t4=newJLabel("已分配资资源:

");

t5=newJLabel("资源最大需求:

");

t6=newJLabel("可用资源:

");

t7=newJLabel("请求资源进程号");t8=newJLabel("请求资源为");

t9=newJLabel("释放资源");t10=newJLabel("安全序列");

t11=newJLabel("释放资源进程号");

b1=newJButton("确定");

b2=newJButton("添加");

b3=newJButton("确定");

b4=newJButton("请求");

b5=newJButton("开始检测");

b6=newJButton("释放");

text1=newJTextField[6];

text2=newJTextField[6];

text3=newJTextField[6];

text4=newJTextField[6];

text5=newJTextField[6];

for(inti=0;i<5;i++)

{

text1[i]=newJTextField(4);

text2[i]=newJTextField(4);

text3[i]=newJTextField(4);

text4[i]=newJTextField(4);

text5[i]=newJTextField(4);

}

text01=newTextField(4);

text02=newTextField(4);

text03=newTextField(4);

text04=newTextField(4);

text05=newTextField(4);

text06=newTextField(20);

String[]columnNames1={"进程号","allocation","claim","need","available"};tablemodel=newDefaultTableModel(columnNames1,0);

table1=newJTable(tablemodel);table1.setPreferredScrollableViewportSize(newDimension(700,200));table1.setRowHeight(20);

table1.doLayout();

DefaultTableCellRendererr=newDefaultTableCellRenderer();r.setHorizontalAlignment(JLabel.CENTER);

table1.setDefaultRenderer(Object.class,r);

JScrollPanepane1=newJScrollPane(table1);

p11.add(t1);

p11.add(text01);

p11.add(t2);

p11.add(text02);

p11.add(b1);

p12.add(t3);

p12.add(text03);

p12.add(b2);

p13.add(t4);

for(inti=0;i<5;i++)

p13.add(text1[i]);

p14.add(t5);

for(inti=0;i<5;i++)

p14.add(text2[i]);

p2.add(pane1);

p31.add(t6);

for(inti=0;i<5;i++)

p31.add(text3[i]);

p31.add(b3);

p32.add(t7);

p32.add(text04);

p32.add(t8);

for(inti=0;i<5;i++)

p32.add(text4[i]);

p32.add(b4);

p33.add(t11);

p33.add(text05);

p33.add(t9);

for(inti=0;i<5;i++)

p33.add(text5[i]);

p33.add(b6);

p34.add(b5);

String[]columnNames2={"进程号"currentavail","need","allocation","curr...+allo...","possible"};

tablemodel1=newDefaultTableModel(columnNames2,0);

table2=newJTable(tablemodel1);table2.setPreferredScrollableViewportSize(newDimension(700,200));table2.setRowHeight(20);

table2.doLayout();

DefaultTableCellRendererr1=newDefaultTableCellRenderer();r1.setHorizontalAlignment(JLabel.CENTER);table2.setDefaultRenderer(Object.class,r1);

JScrollPanepane2=newJScrollPane(table2);

p4.add(pane2);

p5.add(t10);

p5.add(text06);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

p0.setBackground(Color.lightGray);

list=newArrayList();

this.setContentPane(p0);

this.setVisible(true);

this.pack();

this.setLocation(300,10);this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==b1)

{

try{

m=Integer.parseInt(text01.getText());}catch(NumberFormatExceptione1){

JOptionPane.showMessageDialog(this,"进程数不能为空");return;

}

try{

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

}catch(NumberFormatExceptione1)

{

JOptionPane.showMessageDialog(this,"资源数不能为空");return;

}

claim=newint[m][n];

need=newint[m][n];

allocation=newint[m][n];

available=newint[n];

request=newint[n];

release=newint[n];

for(inti=0;i<5-n;i++)

p13.remove(text1[4-i]);

p13.updateUI();

for(inti=0;i<5-n;i++)

p14.remove(text2[4-i]);p14.updateUI();

for(inti=0;i<5-n;i++)

p31.remove(text3[4-i]);

p31.updateUI();

for(inti=0;i<5-n;i++)

p32.remove(text4[4-i]);p32.updateUI();

for(inti=0;i<5-n;i++)

p33.remove(text5[4-i]);

p33.updateUI();

temavail=newint[n];

Stringstr[]={"","","","","",""};

for(inti=0;i

tablemodel1.addRow(str);

}

if(e.getSource()==b2)

{

Stringname[]=newString[m];

if(index>=m)

{

JOptionPane.showMessageDialog(this,"进程个数已满");

return;

}

try{

for(intj=0;j

{allocation[index][j]=Integer.parseInt(text1[j].getText());claim[index][j]=Integer.parseInt(text2[j].getText());need[index][j]=claim[index][j]-allocation[index][j];

}

}catch(Exceptionf){}name[index]="P"+index;Stringstrd[]={"","","","",""};strd[0]=name[index];

for(intj=0;j

{strd[1]+=allocation[index][j]+"";

}

for(intj=0;j

{

strd[2]+=claim[index][j]+"";

}

for(intj=0;j

{

strd[3]+=need[index][j]+"";

}

strd[4]="";

tablemodel.addRow(strd);

index++;

}

if(e.getSource()==b3)

{

try{

for(inti=0;i

{

available[i]=Integer.parseInt(text3[i].getText());temavail[i]=available[i];

}

}catch(NumberFormatExceptionf)

{

JOptionPane.showMessageDialog(this,"可用资源不能为空,请重新输入");

return;

}

Stringstr="";

for(inti=0;i

str+=available[i]+"";tablemodel.setValueAt(str,0,4);

}

if(e.getSource()==b5)

{

list.clear();

safe();

for(inti=0;i

update_table2();

}

if(e.getSource()==b4)

{

for(inti=0;i

{

try{

request[i]=Integer.parseInt(text4[i].getText());}catch(NumberFormatExceptionf1){

JOptionPane.showMessageDialog(this,"请求资源不能为空,请重新输入");

return;

}

}requestresource();

}if(e.getSource()==b6)

{

for(inti=0;i

{

try{

release[i]=Integer.parseInt(text5[i].getText());}catch(NumberFormatExceptionf1){

JOptionPane.showMessageDialog(this,"释放资源不能为空,请重新输入");

return;

}

}

releaseresource();

}

}

privatebooleansafe()

{

booleanresult=false;

for(inti=0;i

{

intj=0;

while(j

{

booleancan=true;

for(intk=0;k

{

if(need[j][k]>available[k])can=false;

}if(can&&!

list.contains((Object)j))

{

list.add(j);

for(intk=0;k

}

j++;

if(j>=m)

break;

}

if(i==m-1)

{

break;

}

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

当前位置:首页 > 求职职场 > 面试

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

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