示例#1
5
        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 ();
            }
        }
示例#2
0
        public ProcessList clone()
        {
            //Make an identical copy of the Processes in ProcessList

            ProcessList pl = new ProcessList();
                pl = this;
                return pl;
        }
示例#3
0
文件: FCFS.cs 项目: bdavs/Scheduler
 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);
 }
示例#4
0
文件: SJF.cs 项目: bdavs/Scheduler
 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);
 }
示例#5
0
        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);
        }
示例#6
0
文件: RR.cs 项目: bdavs/Scheduler
 public RR(ProcessList processList, StreamWriter pa)
 {
     RRprocessList = processList.clone ();
     Final_List = new List<Process> ();
     simulate(10,pa);
 }
示例#7
0
文件: MFQ.cs 项目: bdavs/Scheduler
 public MFQ(ProcessList processList, StreamWriter output)
 {
     RRprocessList = processList.clone ();
     Final_List = new List<Process> ();
     simulate(10,output);
 }