Question

In: Computer Science

Implement the CPU scheduling algorithm SJF non-preemptive in python. Have the program answer the table. Simulate...

Implement the CPU scheduling algorithm SJF non-preemptive in python. Have the program answer the table.

Simulate and evaluate with the set of eight processes below.

Assumptions:

  1. All processes are activated at time 0
  2. Assume that no process waits on I/O devices.
  3. After completing an I/O event, a process is transferred to the ready queue.
  4. Waiting time is accumulated while a process waits in the ready queue.
  5. Turnaround time is a total of (Waiting time) + (CPU burst time) + (I/O time)
  6. Response time is the first measure of waiting time from arrival at time 0 until the first time on the CPU.

Process Data:

process goes {CPU burst, I/O time, CPU burst, I/O time, CPU burst, I/O time,…….., last CPU burst}

P1 {5, 27, 3, 31, 5, 43, 4, 18, 6, 22, 4, 26, 3, 24, 4}

P2 {4, 48, 5, 44, 7, 42, 12, 37, 9, 76, 4, 41, 9, 31, 7, 43, 8}

P3 {8, 33, 12, 41, 18, 65, 14, 21, 4, 61, 15, 18, 14, 26, 5, 31, 6}

P4 {3, 35, 4, 41, 5, 45, 3, 51, 4, 61, 5, 54, 6, 82, 5, 77, 3}

P5 {16, 24, 17, 21, 5, 36, 16, 26, 7, 31, 13, 28, 11, 21, 6, 13, 3, 11, 4}

P6 {11, 22, 4, 8, 5, 10, 6, 12, 7, 14, 9, 18, 12, 24, 15, 30, 8}

P7 {14, 46, 17, 41, 11, 42, 15, 21, 4, 32, 7, 19, 16, 33, 10}

P8 {4, 14, 5, 33, 6, 51, 14, 73, 16, 87, 6}

SJF   CPU utilization:

Tw

Ttr

Tr

P1

P2

P3

P4

P5

P6

P7

P8

Avg

SJF

CPU utilization

Avg Waiting time (Tw)

Avg Turnaround time (Ttr)

Avg Response time (Tr)

Solutions

Expert Solution

# Python3 program to implement Shortest Remaining Time First
# Shortest Remaining Time First (SRTF)

# Function to find the waiting time
# for all processes
def findWaitingTime(processes, n, wt):
   rt = [0] * n

   # Copy the burst time into rt[]
   for i in range(n):
       rt[i] = processes[i][1]
   complete = 0
   t = 0
   minm = 999999999
   short = 0
   check = False

   # Process until all processes gets
   # completed
   while (complete != n):
      
       # Find process with minimum remaining
       # time among the processes that
       # arrives till the current time`
       for j in range(n):
           if ((processes[j][2] <= t) and
               (rt[j] < minm) and rt[j] > 0):
               minm = rt[j]
               short = j
               check = True
       if (check == False):
           t += 1
           continue
          
       # Reduce remaining time by one
       rt[short] -= 1

       # Update minimum
       minm = rt[short]
       if (minm == 0):
           minm = 999999999

       # If a process gets completely
       # executed
       if (rt[short] == 0):

           # Increment complete
           complete += 1
           check = False

           # Find finish time of current
           # process
           fint = t + 1

           # Calculate waiting time
           wt[short] = (fint - proc[short][1] -  
                               proc[short][2])

           if (wt[short] < 0):
               wt[short] = 0
      
       # Increment time
       t += 1

# Function to calculate turn around time
def findTurnAroundTime(processes, n, wt, tat):
  
   # Calculating turnaround time
   for i in range(n):
       tat[i] = processes[i][1] + wt[i]

# Function to calculate average waiting
# and turn-around times.
def findavgTime(processes, n):
   wt = [0] * n
   tat = [0] * n

   # Function to find waiting time
   # of all processes
   findWaitingTime(processes, n, wt)

   # Function to find turn around time
   # for all processes
   findTurnAroundTime(processes, n, wt, tat)

   # Display processes along with all details
   print("Processes Burst Time   Waiting",
                   "Time   Turn-Around Time")
   total_wt = 0
   total_tat = 0
   for i in range(n):

       total_wt = total_wt + wt[i]
       total_tat = total_tat + tat[i]
       print(" ", processes[i][0], "\t\t",
               processes[i][1], "\t\t",
               wt[i], "\t\t", tat[i])

   print("\nAverage waiting time = %.5f "%(total_wt /n) )
   print("Average turn around time = ", total_tat / n)
  
