public void Calculate(int[,] processData) { ProcessData processdata = new ProcessData(); string type = "duration"; string gantt; int tempDuration; int[] durationTimeTable = new int[processesCount]; int[] waitTimeTable = new int[processesCount]; int[] serviceTimeTable = new int[processesCount]; int[,] sortedProcessData = processdata.SortBy(processData, type); int time = 0; int status = 0; double avgWaitTime = 0; double avgTurnAroundTime = 0; Console.Write("|"); gantt = "|"; for (int i = 0; i < processesCount; i++) { waitTimeTable[i] = 0; durationTimeTable[i] = sortedProcessData[i, 2]; } for (int n = 0; n < processesCount; n++) { for (int i = 0; i < processesCount; i++) { if (durationTimeTable[i] != 0 && sortedProcessData[i, 1] <= time) { tempDuration = durationTimeTable[i]; serviceTimeTable[i] = time; for (int j = 0; j < tempDuration; j++) { time++; durationTimeTable[i] = durationTimeTable[i] - 1; Console.Write(sortedProcessData[i, 0] + "|"); gantt += sortedProcessData[i, 0] + "|"; status = 1; } break; } } if (status == 1) { status = 0; } else { status = 0; time++; Console.Write(" |"); gantt += " |"; n--; } } processdata.DisplayData(waitTimeTable, serviceTimeTable, sortedProcessData, avgWaitTime, avgTurnAroundTime, time, processesCount, "Shortest Job First", gantt); }
public void Calculate(int[,] processData) { ProcessData processdata = new ProcessData(); string type = "arrival"; string gantt; int[,] sortedProcessData = processdata.SortBy(processData, type); int[] durationTimeTable = new int[processesCount]; int[] waitTimeTable = new int[processesCount]; int[] serviceTimeTable = new int[processesCount]; int time = 0; Console.Write("|"); gantt = "|"; for (int i = 0; i < processesCount; i++) { waitTimeTable[i] = 0; durationTimeTable[i] = sortedProcessData[i, 2]; } for (int i = 0; i < processesCount; i++) { if (sortedProcessData[i, 1] <= time) { serviceTimeTable[i] = time; do { Console.Write(sortedProcessData[i, 0] + "|"); gantt += sortedProcessData[i, 0] + "|"; durationTimeTable[i]--; time++; } while (durationTimeTable[i] > 0); } else { Console.Write(" |"); gantt += " |"; time++; i--; } } double avgWaitTime = 0; double avgTurnAroundTime = 0; processdata.DisplayData(waitTimeTable, serviceTimeTable, sortedProcessData, avgWaitTime, avgTurnAroundTime, time, processesCount, "First Come First Serve", gantt); }
public void Calculate(int[,] processData) { ProcessData processdata = new ProcessData(); int quantum = processdata.AskQuantum(); int time = 0; string gantt; int counter = 0; int totalTime = 0; int runs = 0; int[,] sortedProcessData = processdata.SortBy(processData, "pid"); int[] durationTimeTable = new int[processesCount]; int[] waitTimeTable = new int[processesCount]; int[] serviceTimeTable = new int[processesCount]; int[] finishTimeTable = new int[processesCount]; double avgWaitTime = 0; double avgTurnAroundTime = 0; Console.Write("|"); gantt = "|"; for (int i = 0; i < processesCount; i++) { totalTime = totalTime + sortedProcessData[i, 2]; durationTimeTable[i] = sortedProcessData[i, 2]; waitTimeTable[i] = 0; } int temp; int[] firtsDigit = new int[totalTime]; for (int n = 0; n < processesCount; n++) { for (int i = 0; i < processesCount; i++) { if (sortedProcessData[i, 1] < time + 1 && durationTimeTable[i] > 0) { counter = 0; if (serviceTimeTable[i] == 0 && runs < processesCount) { serviceTimeTable[i] = time; } do { Console.Write(sortedProcessData[i, 0] + "|"); gantt += sortedProcessData[i, 0] + "|"; for (int j = 0; j < processesCount; j++) { if (sortedProcessData[j, 1] < time + 1 && sortedProcessData[i, 0] != sortedProcessData[j, 0]) { waitTimeTable[j] = waitTimeTable[j] + 1; } } durationTimeTable[i]--; time++; counter++; if (durationTimeTable[i] <= 0) { break; } } while (quantum > counter); finishTimeTable[i] = time; } runs++; } if (sortedProcessData[n, 1] > time && durationTimeTable[n] >= 0) { time++; Console.Write(" |"); gantt += " |"; n--; } } processdata.DisplayData(waitTimeTable, serviceTimeTable, sortedProcessData, firtsDigit, finishTimeTable, avgWaitTime, avgTurnAroundTime, time, processesCount, "Round Robin", gantt, quantum); }