操作系统课程设计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、......