You are on page 1of 4

// This file contains the main() function for the Scheduling // simulation.

Init() initializes most of the variables by // reading from a provided file. SchedulingAlgorithm.Run() is // called from main() to run the simulation. Summary-Results // is where the summary results are written, and Summary-Processes // is where the process scheduling summary is written. import java.io.*; import java.util.*; import sProcess; import Common; import Results; import SchedulingAlgorithm; public class Scheduling { private static int processnum = 5; private static int meanDev = 1000; private static int standardDev = 100; private static int runtime = 1000; private static Vector processVector = new Vector(); private static Results result = new Results("null","null",0); private static String resultsFile = "Summary-Results"; private static void Init(String file) { File f = new File(file); String line; String tmp; int cputime = 0; int ioblocking = 0; double X = 0.0; try { //BufferedReader in = new BufferedReader(new FileReader(f)); DataInputStream in = new DataInputStream(new FileInputStream(f)); while ((line = in.readLine()) != null) { if (line.startsWith("numprocess")) { StringTokenizer st = new StringTokenizer(line); st.nextToken(); processnum = Common.s2i(st.nextToken()); } if (line.startsWith("meandev")) { StringTokenizer st = new StringTokenizer(line); st.nextToken(); meanDev = Common.s2i(st.nextToken());

} if (line.startsWith("standdev")) { StringTokenizer st = new StringTokenizer(line); st.nextToken(); standardDev = Common.s2i(st.nextToken()); } if (line.startsWith("process")) { StringTokenizer st = new StringTokenizer(line); st.nextToken(); ioblocking = Common.s2i(st.nextToken()); X = Common.R1(); while (X == -1.0) { X = Common.R1(); } X = X * standardDev; cputime = (int) X + meanDev; processVector.addElement(new sProcess(cputime, ioblocking, 0, 0, 0)); } if (line.startsWith("runtime")) { StringTokenizer st = new StringTokenizer(line); st.nextToken(); runtime = Common.s2i(st.nextToken()); } } in.close(); } catch (IOException e) { /* Handle exceptions */ } } private static void debug() { int i = 0; System.out.println("processnum " + processnum); System.out.println("meandevm " + meanDev); System.out.println("standdev " + standardDev); int size = processVector.size(); for (i = 0; i < size; i++) { sProcess process = (sProcess) processVector.elementAt(i); System.out.println("process " + i + " " + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.numblocked); } System.out.println("runtime " + runtime); } public static void main(String[] args) { int i = 0;

if (args.length != 1) { System.out.println("Usage: 'java Scheduling <INIT FILE>'"); System.exit(-1); } File f = new File(args[0]); if (!(f.exists())) { System.out.println("Scheduling: error, file '" + f.getName() + "' does not exist."); System.exit(-1); } if (!(f.canRead())) { System.out.println("Scheduling: error, read of " + f.getName() + " failed."); System.exit(-1); } System.out.println("Working..."); Init(args[0]); if (processVector.size() < processnum) { i = 0; while (processVector.size() < processnum) { double X = Common.R1(); while (X == -1.0) { X = Common.R1(); } X = X * standardDev; int cputime = (int) X + meanDev; processVector.addElement(new sProcess(cputime,i*100,0,0,0)); i++; } } result = SchedulingAlgorithm.Run(runtime, processVector, result); try { //BufferedWriter out = new BufferedWriter(new FileWriter(resultsFile)); PrintStream out = new PrintStream(new FileOutputStream(resultsFile)); out.println("Scheduling Type: " + result.schedulingType); out.println("Scheduling Name: " + result.schedulingName); out.println("Simulation Run Time: " + result.compuTime); out.println("Mean: " + meanDev); out.println("Standard Deviation: " + standardDev); out.println("Process #\tCPU Time\tIO Blocking\tCPU Completed\tCPU Blocked"); for (i = 0; i < processVector.size(); i++) { sProcess process = (sProcess) processVector.elementAt(i); out.print(Integer.toString(i)); if (i < 100) { out.print("\t\t"); } else { out.print("\t"); } out.print(Integer.toString(process.cputime)); if (process.cputime < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); } out.print(Integer.toString(process.ioblocking)); if (process.ioblocking < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); }

out.print(Integer.toString(process.cpudone)); if (process.cpudone < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); } out.println(process.numblocked + " times"); } out.close(); } catch (IOException e) { /* Handle exceptions */ } System.out.println("Completed."); } }

You might also like