static void FCFS_Sched(List <Process> p, int nprocess) { FCFStime.Add(0); List <Process> FCFS = new List <Process>(); for (int i = 0; i < nprocess; i++) { FCFS.Add(p[i]); } ArrivalCompare a = new ArrivalCompare(); FCFS.Sort(a); int time = 0; double wait = 0; while (FCFS.Count() != 0) { wait += time - FCFS[0].arrival; time += FCFS[0].burst; FCFSnames.Add(FCFS[0].name); FCFStime.Add(time); FCFS.RemoveAt(0); } FCFSavgwait = wait / nprocess; }
public static void RR_sched(List <Process> pro, int nprocess, int quantum)//add arrival time check { RRnames.Clear(); RRtime.Clear(); RRtime.Add(0); double wait = 0; List <Process> RR = new List <Process>(); List <Process> p = new List <Process>(); foreach (Process x in pro) { p.Add(x); wait -= x.arrival; wait -= x.burst; } ArrivalCompare a = new ArrivalCompare(); p.Sort(a); int burstTime, proTime = 0 /*mish 3ayzeen n5aleeha b 0 3ashan mmkn yeb2a awel arrival mish b 0*/; int j = 0; while (p.Count() != 0 && j < p.Count() && p[j].arrival == proTime) { RR.Insert(0, (p[j])); p.RemoveAt(j); j++; } while (RR.Count() != 0 || p.Count() != 0) { int k = 0; while (p.Count() != 0 && k < p.Count() && p[k].arrival <= proTime) { RR.Insert(0, (p[k])); p.RemoveAt(k); k++; } if (RR.Count() == 0 && p[k].arrival > proTime) { proTime++; RRtime.Add(proTime); RRnames.Add("No Process"); } if (RR.Count() != 0 && RR[0].burst > quantum) { burstTime = RR[0].burst; burstTime -= quantum; //wait += quantum * (RR.Count() - 1); proTime += quantum; int x = 0; while (p.Count() != 0 && x < p.Count() && p[x].arrival <= proTime) { RR.Add(p[x]); p.RemoveAt(x); x++; } Process processnext = new Process(); processnext.name = RR[0].name; processnext.burst = burstTime; RRnames.Add(RR[0].name); RRtime.Add(proTime); RR.RemoveAt(0); RR.Add(processnext); } else if (RR.Count() != 0 && RR[0].burst == quantum) { proTime += quantum; RRnames.Add(RR[0].name); wait += proTime; RRtime.Add(proTime); RR.RemoveAt(0); } else if (RR.Count() != 0 && RR[0].burst < quantum) { burstTime = RR[0].burst; proTime += burstTime; RRnames.Add(RR[0].name); RRtime.Add(proTime); RR.RemoveAt(0); wait += proTime; } } RRavgwait = wait / nprocess; }
static void RR_sched(List <Process> pro, int nprocess, int quantum)//add arrival time check { RRtime.Add(0); Queue <Process> RR = new Queue <Process>(); List <Process> p = new List <Process>(); foreach (Process x in pro) { p.Add(x); } ArrivalCompare a = new ArrivalCompare(); p.Sort(a); int burstTime, proTime = 0; double wait = 0; foreach (Process z in p) { wait -= z.arrival; } int j = 0; while (p.Count() != 0 && p[j].arrival == proTime && j < p.Count()) { RR.Enqueue(p[j]); p.RemoveAt(j); j++; } while (RR.Count() != 0) { int k = 0; while (p.Count() != 0 && k < p.Count() && p[k].arrival <= proTime) { RR.Enqueue(p[k]); p.RemoveAt(k); k++; } if (RR.Peek().burst > quantum) { burstTime = RR.Peek().burst; burstTime -= quantum; wait += quantum * ((RR.Count() - 1) + p.Count()); proTime += quantum; int x = 0; while (p.Count() != 0 && x < p.Count() && p[x].arrival <= proTime) { RR.Enqueue(p[x]); p.RemoveAt(x); x++; } Process processnext = new Process(); processnext.name = RR.Peek().name; processnext.burst = burstTime; RRnames.Add(RR.Peek().name); RRtime.Add(proTime); RR.Dequeue(); RR.Enqueue(processnext); } else if (RR.Peek().burst == quantum) { wait += quantum * ((RR.Count() - 1) + p.Count()); proTime += quantum; RRnames.Add(RR.Peek().name); RRtime.Add(proTime); RR.Dequeue(); } else if (RR.Peek().burst < quantum) { proTime += RR.Peek().burst; wait += RR.Peek().burst *((RR.Count() - 1) + p.Count()); RRnames.Add(RR.Peek().name); RRtime.Add(proTime); RR.Dequeue(); } } RRavgwait = wait / nprocess; }