Header Ads

Header ADS

8:sem rr scheduling algorithm

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

    rem_bt = [0] * n

    for i in range(n):

        rem_bt[i] = bt[i]

    t = 0

    while True:

        done = True

        for i in range(n):

            if rem_bt[i] > 0:

                done = False  # There is a pending process

                if rem_bt[i] > quantum:

                    t += quantum

                    rem_bt[i] -= quantum

                else:

                    t += rem_bt[i]

                    wt[i] = t - bt[i]

                    rem_bt[i] = 0

        if done:

            break


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

    for i in range(n):

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


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

    wt = [0] * n

    tat = [0] * n

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

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

    

    print("Processes  Burst Time  Waiting Time  Turn-Around Time")

    total_wt = 0

    total_tat = 0

    for i in range(n):

        total_wt += wt[i]

        total_tat += tat[i]

        print(f"  {i + 1}\t\t{bt[i]}\t\t{wt[i]}\t\t{tat[i]}")

    

    print(f"\nAverage waiting time = {total_wt / n:.5f}")


# Example usage:

processes = [1, 2, 3]

n = len(processes)

burst_time = [10, 5, 8]  # Burst time for each process

quantum = 2  # Time quantum for the Round Robin algorithm


findAvgTime(processes, n, burst_time, quantum)


No comments

Powered by Blogger.