# Driver code
if __name__ =="__main__":
  
   # Process id's
   proc = [[1, 6, 1], [2, 8, 1],
           [3, 7, 2], [4, 3, 3]]
   n = 4
   findavgTime(proc, n)
  


Output:

Processes  Burst time  Waiting time  Turn around time
 1        6         3        9
 2        8         16        24
 3        7         8        15
 4        3         0        3
Average waiting time = 6.75
Average turn around time = 12.75

Note: Plzzz don' t give dislike.....Plzzz comment if u have any problem i will try to resolve it.......


Related Solutions

Implement the CPU scheduling algorithm FCFS non-preemptive in python. Have the program answer the table. Simulate...
Implement the CPU scheduling algorithm FCFS non-preemptive in python. Have the program answer the table. Simulate and evaluate with the set of eight processes below. Assumptions: All processes are activated at time 0 Assume that no process waits on I/O devices. After completing an I/O event, a process is transferred to the ready queue. Waiting time is accumulated while a process waits in the ready queue. Turnaround time is a total of (Waiting time) + (CPU burst time) + (I/O...
Implement the CPU scheduling algorithm MLFQ in python. Have the program answer the table. Multilevel Feedback...
Implement the CPU scheduling algorithm MLFQ in python. Have the program answer the table. Multilevel Feedback Queue (absolute priority in higher queues)             Queue 1 uses RR scheduling with Tq = 5             Queue 2 uses RR scheduling with Tq = 10             Queue 3 uses FCFS All processes enter first queue 1. If time quantum (Tq) expires before CPU burst is complete, the process is downgraded to next lower priority queue. Processes are not downgraded when preempted by a...
Develop an algorithm and implement a Preemptive Priority scheduling algorithm using C++ and using bubble sorting...
Develop an algorithm and implement a Preemptive Priority scheduling algorithm using C++ and using bubble sorting .Arrival time, burst time and priority values.The code should also display: (i) Gantt chart and determine the following: (ii) Determine the Turnaround time(TAT), waiting time(WT) of each process (iii) Determine the Average Waiting Time (AWT) and Average Turnaround Time (ATAT) of all processes. please write the comments
In a few words, explain how a preemptive scheduling policy differs from a non-preemptive scheduling policy.
In a few words, explain how a preemptive scheduling policy differs from a non-preemptive scheduling policy.
Operating system ******Preemptive SJF************ The newly arrived process with shorter CPU burst will preempt the currently...
Operating system ******Preemptive SJF************ The newly arrived process with shorter CPU burst will preempt the currently executing process. Draw the Gantt Chart and calculate the average waiting time. Process Arrival Time Burst Time Turn Around Time Waiting Time P4 0 5 P3 1 9 P2 2 4 P1 3 8
Part1: Write a program in Java to simulate CPU scheduling using (i) Shortest Job First (both...
Part1: Write a program in Java to simulate CPU scheduling using (i) Shortest Job First (both preemptive and non-preemptive) and (ii)Priority scheduling Go through the related text and implement each of these CPU algorithms. Consider arrival time, CPU burst time and priority given for each of the processes. Show the results of different steps of your implementation. Part2: Draw the Gantt Chart and compute Average Waiting Time and Average Turn Around Time in each case
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...
Implement 3 scheduling algorithms, FIFO, SJF, SRT based on following actions: The simulation maintains the current...
Implement 3 scheduling algorithms, FIFO, SJF, SRT 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...
Describe how the Shortest Job First (SJF)Scheduling algorithm works. Explain the differences of working procedure between...
Describe how the Shortest Job First (SJF)Scheduling algorithm works. Explain the differences of working procedure between preemptive and non-preemptive version of this algorithm.
Describe how the Round Robin Scheduling algorithm works. Explain the differences of working procedure between preemptive...
Describe how the Round Robin Scheduling algorithm works. Explain the differences of working procedure between preemptive and non-preemptive version of this algorithm.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT