MCPcopy Create free account
hub / github.com/TheAlgorithms/Python / MLFQ

Class MLFQ

scheduling/multi_level_feedback_queue.py:15–264  ·  view source on GitHub ↗

MLFQ(Multi Level Feedback Queue) https://en.wikipedia.org/wiki/Multilevel_feedback_queue MLFQ has a lot of queues that have different priority In this MLFQ, The first Queue(0) to last second Queue(N-2) of MLFQ have Round Robin Algorithm The last Queue(N-1) has First Come, Fi

Source from the content-addressed store, hash-verified

13
14
15class MLFQ:
16 """
17 MLFQ(Multi Level Feedback Queue)
18 https://en.wikipedia.org/wiki/Multilevel_feedback_queue
19 MLFQ has a lot of queues that have different priority
20 In this MLFQ,
21 The first Queue(0) to last second Queue(N-2) of MLFQ have Round Robin Algorithm
22 The last Queue(N-1) has First Come, First Served Algorithm
23 """
24
25 def __init__(
26 self,
27 number_of_queues: int,
28 time_slices: list[int],
29 queue: deque[Process],
30 current_time: int,
31 ) -> None:
32 # total number of mlfq's queues
33 self.number_of_queues = number_of_queues
34 # time slice of queues that round robin algorithm applied
35 self.time_slices = time_slices
36 # unfinished process is in this ready_queue
37 self.ready_queue = queue
38 # current time
39 self.current_time = current_time
40 # finished process is in this sequence queue
41 self.finish_queue: deque[Process] = deque()
42
43 def calculate_sequence_of_finish_queue(self) -> list[str]:
44 """
45 This method returns the sequence of finished processes
46 >>> P1 = Process("P1", 0, 53)
47 >>> P2 = Process("P2", 0, 17)
48 >>> P3 = Process("P3", 0, 68)
49 >>> P4 = Process("P4", 0, 24)
50 >>> mlfq = MLFQ(3, [17, 25], deque([P1, P2, P3, P4]), 0)
51 >>> _ = mlfq.multi_level_feedback_queue()
52 >>> mlfq.calculate_sequence_of_finish_queue()
53 ['P2', 'P4', 'P1', 'P3']
54 """
55 sequence = []
56 for i in range(len(self.finish_queue)):
57 sequence.append(self.finish_queue[i].process_name)
58 return sequence
59
60 def calculate_waiting_time(self, queue: list[Process]) -> list[int]:
61 """
62 This method calculates waiting time of processes
63 >>> P1 = Process("P1", 0, 53)
64 >>> P2 = Process("P2", 0, 17)
65 >>> P3 = Process("P3", 0, 68)
66 >>> P4 = Process("P4", 0, 24)
67 >>> mlfq = MLFQ(3, [17, 25], deque([P1, P2, P3, P4]), 0)
68 >>> _ = mlfq.multi_level_feedback_queue()
69 >>> mlfq.calculate_waiting_time([P1, P2, P3, P4])
70 [83, 17, 94, 101]
71 """
72 waiting_times = []

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected