public Simulator(String fileName) { Lowest = 99999; output = new StreamWriter ("../../output.txt"); try { ProcessList p = new ProcessList (fileName); if (debug) { //Echo processes to console output.WriteLine ("==================================="); output.WriteLine ("Quantum = " + p.getQuantum ()); // Console.Read(); for (int loop = 0; loop < p.getNumberOfProcesses (); loop++) { output.WriteLine ("==================================="); output.WriteLine ("PID: " + p.getProcess (loop).getPID ()); output.WriteLine ("CPU Burst 1: " + p.getProcess (loop).getCPU_burst1 ()); output.WriteLine ("CPU Burst 2: " + p.getProcess (loop).getCPU_burst2 ()); output.WriteLine ("IO Burst : " + p.getProcess (loop).getIO_burst ()); output.WriteLine ("Priority: " + p.getProcess (loop).getPriority ()); output.WriteLine ("Period: " + p.getProcess (loop).getCurrentPeriod ()); } } //Populate Schedulers Scheduler[] sim = new Scheduler[6]; { int i = 0; sim [i++] = new FCFS (new ProcessList(fileName),output); sim [i++] = new SJF (new ProcessList(fileName),output); sim [i++] = new SJR (new ProcessList(fileName),output); sim [i++] = new RR (new ProcessList(fileName),output); sim [i++] = new Priority(new ProcessList(fileName),output); sim [i++] = new MFQ (new ProcessList(fileName), output); } int j; output.WriteLine ("ALGORITHM AVERAGE TURNAROUND TIME"); for(j =0 ; j < 6; j++){ try{ output.WriteLine ("{0,9}{1,7}",sim[j].GetType ().Name,sim[j].Average_TurnAround); if(sim[j].Average_TurnAround < Lowest) Lowest = sim[j].Average_TurnAround; }catch(NullReferenceException){ //THIS MEANS WE DID NOT PUT ALL THE PROCESSES IN YET WHICH IS FINE } } foreach(Scheduler item in sim){ try{ if(item.Average_TurnAround == Lowest) output.WriteLine ("The best algorithm for the data set is "+item.GetType ().Name+" with a average turnaround time of "+item.Average_TurnAround); }catch(NullReferenceException){ //THIS MEANS WE DID NOT PUT ALL THE PROCESSES IN YET WHICH IS FINE } } } catch (Exception e) { Console.WriteLine ("Error trying to populate the process list: " + e.Message); output.WriteLine ("Program quitting"); }finally{ output.Close (); } }
public ProcessList clone() { //Make an identical copy of the Processes in ProcessList ProcessList pl = new ProcessList(); pl = this; return pl; }
public FCFS(ProcessList processList, StreamWriter output) { Ready_Queue = new Queue<Process>(); foreach (Process item in processList.processes) { Ready_Queue.Enqueue (item); } IO_Queue = new Queue<Process>(); RunningJob = new Process (-1,0,0,0,0); IO_Job = new Process (-1, 0, 0, 0,0); Final_List = new Queue<Process> (); //StreamWriter output = new StreamWriter ("../../output.txt"); simulate (10, output); }
public SJF(ProcessList processList, StreamWriter output) { Ready_Queue = new Queue<Process>(); PreSortedList = processList.processes.ToList (); PreSortedList.Sort ((p,q) => (p.getCPU_burst1 ()+p.getCPU_burst2 ()).CompareTo ((q.getCPU_burst1 ()+q.getCPU_burst2 ()))); foreach (Process item in PreSortedList) { Ready_Queue.Enqueue (item); } IO_Queue = new Queue<Process>(); RunningJob = new Process (-1,0,0,0,0); IO_Job = new Process (-1, 0, 0, 0,0); Final_List = new List<Process> (); //StreamWriter output = new StreamWriter ("../../output.txt"); simulate (10, output); }
public Priority(ProcessList processList, StreamWriter output) { PreSortedList = processList.processes.ToList (); PreSortedList.Sort ((p,q) => p.getPriority ().CompareTo (q.getPriority ())); Ready_Queue = new Queue<Process>(); foreach (Process item in PreSortedList) { Ready_Queue.Enqueue (item); } Temp_Job = new Process (0,0,0,0,0); IO_Queue = new Queue<Process>(); RunningJob = new Process (-1,0,0,0,0); IO_Job = new Process (-1, 0, 0, 0,0); Final_List = new List<Process> (); simulate (10, output); }
public RR(ProcessList processList, StreamWriter pa) { RRprocessList = processList.clone (); Final_List = new List<Process> (); simulate(10,pa); }
public MFQ(ProcessList processList, StreamWriter output) { RRprocessList = processList.clone (); Final_List = new List<Process> (); simulate(10,output); }