?? datasource.java
字號:
package simcpu;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
public class DataSource {
static int[][][] cpuTimes;
static int[][][] ioTimes;
static int[][] arrivalTimes;
static int nProcess,threadSwitch,processSwitch;
static int slice=5;
static int totalServiceTime=0;
static int totalRoundTime=0;
static int finishedCount=0;
static boolean _d,_v;
static List<SimThread> threadpool=new LinkedList<SimThread>();
public static void init(String file) {
MyFileReader dis=null;
try {
dis=new MyFileReader(file);
} catch (FileNotFoundException e) {
System.out.println("File not found.");
System.exit(1);
}
try {
nProcess=dis.readInt();
threadSwitch=dis.readInt();
processSwitch=dis.readInt();
cpuTimes=new int[nProcess+1][][];
ioTimes=new int[nProcess+1][][];
arrivalTimes=new int[nProcess+1][];
for(int i=0;i<nProcess;i++) {
readProcess(dis);
}
} catch (IOException e) {
System.out.println("IO Error.");
System.exit(1);
}
}
private static void readProcess(MyFileReader dis) throws IOException {
int pid=dis.readInt();
int nThread=dis.readInt();
cpuTimes[pid]=new int[nThread+1][];
ioTimes[pid]=new int[nThread+1][];
arrivalTimes[pid]=new int[nThread+1];
for(int i=1;i<=nThread;i++) {
readThread(dis,pid);
}
}
private static void readThread(MyFileReader dis, int pid) throws IOException {
int tid=dis.readInt();
arrivalTimes[pid][tid]=dis.readInt();
int nCpu=dis.readInt();
cpuTimes[pid][tid]=new int[nCpu+1];
ioTimes[pid][tid]=new int[nCpu];
int i;
for(i=1;i<nCpu;i++) {
dis.readInt();
cpuTimes[pid][tid][i]=dis.readInt();
totalServiceTime+=cpuTimes[pid][tid][i];
ioTimes[pid][tid][i]=dis.readInt();
}
dis.readInt();
cpuTimes[pid][tid][i]=dis.readInt();
totalServiceTime+=cpuTimes[pid][tid][i];
}
public static int getNumberCpu(int pid, int tid) {
return cpuTimes[pid][tid].length-1;
}
public static int getCpuTime(int pid, int tid, int i) {
return cpuTimes[pid][tid][i];
}
public static int getIoTime(int pid, int tid, int i) {
return ioTimes[pid][tid][i];
}
public static int getThreadSwith() {
return threadSwitch;
}
public static int getProcessSwitch() {
return processSwitch;
}
public static int getSlice() {
return slice;
}
public static float getAverageTurnroundTime() {
return (float)totalRoundTime/finishedCount;
}
public static void addTurnroundTime(int roundTime) {
finishedCount++;
totalRoundTime+=roundTime;
}
public static void setArgs(boolean _d, boolean _v) {
DataSource._d=_d;
DataSource._v=_v;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -