diff --git a/cpu_scheduling_algorithms/fcfs.py b/cpu_scheduling_algorithms/fcfs.py index e395ee2a1..772d6947f 100644 --- a/cpu_scheduling_algorithms/fcfs.py +++ b/cpu_scheduling_algorithms/fcfs.py @@ -13,17 +13,23 @@ def fcfs(processes: list[tuple[int, int, int]]) -> None: processes: list of tuples where each tuple contains the process_id, arrival_time and burst_time of each process + + >>> processes = [(1, 0, 3), (2, 2, 7), (3, 1, 4), (4, 5, 2)] + >>> fcfs(processes) + Average Waiting Time: 6.0 + *---*----*-------*-- + 1 3 2 4 """ - n = len(processes) - processes.sort(key=lambda x: x[1]) - waiting_times = [0] * n + total_processes = len(processes) + processes.sort(key=lambda process: process[1]) + waiting_times = [0] * total_processes total_waiting_time = 0 - for i in range(1, n): + for i in range(1, total_processes): waiting_times[i] = processes[i - 1][2] + waiting_times[i - 1] total_waiting_time += waiting_times[i] - print(f"Average Waiting Time: {total_waiting_time / n}") + print(f"Average Waiting Time: {total_waiting_time / total_processes}") """ Printing the Gantt Chart for the processes in the FCFS order @@ -31,7 +37,7 @@ def fcfs(processes: list[tuple[int, int, int]]) -> None: idle time respectively for each process. """ last_burst = 0 - for i in range(n): + for i in range(total_processes): print("-" * last_burst, end="") print("*", end="") last_burst = processes[i][2] @@ -39,14 +45,14 @@ def fcfs(processes: list[tuple[int, int, int]]) -> None: print("\n", end="") last_burst = 0 - for i in range(n): + for i in range(total_processes): print(" " * last_burst, end="") print(f"{processes[i][0]}", end="") last_burst = processes[i][2] print("\n", end="") -def main(): +def main() -> None: """ Main function to demonstrate the FCFS CPU scheduling algorithm pass an array of (process_id, arrival_time, burst_time) to fcfs