操作系统课程设计3_操作系统课程设计完整

其他范文 时间:2020-02-27 22:37:09 收藏本文下载本文
【www.daodoc.com - 其他范文】

操作系统课程设计3由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统课程设计完整”。

操作系统课程设计3 一. 银行家算法代码

package sheji;

import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.TextField;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.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;

public cla Banker extends JFrame implements ActionListener{

JTable table1;Object[][] data;JPanel p0,p1,p11,p12,p13,p14,p2,p3,p31,p32,p33,p34,p4;JLabel t1,t2,t3,t4,t5,t6,t7,t8,t9;//t10输出安全序列省去

JButton b1,b2,b3,b6,b5;TextField text01,text02,text03,text5,text6;JTextField[] text1,text2,text3,text4;JTextArea text7;

String s1,s2 = new String();int M,N,i,j,count = 0,flag = 0;int[][]Max,Need,Allocation;int[] Available,Work,Request,Temp;

public Banker(){ super(“211213067 秦瑛 银行家算法模拟系统”);p0 = new JPanel();p1 = new JPanel();p11 = new JPanel();p12 = new JPanel();p13 = new JPanel();p14 = new JPanel();p2 = new JPanel();p3 = new JPanel();p31 = new JPanel();p32 = new JPanel();p33 = new JPanel();p34 = new JPanel();p4 = new JPanel();

p0.setLayout(new GridLayout(4,1));p1.setLayout(new GridLayout(4,1));p3.setLayout(new GridLayout(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);

t1=new JLabel(“进程数”);t2=new JLabel(“资源数”);t3=new JLabel(“进程号”);t4=new JLabel(“已分配资源”);t5=new JLabel(“资源最大需求”);t6=new JLabel(“可用资源”);t7=new JLabel(“请求资源进程号”);t8=new JLabel(“请求资源为”);t9=new JLabel(“安全检测”);

b1=new JButton(“确定”);b2=new JButton(“添加”);b3=new JButton(“确定”);b5=new JButton(“请求”);b6=new JButton(“安全检测”);

text1 = new JTextField[6];text2 = new JTextField[6];text3 = new JTextField[6];text4 = new JTextField[6];

for(int i=0;i

text1[i] = new JTextField(4);

text2[i] = new JTextField(4);

text3[i] = new JTextField(4);

text4[i] = new JTextField(4);}

text01 = new TextField(4);text02 = new TextField(4);text03 = new TextField(4);text5 = new TextField(4);text6 = new TextField(50);

String[] columnNames1 = {“进程号”,“资源最大需求Max”,“已分配的资源Allocation”,“需要的资源Need”,“可利用的资源Available”};data = new Object[100][5];table1 = new JTable(data, columnNames1);table1.setPreferredScrollableViewportSize(new Dimension(550, 100));table1.setRowHeight(20);table1.doLayout();JScrollPane pane1 = new JScrollPane(table1);

text7 = new JTextArea(“ ”,6,40);JScrollPane pane2 = new JScrollPane(text7);text7.setEditable(false);

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(int i=0;i

p13.add(text1[i]);p14.add(t5);for(int i=0;i

p14.add(text2[i]);p2.add(pane1);

p31.add(t6);for(int i=0;i

p31.add(text3[i]);p31.add(b3);p32.add(t7);p32.add(text5);p32.add(t8);for(int i=0;i

p32.add(text4[i]);p33.add(b6);p33.add(b5);p34.add(t9);p34.add(text6);p4.add(pane2);

b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);

p0.setBackground(Color.lightGray);

setContentPane(p0);this.setVisible(true);this.pack();

}

public void Diguisafe(int k,int n){//递归求解安全序列函数

int m,a;if(k==n){

for(int j=0;j

Work[j] = Available[j];

if(Safe()==1){

for(a=0;a

s1 += Temp[a]+“->”;

s1 +=Temp[a]+“”+“n”;

count++;

for(int j=0;j

Work[j] = Available[j];

} } else

for(i=k;i

m=Temp[k];

Temp[k]=Temp[i];

Temp[i]=m;

Diguisafe(k+1,n);

m=Temp[k];

Temp[k]=Temp[i];

Temp[i]=m;

} }

public int Safe(){//求是否安全序列

int i;for(i=0;i

if(Small(Temp[i]-1)==1){

CountWork(Temp[i]-1);

continue;

}

else break;

} if(i==M)return 1;else return 0;

}

public void CountWork(int i){//计算工作向量函数

for(int j=0;j

Work[j] = Work[j]+Allocation[i][j];

}

public int Small(int i){//判断是否满足需求函数

int flag = 0;for(int j=0;j

if(Need[i][j]

else{

flag =0;

break;

} } return flag;

} public int Req_need(){//判断是否满足需求资源函数

int flag = 0;for(int i=0;i

if(Need[j-1][i]>=Request[i])flag = 1;

else{

flag=0;break;

} } return flag;}

public int Req_ava(){//判断是否满足可用资源数

int flag=0;for(int i=0;i

if(Available[i]>=Request[i])flag=1;

else

{

flag=0;break;

} } return flag;}

public void Changedata(){//预分配函数

String s_available = new String();for(int i=0;i

Available[i] = Available[i]-Request[i];

Allocation[j-1][i] = Allocation[j-1][i]+Request[i];

Need[j-1][i] = Need[j-1][i]-Request[i];

s_available += Available[j]+“ ”;} data[0][4] = s_available;table1.repaint();text6.setText(“ ”);text7.setText(“ ”);}

public void Qingqiu(){//资源请求函数 count = 0;if(Req_need()==1&&Req_ava()==1){//不满足需求

Changedata();//预分配

} else{

s2 =“不能分配”;

text6.setText(s2);} }

public void actionPerformed(ActionEvent e){ if(e.getSource()==b1){

M = Integer.parseInt(text01.getText());

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

Max = new int[M][N];

Allocation = new int[M][N];

Need = new int[M][N];

Available = new int[N];

Request = new int[N];

Work = new int[N];

Temp = new int[M];}

if(e.getSource()==b2){ i = Integer.parseInt(text03.getText());int max,allocation;String s_max,s_need,s_allocation;s_max = new String();s_need = new String();s_allocation = new String();

for(int j=0;j

for(int j=0;j

if(e.getSource()==b3){ int available;String s_available=new String();for(int j=0;j

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

Available[j] = available;

s_available += Available[j]+“ ”;} data[0][4] = s_available;table1.repaint();}

if(e.getSource()==b5){ flag =1;//请求

int request;text6.setText(“ ”);text7.setText(“ ”);j = Integer.parseInt(text5.getText());for(int i=0;i

request = Integer.parseInt(text4[i].getText());

Request[i] = request;} Qingqiu();}

if(e.getSource()==b6){//安全序列

s1=new String();

count=0;Diguisafe(0,M-1);if(count==0&&flag==0){

s2 =“系统处于不安全状态,不能请求”;} else if(count==0&&flag==1){

s2 =“系统处于不安全状态,不能分配”;} else

s2=“有”+count+“个安全序列,”;text7.setText(s1);text6.setText(s2);flag = 0;} } public static void main(String[] args){

new Banker();} } 二. 运行界面

进入界面:

数据填充检测:

操作系统课程设计

操作系统课程设计注意事项:0.请每位同学必须按时提交课程设计报告(包括电子版和纸质版),算入期末成绩1.在三个题目中选择一个2.如果选择题目(一)进程调度算法,要求实现其中2个以上(......

操作系统课程设计

1 引言操作系统是计算机科学与技术专业的主要专业基础课和主干课。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到......

操作系统课程设计

长春理工大学 软件学院 0813111班 27号姓名:丁为胜 一. 概述1、课程设计目的及任务课程设计地点及要求每个学生一台微机,需要安装windows98或windows2000操作系统,配备VC、VB、j......

操作系统课程设计

《操作系统》/《操作系统课程设计》课设指导书《操作系统》 《操作系统课程设计》指导信息技术学院课设书《操作系统》/《操作系统课程设计》课设指导书《操作系统》/《操作......

操作系统课程设计

湖北民族学院信息工程学院11级计算机专业操作系统课程设计(操作系统课程设计)连续动态分区内存管理模拟实现学生姓名: 韩 慧 学生学号: 031140312 班 级: 031140--30311401、02、......

下载操作系统课程设计3word格式文档
下载操作系统课程设计3.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文