@@ -13,40 +13,46 @@ def fcfs(processes: list[tuple[int, int, int]]) -> None:
13
13
14
14
processes: list of tuples where each tuple contains the
15
15
process_id, arrival_time and burst_time of each process
16
+
17
+ >>> processes = [(1, 0, 3), (2, 2, 7), (3, 1, 4), (4, 5, 2)]
18
+ >>> fcfs(processes)
19
+ Average Waiting Time: 6.0
20
+ *---*----*-------*--
21
+ 1 3 2 4
16
22
"""
17
- n = len (processes )
18
- processes .sort (key = lambda x : x [1 ])
19
- waiting_times = [0 ] * n
23
+ total_processes = len (processes )
24
+ processes .sort (key = lambda process : process [1 ])
25
+ waiting_times = [0 ] * total_processes
20
26
total_waiting_time = 0
21
27
22
- for i in range (1 , n ):
28
+ for i in range (1 , total_processes ):
23
29
waiting_times [i ] = processes [i - 1 ][2 ] + waiting_times [i - 1 ]
24
30
total_waiting_time += waiting_times [i ]
25
31
26
- print (f"Average Waiting Time: { total_waiting_time / n } " )
32
+ print (f"Average Waiting Time: { total_waiting_time / total_processes } " )
27
33
28
34
"""
29
35
Printing the Gantt Chart for the processes in the FCFS order
30
36
The - and * symbols are used to represent the burst time and
31
37
idle time respectively for each process.
32
38
"""
33
39
last_burst = 0
34
- for i in range (n ):
40
+ for i in range (total_processes ):
35
41
print ("-" * last_burst , end = "" )
36
42
print ("*" , end = "" )
37
43
last_burst = processes [i ][2 ]
38
44
print ("-" * last_burst , end = "" )
39
45
print ("\n " , end = "" )
40
46
41
47
last_burst = 0
42
- for i in range (n ):
48
+ for i in range (total_processes ):
43
49
print (" " * last_burst , end = "" )
44
50
print (f"{ processes [i ][0 ]} " , end = "" )
45
51
last_burst = processes [i ][2 ]
46
52
print ("\n " , end = "" )
47
53
48
54
49
- def main ():
55
+ def main () -> None :
50
56
"""
51
57
Main function to demonstrate the FCFS CPU scheduling algorithm
52
58
pass an array of (process_id, arrival_time, burst_time) to fcfs
0 commit comments