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 = [2, 7, 4]
# Time quantum
quantum = 3;
findavgTime(proc, n, burst_time, quantum)
ZGVmIGZpbmRXYWl0aW5nVGltZShwcm9jZXNzZXMsIG4sIGJ0LCAgCiAgICAgICAgICAgICAgICAgICAgICAgICB3dCwgcXVhbnR1bSk6ICAKICAgIHJlbV9idCA9IFswXSAqIG4gCiAgCiAgICAjIENvcHkgdGhlIGJ1cnN0IHRpbWUgaW50byBydFtdICAKICAgIGZvciBpIGluIHJhbmdlKG4pOiAgCiAgICAgICAgcmVtX2J0W2ldID0gYnRbaV0gCiAgICB0ID0gMCAjIEN1cnJlbnQgdGltZSAgCiAgCiAgICAjIEtlZXAgdHJhdmVyc2luZyBwcm9jZXNzZXMgaW4gcm91bmQgIAogICAgIyByb2JpbiBtYW5uZXIgdW50aWwgYWxsIG9mIHRoZW0gYXJlIAogICAgIyBub3QgZG9uZS4gIAogICAgd2hpbGUoMSk6IAogICAgICAgIGRvbmUgPSBUcnVlCiAgCiAgICAgICAgIyBUcmF2ZXJzZSBhbGwgcHJvY2Vzc2VzIG9uZSBieSAKICAgICAgICAjIG9uZSByZXBlYXRlZGx5ICAKICAgICAgICBmb3IgaSBpbiByYW5nZShuKTogCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICMgSWYgYnVyc3QgdGltZSBvZiBhIHByb2Nlc3MgaXMgZ3JlYXRlciAgCiAgICAgICAgICAgICMgdGhhbiAwIHRoZW4gb25seSBuZWVkIHRvIHByb2Nlc3MgZnVydGhlciAgCiAgICAgICAgICAgIGlmIChyZW1fYnRbaV0gPiAwKSA6IAogICAgICAgICAgICAgICAgZG9uZSA9IEZhbHNlICMgVGhlcmUgaXMgYSBwZW5kaW5nIHByb2Nlc3MgCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKHJlbV9idFtpXSA+IHF1YW50dW0pIDogCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICMgSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHQgaS5lLiBzaG93cyAgCiAgICAgICAgICAgICAgICAgICAgIyBob3cgbXVjaCB0aW1lIGEgcHJvY2VzcyBoYXMgYmVlbiBwcm9jZXNzZWQgIAogICAgICAgICAgICAgICAgICAgIHQgKz0gcXVhbnR1bSAgCiAgCiAgICAgICAgICAgICAgICAgICAgIyBEZWNyZWFzZSB0aGUgYnVyc3RfdGltZSBvZiBjdXJyZW50ICAKICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYnkgcXVhbnR1bSAgCiAgICAgICAgICAgICAgICAgICAgcmVtX2J0W2ldIC09IHF1YW50dW0gIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgSWYgYnVyc3QgdGltZSBpcyBzbWFsbGVyIHRoYW4gb3IgZXF1YWwgICAKICAgICAgICAgICAgICAgICMgdG8gcXVhbnR1bS4gTGFzdCBjeWNsZSBmb3IgdGhpcyBwcm9jZXNzICAKICAgICAgICAgICAgICAgIGVsc2U6IAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAjIEluY3JlYXNlIHRoZSB2YWx1ZSBvZiB0IGkuZS4gc2hvd3MgIAogICAgICAgICAgICAgICAgICAgICMgaG93IG11Y2ggdGltZSBhIHByb2Nlc3MgaGFzIGJlZW4gcHJvY2Vzc2VkICAKICAgICAgICAgICAgICAgICAgICB0ID0gdCArIHJlbV9idFtpXSAgCiAgCiAgICAgICAgICAgICAgICAgICAgIyBXYWl0aW5nIHRpbWUgaXMgY3VycmVudCB0aW1lIG1pbnVzICAKICAgICAgICAgICAgICAgICAgICAjIHRpbWUgdXNlZCBieSB0aGlzIHByb2Nlc3MgIAogICAgICAgICAgICAgICAgICAgIHd0W2ldID0gdCAtIGJ0W2ldICAKICAKICAgICAgICAgICAgICAgICAgICAjIEFzIHRoZSBwcm9jZXNzIGdldHMgZnVsbHkgZXhlY3V0ZWQgIAogICAgICAgICAgICAgICAgICAgICMgbWFrZSBpdHMgcmVtYWluaW5nIGJ1cnN0IHRpbWUgPSAwICAKICAgICAgICAgICAgICAgICAgICByZW1fYnRbaV0gPSAwCiAgICAgICAgICAgICAgICAgIAogICAgICAgICMgSWYgYWxsIHByb2Nlc3NlcyBhcmUgZG9uZSAgCiAgICAgICAgaWYgKGRvbmUgPT0gVHJ1ZSk6IAogICAgICAgICAgICBicmVhawogICAgICAgICAgICAgIAojIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0dXJuIGFyb3VuZCB0aW1lICAKZGVmIGZpbmRUdXJuQXJvdW5kVGltZShwcm9jZXNzZXMsIG4sIGJ0LCB3dCwgdGF0KTogCiAgICAgIAogICAgIyBDYWxjdWxhdGluZyB0dXJuYXJvdW5kIHRpbWUgIAogICAgZm9yIGkgaW4gcmFuZ2Uobik6IAogICAgICAgIHRhdFtpXSA9IGJ0W2ldICsgd3RbaV0gIAogIAogIAojIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBhdmVyYWdlIHdhaXRpbmcgIAojIGFuZCB0dXJuLWFyb3VuZCB0aW1lcy4gIApkZWYgZmluZGF2Z1RpbWUocHJvY2Vzc2VzLCBuLCBidCwgcXVhbnR1bSk6ICAKICAgIHd0ID0gWzBdICogbiAKICAgIHRhdCA9IFswXSAqIG4gIAogIAogICAgIyBGdW5jdGlvbiB0byBmaW5kIHdhaXRpbmcgdGltZSAKICAgICMgb2YgYWxsIHByb2Nlc3NlcyAgCiAgICBmaW5kV2FpdGluZ1RpbWUocHJvY2Vzc2VzLCBuLCBidCwgIAogICAgICAgICAgICAgICAgICAgICAgICAgd3QsIHF1YW50dW0pICAKICAKICAgICMgRnVuY3Rpb24gdG8gZmluZCB0dXJuIGFyb3VuZCB0aW1lIAogICAgIyBmb3IgYWxsIHByb2Nlc3NlcyAgCiAgICBmaW5kVHVybkFyb3VuZFRpbWUocHJvY2Vzc2VzLCBuLCBidCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3QsIHRhdCkgIAogIAogICAgIyBEaXNwbGF5IHByb2Nlc3NlcyBhbG9uZyB3aXRoIGFsbCBkZXRhaWxzICAKICAgIHByaW50KCJQcm9jZXNzZXMgICAgQnVyc3QgVGltZSAgICAgV2FpdGluZyIsICAKICAgICAgICAgICAgICAgICAgICAgIlRpbWUgICAgVHVybi1Bcm91bmQgVGltZSIpIAogICAgdG90YWxfd3QgPSAwCiAgICB0b3RhbF90YXQgPSAwCiAgICBmb3IgaSBpbiByYW5nZShuKTogCiAgCiAgICAgICAgdG90YWxfd3QgPSB0b3RhbF93dCArIHd0W2ldICAKICAgICAgICB0b3RhbF90YXQgPSB0b3RhbF90YXQgKyB0YXRbaV0gIAogICAgICAgIHByaW50KCIgIiwgaSArIDEsICJcdFx0IiwgYnRbaV0sICAKICAgICAgICAgICAgICAiXHRcdCIsIHd0W2ldLCAiXHRcdCIsIHRhdFtpXSkgCiAgCiAgICBwcmludCgiXG5BdmVyYWdlIHdhaXRpbmcgdGltZSA9ICUuNWYgIiUodG90YWxfd3QgL24pICkgCiAgICBwcmludCgiQXZlcmFnZSB0dXJuIGFyb3VuZCB0aW1lID0gJS41ZiAiJSAodG90YWxfdGF0IC8gbikpICAKICAgICAgCiMgRHJpdmVyIGNvZGUgIAppZiBfX25hbWVfXyA9PSJfX21haW5fXyI6IAogICAgICAKICAgICMgUHJvY2VzcyBpZCdzICAKICAgIHByb2MgPSBbMSwgMiwgM10gCiAgICBuID0gMwogIAogICAgIyBCdXJzdCB0aW1lIG9mIGFsbCBwcm9jZXNzZXMgIAogICAgYnVyc3RfdGltZSA9IFsyLCA3LCA0XSAgCiAgCiAgICAjIFRpbWUgcXVhbnR1bSAgCiAgICBxdWFudHVtID0gMzsgIAogICAgZmluZGF2Z1RpbWUocHJvYywgbiwgYnVyc3RfdGltZSwgcXVhbnR1bSkg