资源简介
多道批处理作业调度模拟程序
目的:
熟悉作业调度算法及其实现
内容:
编写一个程序完成多道批处理作业调度
要求:
只考虑1个CPU的资源,其他资源不考虑
使用响应比高者优先算法
程序采用键盘输入,输入格式为:
K
TJ1 YS1
……
TJK YSK
其中K是作业数(>0),TJi提交时间,YSi (i=1~K)是作业预计的运行时间(以分钟计)TJ的输入格式是XXYY,其中XX是时,YY是分,如10点28分,输入为1028。但内部计算要以60进制来算。要求输出按照作业调度的先后次序输出结果,每行为一个作业状态,从左到右分别是调度次序,作业号,调度时间,周转时间和带权周转时间最后一行输出两个数,第一为平均周转时间,第二为平均带权周转时间。
输入方式为:时间用时刻输入法 即10:10 输入1010
以空格隔开
例如进程数为4, 提交时间 0950 1010 1020 1130 即代表4个进程提交时间分别为9:50 ,10:10....
代码片段和文件信息
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 j1j2;JTextArea ta;
void disp()
{
f=new Jframe(“Operation System“);
j1=new JPanel();
j2=new JPanel();
l1=new JLabel(“请输入作业数:“);
l2=new JLabel(“平均周转时间:“);
l3=new JLabel(“平均带权周转:“);
l4=new JLabel(“提交时间:“);
l5=new JLabel(“运行时间:“);
l6=new JLabel(“运行结果:“);
t1=new JTextField(3);
ta=new JTextArea(1030);
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);
j2.add(l4);
j2.add(t2);
j2.add(l5);
j2.add(t3);
j2.add(l6);
j2.add(ta);
j2.add(l2);
j2.add(t4);
j2.add(l3);
j2.add(t5);
j2.add(b);
f.add(j1“North“);
f.add(j2“Center“);
f.setSize(367470);
f.setLocation(8040);
f.setVisible(true);
}
class Cal implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String s1s2s3;int workcount;int iindex=0index1=0dbindex=-1;int timenow;float dbmaxdb=0;
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;
}
myJob job[]=new myJob[workcount];int turn[]=new int[workcount];
for(i=0;i {
job[i]=new myJob(handin[i]work[i]falsei);
// job[i].handin=handin[i];
// job[i].work=work[i];
// job[i].finish=false;
// System.out.print(“ “+handin[i]);
System
评论
共有 条评论