Skip to content

Commit 05fbfad

Browse files
committed
add fcfs_queue into the mlfq-algo
1 parent a1b2d1c commit 05fbfad

File tree

1 file changed

+19
-43
lines changed

1 file changed

+19
-43
lines changed

MLFQ_algo.py

Lines changed: 19 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ def cpu_process(self):
2424
first_time_quantum = 8
2525
sec_time_quantum = 16
2626
self.two_queue_with_diff_quantum(first_time_quantum, sec_time_quantum)
27-
third_queue = fcfs_queue() # 0xx1: one cycle execute
28-
third_queue.cpu_process()
27+
self.fcfs_queue()
2928
return self.grantt_chart
3029

3130
def two_queue_with_diff_quantum(self, fist_time_quantum, second_time_quantum):
@@ -156,44 +155,21 @@ def two_queue_with_diff_quantum(self, fist_time_quantum, second_time_quantum):
156155
_temp.clear()
157156

158157
def fcfs_queue(self):
159-
for process in self.processes:
160-
if len(self.grantt_chart) == 0:
161-
self.grantt_chart.append(
162-
ProcessGrantInfo(process,
163-
process.arrival_time, # first cpu start
164-
process.arrival_time + process.cpu_burst_time1, # io start time
165-
process.arrival_time + process.cpu_burst_time1 + process.io_time, # sec cpu start
166-
process.arrival_time + process.cpu_burst_time1, # first cpu end
167-
process.arrival_time + process.cpu_burst_time1 + process.io_time, # io end time
168-
process.arrival_time + process.cpu_burst_time1 + process.io_time + process.cpu_burst_time2)
169-
# sec cpu end
170-
)
171-
else:
172-
prev_process_grantt = self.grantt_chart[len(self.grantt_chart) - 1]
173-
if process.arrival_time < prev_process_grantt.get_end_time():
174-
self.grantt_chart.append(
175-
ProcessGrantInfo(process,
176-
prev_process_grantt.get_end_time() + 0, # first cpu start
177-
prev_process_grantt.get_end_time() + process.cpu_burst_time1, # io start time
178-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time,
179-
# sec cpu start
180-
prev_process_grantt.get_end_time() + process.cpu_burst_time1, # first cpu end
181-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time,
182-
# io end time
183-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time + process.cpu_burst_time2)
184-
# sec cpu end
185-
)
186-
else:
187-
self.grantt_chart.append(
188-
ProcessGrantInfo(process,
189-
process.arrival_time, # first cpu start
190-
prev_process_grantt.get_end_time() + process.cpu_burst_time1, # io start time
191-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time,
192-
# sec cpu start
193-
prev_process_grantt.get_end_time() + process.cpu_burst_time1, # first cpu end
194-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time,
195-
# io end time
196-
prev_process_grantt.get_end_time() + process.cpu_burst_time1 + process.io_time + process.cpu_burst_time2)
197-
# sec cpu end
198-
)
199-
return self.grantt_chart
158+
for process_info in self.grantt_chart:
159+
if process_info.cpu_start_time1 < 0:
160+
process_info.cpu_start_time1 = self.current_cpu_time
161+
162+
if process_info.cpu_end_time1 < 0:
163+
process_info.cpu_end_time1 = process_info.cpu_start_time1 + process_info.process.cpu_burst_time1
164+
165+
if process_info.io_start_time < 0:
166+
process_info.io_start_time = process_info.cpu_end_time1
167+
168+
if process_info.io_end_time:
169+
process_info.io_start_time = process_info.io_start_time + process_info.process.io_time
170+
171+
if process_info.cpu_start_time2 < 0:
172+
process_info.cpu_start_time2 = process_info.io_end_time + self.current_cpu_time
173+
174+
elif process_info.cpu_start_time2 > 0 and process_info.process.cpu_burst_time2 > 0:
175+
process_info.cpu_end_time2 = self.current_cpu_time + process_info.process.cpu_burst_time2

0 commit comments

Comments
 (0)