Explore Westonci.ca, the premier Q&A site that helps you find precise answers to your questions, no matter the topic. Join our Q&A platform to connect with experts dedicated to providing accurate answers to your questions in various fields. Experience the convenience of finding accurate answers to your questions from knowledgeable experts on our platform.

This project must target a Unix platform and execute properly on our CS1 server.
The project must be written in C, C++, or Java.
Problem Overview
This project will simulate a scheduler scheduling a set of jobs.
The project will allow the user to choose a scheduling algorithm from among the six presented in the textbook. It will output a representation of how the jobs are executed.
Design
You may design your own implementation approach, but here are a few constraints.
Your program should read in a list of jobs from a tab-delimited text file named jobs.txt. The format of the text file should have one line for each job, where each line has a job name, a start time and a duration. The job name must be a letter from A-Z. The first job should be named A, and the remaining jobs should be named sequentially following the alphabet, so if there are five jobs, they are named A-E. The arrival times of these jobs should be in order.
The scheduler choice should be a command-line parameter that is one of the following: FCFS, RR, SPN, SRT, HRRN, FB, ALL. If ALL is input, the program should produce output for all six scheduling algorithms. RR and FB should use a quantum of one. FB should use three queues.
Your output should be a graph as shown in the slides. The graph can be text or you can use a graphics package such as JavaFX to draw the graph. For text, you may draw the graph down the page rather than across.
Your program should be able to reproduce the sample shown in the book as well as any similar set of jobs.
Sample Output
Below is sample text-based output. For graphical output, you can make the graph look like the ones in the textbook and slides.
FCFS
A XXX
B XXXXXX
C XXXX
D XXXXX
E XX
FCFS (this is another way you may print the output instead of the one above)
A B C D E
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X

Sagot :

Answer:

hope this helps ,if it did pls do consider giving brainliest

Explanation:

// Java program for implementation of FCFS scheduling

import java.text.ParseException;

class GFG {

// Function to find the waiting time for all

// processes

static void findWaitingTime(int processes[], int n,

int bt[], int wt[]) {

// waiting time for first process is 0

wt[0] = 0;

// calculating waiting time

for (int i = 1; i < n; i++) {

wt[i] = bt[i - 1] + wt[i - 1];

}

}

// Function to calculate turn around time

static void findTurnAroundTime(int processes[], int n,

int bt[], int wt[], int tat[]) {

// calculating turnaround time by adding

// bt[i] + wt[i]

for (int i = 0; i < n; i++) {

tat[i] = bt[i] + wt[i];

}

}

//Function to calculate average time

static void findavgTime(int processes[], int n, int bt[]) {

int wt[] = new int[n], tat[] = new int[n];

int total_wt = 0, total_tat = 0;

//Function to find waiting time of all processes

findWaitingTime(processes, n, bt, wt);

//Function to find turn around time for all processes

findTurnAroundTime(processes, n, bt, wt, tat);

//Display processes along with all details

System.out.printf("Processes Burst time Waiting"

+" time Turn around time\n");

// Calculate total waiting time and total turn

// around time

for (int i = 0; i < n; i++) {

total_wt = total_wt + wt[i];

total_tat = total_tat + tat[i];

System.out.printf(" %d ", (i + 1));

System.out.printf(" %d ", bt[i]);

System.out.printf(" %d", wt[i]);

System.out.printf(" %d\n", tat[i]);

}

float s = (float)total_wt /(float) n;

int t = total_tat / n;

System.out.printf("Average waiting time = %f", s);

System.out.printf("\n");

System.out.printf("Average turn around time = %d ", t);

}

// Driver code

public static void main(String[] args) throws ParseException {

//process id's

int processes[] = {1, 2, 3};

int n = processes.length;

//Burst time of all processes

int burst_time[] = {10, 5, 8};

findavgTime(processes, n, burst_time);

}

}

// Java program to implement Shortest Job first with Arrival Time

import java.util.*;

class GFG {

static int[][] mat = new int[10][6];

static void arrangeArrival(int num, int[][] mat) {

for (int i = 0; i < num; i++) {

for (int j = 0; j < num - i - 1; j++) {

if (mat[j][1] > mat[j + 1][1]) {

for (int k = 0; k < 5; k++) {

int temp = mat[j][k];

mat[j][k] = mat[j + 1][k];

mat[j + 1][k] = temp;

}

}

}

}

}

static void completionTime(int num, int[][] mat) {

int temp, val = -1;

mat[0][3] = mat[0][1] + mat[0][2];

mat[0][5] = mat[0][3] - mat[0][1];

mat[0][4] = mat[0][5] - mat[0][2];

for (int i = 1; i < num; i++) {

temp = mat[i - 1][3];

int low = mat[i][2];

for (int j = i; j < num; j++) {

if (temp >= mat[j][1] && low >= mat[j][2]) {

low = mat[j][2];

val = j;

}

}

mat[val][3] = temp + mat[val][2];

mat[val][5] = mat[val][3] - mat[val][1];

mat[val][4] = mat[val][5] - mat[val][2];

for (int k = 0; k < 6; k++) {

int tem = mat[val][k];

mat[val][k] = mat[i][k];

mat[i][k] = tem;

}

}

}

// Driver Code

public static void main(String[] args) {

int num;

Scanner sc = new Scanner(System.in);

System.out.println("Enter number of Process: ");

num = sc.nextInt();

System.out.println("...Enter the process ID...");

for (int i = 0; i < num; i++) {

System.out.println("...Process " + (i + 1) + "...");

System.out.println("Enter Process Id: ");

mat[i][0] = sc.nextInt();

System.out.println("Enter Arrival Time: ");

mat[i][1] = sc.nextInt();

System.out.println("Enter Burst Time: ");

mat[i][2] = sc.nextInt();

}

System.out.println("Before Arrange...");

System.out.println("Process ID\tArrival Time\tBurst Time");

for (int i = 0; i < num; i++) {

System.out.printf("%d\t\t%d\t\t%d\n",

mat[i][0], mat[i][1], mat[i][2]);

}

arrangeArrival(num, mat);

completionTime(num, mat);

System.out.println("Final Result...");

System.out.println("Process ID\tArrival Time\tBurst" +

" Time\tWaiting Time\tTurnaround Time");

for (int i = 0; i < num; i++) {

System.out.printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\n",

mat[i][0], mat[i][1], mat[i][2], mat[i][4], mat[i][5]);

}

sc.close();

}

}