Untitled
unknown
plain_text
3 years ago
5.1 kB
7
Indexable
//import java.lang.reflect.Array; import java.util.*; //import java.lang.Math.*; class Scheduling implements Runnable { int[] tasks; Scheduling(int processes[]) { tasks = processes; run(); } void FCFS() throws InterruptedException { int len = tasks.length; int[] completionTimeArray = new int[len]; for (int i = 0; i < len; i++) { if (i == 0) completionTimeArray[i] = tasks[i]; else completionTimeArray[i] = tasks[i] + completionTimeArray[i - 1]; } int arrivalTime = 0; int turnAroundTime = 0; int waitingTime = 0; double avgWaitingTime = 0; for (int i = 0; i < tasks.length; i++) { try { System.out.println("Process-" + (i + 1) + " executing"); System.out.println("Took " + tasks[i] + "ms time to execute"); turnAroundTime = completionTimeArray[i] - arrivalTime; arrivalTime++; waitingTime = turnAroundTime - tasks[i]; System.out.println("Turn-Around time: " + turnAroundTime + " Waiting time: " + waitingTime + "\n"); avgWaitingTime += waitingTime; Thread.sleep(tasks[i]); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Average waiting time: " + avgWaitingTime / len); } void SJF() { Map<Integer, Integer> mp = new HashMap<Integer, Integer>(); int len = tasks.length; int[] completionTimeArray = new int[len]; for (int i = 0; i < len; i++) { if (i == 0) completionTimeArray[i] = tasks[i]; else completionTimeArray[i] = tasks[i] + completionTimeArray[i - 1]; } int arrivalTime = 0; int turnAroundTime = 0; int waitingTime = 0; double avgWaitingTime = 0; for (int i = 0; i < len; i++) mp.put(tasks[i], i); Arrays.sort(tasks); for (int i = 0; i < len; i++) { try { System.out.println("Process-" + (mp.get(tasks[i]) + 1) + " executing"); System.out.println("Took " + tasks[i] + "ms time to execute"); turnAroundTime = completionTimeArray[i] - arrivalTime; arrivalTime++; waitingTime = turnAroundTime - tasks[i]; System.out.println("Turn-Around time: " + turnAroundTime + " Waiting time: " + waitingTime + "\n"); avgWaitingTime += waitingTime; Thread.sleep(tasks[i]); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Average waiting time: " + avgWaitingTime / len); } @Override public void run() { Scanner sc = new Scanner(System.in); int ch = 0; while (ch != -1) { System.out.println("\n1.FCFS\n2.SJF\n3.Priorioty\n4.Round Robin\nENTER: "); ch = sc.nextInt(); // if (ch == -1) // continue; try { switch (ch) { case 1: { FCFS(); break; } case 2: { SJF(); break; } case 3: { priority(); break; } case 4: { roundRobin(); break; } case -1: sc.close(); break; default: throw new IllegalArgumentException("Unexpected value: " + ch); } } catch (Exception e) { // TODO: handle exception } } } private boolean allZero(int[] arr) { for (int i = 0; i < arr.length; i++) { if (arr[i] == 0) continue; else return false; } return true; } private void roundRobin() { int len = tasks.length; int[] completionTimeArray = new int[len]; for (int i = 0; i < len; i++) { if (i == 0) completionTimeArray[i] = tasks[i]; else completionTimeArray[i] = tasks[i] + completionTimeArray[i - 1]; } int arrivalTime = 0; int turnAroundTime = 0; int waitingTime = 0; double avgWaitingTime = 0; Scanner sc = new Scanner(System.in); System.out.println("Enter quantum time: "); int quantum = sc.nextInt(); while (!allZero(tasks)) { for (int i = 0; i < len; i++) { if (tasks[i] == 0) continue; try { System.out.println("Process-" + (i + 1) + " executing"); System.out.println("Took " + Math.min(quantum, tasks[i]) + "ms time to execute"); if (tasks[i] > quantum) { Thread.sleep(Math.abs(tasks[i] - quantum)); // tasks[i] = Math.max(tasks[i] - quantum, 0); // // turnAroundTime = completionTimeArray[i]-quantum - arrivalTime; // arrivalTime++; // waitingTime = turnAroundTime - tasks[i]; // System.out.println( // "Turn-Around time: " + turnAroundTime + " Waiting time: " + waitingTime + "\n"); // avgWaitingTime += waitingTime; } else { Thread.sleep(tasks[i]); // turnAroundTime = Math.abs(completionTimeArray[i]-quantum) - arrivalTime; // arrivalTime++; // waitingTime = turnAroundTime - tasks[i]; // System.out.println( // "Turn-Around time: " + turnAroundTime + " Waiting time: " + waitingTime + "\n"); // avgWaitingTime += waitingTime; tasks[i] = 0; } } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println("Average waiting time: " + avgWaitingTime / len); } private void priority() { } } public class main { public static void main(String[] args) { int processes[] = { 2, 6, 4, 9, 12 }; // int processes[] = { 300, 125, 400, 150, 100 }; Scheduling obj = new Scheduling(processes); } }
Editor is loading...