資源簡介
用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
評論
共有 條評論