資源簡介
多道批處理作業調度模擬程序
目的:
熟悉作業調度算法及其實現
內容:
編寫一個程序完成多道批處理作業調度
要求:
只考慮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
評論
共有 條評論