Question

In: Computer Science

IN JAVA Implement SJF scheduling algorithms based on following actions: The simulation maintains the current time,...

IN JAVA

Implement SJF scheduling algorithms based on following actions:

The simulation maintains the current time, t, which is initialized to 0 and is incremented after each simulation step. Each simulation step then consists of the following actions:

repeat until Rᵢ == 0 for all n processes /* repeat until all processes have terminated */
while no process is active, increment t /* if no process is ready to run, just advance t */
choose active processes pᵢ to run next
according to scheduling algorithm /* Ex: FIFO, SJF, SRT */
decrement Rᵢ /* pᵢ has accumulated 1 CPU time unit */
if Rᵢ == 0 /* process i has terminated */
set active flag of pᵢ = 0 /* process i is excluded from further consideration */
TTᵢ = t - Aᵢ /* the turnaround time of process i is the time
since arrival, TTᵢ, until the current time t */
compute the average turnaround time,
ATT, by averaging all values TTᵢ

Solutions

Expert Solution

class Process

{

    int pid;

    int bt;

    int art;

     

    public Process(int pid, int bt, int art)

    {

        this.pid = pid;

        this.bt = bt;

        this.art = art;

    }

}

public class GFG

{

    

    static void findWaitingTime(Process proc[], int n,

                                     int wt[])

    {

        int rt[] = new int[n];

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

            rt[i] = proc[i].bt;

      

        int complete = 0, t = 0, minm = Integer.MAX_VALUE;

        int shortest = 0, finish_time;

        boolean check = false;

        while (complete != n)

            for (int j = 0; j < n; j++)

            {

                if ((proc[j].art <= t) &&

                  (rt[j] < minm) && rt[j] > 0) {

                    minm = rt[j];

                    shortest = j;

                    check = true;

                }

            }

      

            if (check == false) {

                t++;

                continue;

            }

      

            

            rt[shortest]--;

            minm = rt[shortest];

            if (minm == 0)

                minm = Integer.MAX_VALUE;

            if (rt[shortest] == 0) {

                complete++;

                check = false;

                finish_time = t + 1;

                wt[shortest] = finish_time -

                             proc[shortest].bt -

                             proc[shortest].art;

      

                if (wt[shortest] < 0)

                    wt[shortest] = 0;

            }

            t++;

        }

    }

      

    static void findTurnAroundTime(Process proc[], int n,

                            int wt[], int tat[])

    {

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

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

    }

      

    static void findavgTime(Process proc[], int n)

    {

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

        int total_wt = 0, total_tat = 0;

        findWaitingTime(proc, n, wt);

        findTurnAroundTime(proc, n, wt, tat);

        System.out.println("Processes " +

                           " Burst time " +

                           " Waiting time " +

                           " Turn around time");

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

            total_wt = total_wt + wt[i];

            total_tat = total_tat + tat[i];

            System.out.println(" " + proc[i].pid + "\t\t"

                             + proc[i].bt + "\t\t " + wt[i]

                             + "\t\t" + tat[i]);

        }

      

        System.out.println("Average waiting time = " +

                          (float)total_wt / (float)n);

        System.out.println("Average turn around time = " +

                           (float)total_tat / (float)n);

    }

  

    public static void main(String[] args)

    {

         Process proc[] = { new Process(1, 6, 1),

                            new Process(2, 8, 1),

                            new Process(3, 7, 2),

                            new Process(4, 3, 3)};

         

         findavgTime(proc, proc.length);

    }

}


Related Solutions

IN JAVA Implement SRT scheduling algorithms based on following actions: The simulation maintains the current time,...
IN JAVA Implement SRT scheduling algorithms based on following actions: The simulation maintains the current time, t, which is initialized to 0 and is incremented after each simulation step. Each simulation step then consists of the following actions: repeat until Rᵢ == 0 for all n processes /* repeat until all processes have terminated */ while no process is active, increment t /* if no process is ready to run, just advance t */ choose active processes pᵢ to run...
(Python or C++) We are going to implement the following scheduling algorithms that we discussed in...
(Python or C++) We are going to implement the following scheduling algorithms that we discussed in class: 1. First-Come First-Served (FCFS) 2. Shortest Remaining Time First (SRTF) 3. Highest Response Ratio Next (HRRN) 4. Round Robin, with different quantum values (RR) We are interested to compute the following metrics, for each experiment: _ The average turnaround time _ The total throughput (number of processes done per unit time) _ The CPU utilization _ The average number of processes in the...
in C++ We are going to implement the following scheduling algorithms 1. First-Come First-Served (FCFS) 2....
in C++ We are going to implement the following scheduling algorithms 1. First-Come First-Served (FCFS) 2. Shortest Remaining Time First (SRTF) 3. Highest Response Ratio Next (HRRN) 4. Round Robin, with di_erent quantum values (RR) We are interested to compute the following metrics, for each experiment: _ The average turnaround time _ The total throughput (number of processes done per unit time) _ The CPU utilization _ The average number of processes in the ready queue The simulator needs to...
Write a program that implements the follow disk scheduling algorithms. You can use C or Java...
Write a program that implements the follow disk scheduling algorithms. You can use C or Java for this assignment. FCFS SSTF SCAN C-SCAN LOOK C-LOOK Your program will service a disk with 5000 cylinders (numbered 0 to 4999). Your program will generate a random initial disk head position, as well as a random series of 1000 cylinder requests, and service them using each of the 6 algorithms listed above. Your program will report the total amount of head movement required...
1. a) Write two algorithms of different time complexity implemented in Java methods in complete Java...
1. a) Write two algorithms of different time complexity implemented in Java methods in complete Java program to reverse a stack of characters. Make your own assumption and your own design on the methods signature, inputs, outputs, and the full main program.
Provide and implement three completely different algorithms of different running time that will check if two...
Provide and implement three completely different algorithms of different running time that will check if two strings are anagrams.
Draw six Gantt charts that illustrate the execution of these processes using the following scheduling algorithms:
Draw six Gantt charts that illustrate the execution of these processes using the following scheduling algorithms: 
1- Which of the following scheduling algorithms could result in starvation? Why? If any, show how...
1- Which of the following scheduling algorithms could result in starvation? Why? If any, show how can starvation problem be resolved.a. First-come, first-served (FCFS)b. Shortest job first (SJF)c. Round robin (RR)d. Priority?2- Illustrate Peterson solution to critical section problem, showing how it satisfy the conditions of mutual exclusion, progress, and bounded waiting!3- What is the meaning of the term busy waiting? What other kinds of waiting are there in an operating system? Can busy waiting be avoided altogether? Explain your...
Tasks 2 Write algorithms in pseudocode to implement a LinkedList The following operations must be performed...
Tasks 2 Write algorithms in pseudocode to implement a LinkedList The following operations must be performed on the LinkedList: *Add an element *Insert an element at a given position x. *Retrieve/Read the value of an element at position y. *Delete an element from position z. (x,y and z represent any value in the valid range of indices of the LinkedList).
Bank Accounts in Java! Design and implement a Java program that does the following: 1) reads...
Bank Accounts in Java! Design and implement a Java program that does the following: 1) reads in the principle 2) reads in additional money deposited each year (treat this as a constant) 3) reads in years to grow, and 4) reads in interest rate And then finally prints out how much money they would have each year. See below for formatting. Enter the principle: XX Enter the annual addition: XX Enter the number of years to grow: XX Enter the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT