0% found this document useful (0 votes)
30 views5 pages

LAB 4-Python Programs-Round Robin&SRTF

-Python programs-Round Robin&SRTF

Uploaded by

kalyanamroshan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views5 pages

LAB 4-Python Programs-Round Robin&SRTF

-Python programs-Round Robin&SRTF

Uploaded by

kalyanamroshan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

RR scheduling

# Function to find the waiting time for all processes

def findWaitingTime(processes, n, bt, wt, quantum):

rem_bt = [0] * n

# Copy the burst time into rt[]

for i in range(n):

rem_bt[i] = bt[i]

t = 0 # Current time

# Keep traversing processes in round robin manner until all of them are not done.

while(1):

done = True

# Traverse all processes one by one repeatedly

for i in range(n):

# If burst time of a process is greater than 0 then only need to process further

if (rem_bt[i] > 0):

done = False # There is a pending process

if (rem_bt[i] > quantum):

# Increase the value of t i.e. shows how much time a process has been processed

t += quantum

# Decrease the burst_time of current process by quantum

rem_bt[i] -= quantum

# If burst time is smaller than or equal to quantum. Last cycle for this process

else:

# Increase the value of t i.e. shows how much time a process has been processed

t = t + rem_bt[i]

# Waiting time is current time minus time used by this process

wt[i] = t - bt[i]

# As the process gets fully executed make its remaining burst time = 0

rem_bt[i] = 0

# If all processes are done

if (done == True): break


# Function to calculate turn around time

def findTurnAroundTime(processes, n, bt, wt, tat):

# Calculating turnaround time

for i in range(n):

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

# Function to calculate average waiting and turn-around times.

def findavgTime(processes, n, bt, quantum):

wt = [0] * n

tat = [0] * n

# Function to find waiting time of all processes

findWaitingTime(processes, n, bt,wt, quantum)

# Function to find turn around time for all processes

findTurnAroundTime(processes, n, bt,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(" ", i + 1, "\t\t", bt[i], "\t\t", wt[i], "\t\t", tat[i])

print("\nAverage waiting time = %.5f " % (total_wt / n))

print("Average turn around time = %.5f " % (total_tat / n))

# Driver code

if __name__ == "__main__":

# Process id's

proc = [1, 2, 3]

n=3

# Burst time of all processes

burst_time = [10, 5, 8]
# Time quantum

quantum = 2

findavgTime(proc, n, burst_time, quantum)

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)

You might also like