# Implementation of First Come First Served scheduling algorithm

# In this Algorithm we just care about the order that the processes arrived

# without carring about their duration time

# https://en.wikipedia.org/wiki/Scheduling_(computing)#First_come,_first_served

from typing import List

 

def calculate_waiting_times(duration_times: List[int]) -> List[int]:

    waiting_times = [0] * len(duration_times)

    for i in range(1, len(duration_times)):

        waiting_times[i] = duration_times[i - 1] + waiting_times[i - 1]

    return waiting_times

 

def calculate_turnaround_times(

    duration_times: List[int], waiting_times: List[int]

) -> List[int]:

    return [

        duration_time + waiting_times[i]

        for i, duration_time in enumerate(duration_times)

    ]

 

 

def calculate_average_turnaround_time(turnaround_times: List[int]) -> float:

    return sum(turnaround_times) / len(turnaround_times)

 

 

def calculate_average_waiting_time(waiting_times: List[int]) -> float:

    return sum(waiting_times) / len(waiting_times)

 

 

 processes = [1, 2, 3]

duration_times = [19, 8, 9]

 

    

    

waiting_times = calculate_waiting_times(duration_times)

turnaround_times = calculate_turnaround_times(duration_times, waiting_times)

 

    # get the average times

average_waiting_time = calculate_average_waiting_time(waiting_times)

average_turnaround_time = calculate_average_turnaround_time(turnaround_times)

    

for i, process in enumerate(processes):

    print("{0}\t\t{1}\t\t{2}\t\t{3}".format(process, duration_times[i], waiting_times[i], turnaround_times[i]))

 

print(f"Average waiting time = {average_waiting_time}".format(average_waiting_time))

print(f"Average turn around time = {average_turnaround_time}".format(average_turnaround_time))

 

    

'Blog History' 카테고리의 다른 글

205  (0) 2020.04.30
204  (0) 2020.04.29
202  (0) 2020.04.26
201 - 작품명 무제  (0) 2020.04.26
200  (0) 2020.04.26

+ Recent posts