资源简介

用java实现高响应比优先算法,考虑了空转的情况(即:在前面的进程做完之前后面的进程没有进入)。

资源截图

代码片段和文件信息

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;

 
 class OS {
  Jframe f;JLabel l1l2l3l4l5l6;JTextField t1t2t3t4t5t6;
  JButton b;JPanel j1j2j3;JTextArea ta;
  void disp()
  {
  f=new Jframe(“Operation System“);
  j1=new JPanel();
  j2=new JPanel();
  j3=new JPanel();
  l1=new JLabel(“请输入作业数:“JLabel.CENTER);
  l2=new JLabel(“平均周转时间:“JLabel.CENTER);
  l3=new JLabel(“平均带权周转:“JLabel.CENTER);
  l4=new JLabel(“进入时间:“JLabel.CENTER);
  l5=new JLabel(“运行时间:“JLabel.CENTER);
  l6=new JLabel(“运行结果:“JLabel.CENTER);
  t1=new JTextField(3);
  ta=new JTextArea(6030);
  b=new JButton(“开始运算“);
  b.addActionListener(new Cal());
  j1.add(l1);j1.add(t1);
  t2=new JTextField(30);
  t3=new JTextField(30);
  t4=new JTextField(15);
  t5=new JTextField(15);
  j1.setLayout(new GridLayout(0 1));
  j1.add(l4);
  j1.add(t2);
  j1.add(l5);
  j1.add(t3);
  j2.add(l6);
  j2.add(ta);
  j1.add(l2);
  j1.add(t4);
  j1.add(l3);
  j1.add(t5);
  j3.add(b);
  f.add(j1“West“);
  f.add(j2“Center“);
  f.add(j3“South“);
  f.setSize(700600);
  f.setLocationRelativeTo(null); //居中显示
  f.setResizable(false);
  f.setVisible(true);
 
  }
  class Cal implements ActionListener
  {
  public void actionPerformed(ActionEvent e)
  {
  String s1s2s3;int workcount;int iindex=0index1=0dbindex=0;int timenow;float dbmaxdb=0intime;boolean flag=false;
  int kqjm;
  s1=t1.getText();
  workcount=Integer.parseInt(s1);//获得作业数
 
  s2=t2.getText();
  String x[]=new String[workcount];//获得进入时间
x=s2.split(“ “);
int handin[]=new int[workcount];
for(i=0;i {

handin[i]=Integer.parseInt(x[i])/100*60+Integer.parseInt(x[i])%100;//起始时间
}

 
  s3=t3.getText();
  String y[]=new String[workcount];//获得运行时间
y=s3.split(“ “);
int work[]=new int[workcount];
for(i=0;i {
work[i]=Integer.parseInt(y[i])/100*60+Integer.parseInt(y[i])%100;
}
//创建一个job类的实例
myJob job[]=new myJob[workcount];int turn[]=new int[workcount];//存储调度顺序

for(i=0;i {
job[i]=new myJob(handin[i]work[i]falsei0);
// job[i].handin=handin[i];
// job[i].work=work[i];
// job[i].finish=false;
// System.out.print(“ “+handin[i]);
System.out.print(“ “+job[i].handin+job[i].work+job[i].finish+job[i].jobnum);
}
//找到第一个进来的job并输出
for(i=0;i {
if(job[i].handin {
index=i;
}
else if(job[i].handin==job[index].handin)
{
if(job[i].work index=i;
}
}
System.out.print(“   第一个:“+index+“   “);
timenow=job[index].handin+job[index].work;
System.out.println(“timenow=“+timenow+“   “);
turn[0]=index;
job[index].finish=true;
for(q=0;q {
if(job[q].finish==false&&timenow>job[q].ha

评论

共有 条评论