Skip to content

Commit 9e19d22

Browse files
committed
Add mode for choosing algorithm inside OS sim
1 parent 2509c5b commit 9e19d22

File tree

1 file changed

+41
-26
lines changed

1 file changed

+41
-26
lines changed

os_simulation.py

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,44 @@
1111

1212
csv_input_path = 'test/process_input_data.csv'
1313

14-
data_collector = DataCollector(csv_path=csv_input_path)
15-
# ------------------- FCFS -------------------
16-
# fcfs = FCFS(processes=data_collector.getProcesses())
17-
# grantt_chart = fcfs.cpu_process()
18-
# ------------------- SJF --------------------
19-
# sjf = SJF(processes=data_collector.getProcesses())
20-
# grantt_chart = sjf.cpu_process()
21-
# ------- get a deep copy of processes -------
22-
processes_copy = []
23-
for process in data_collector.getProcesses().copy():
24-
processes_copy.append(Process(process.process_id,
25-
process.arrival_time,
26-
process.cpu_burst_time1,
27-
process.io_time,
28-
process.cpu_burst_time2))
29-
# ------------------- RR ---------------------
30-
31-
32-
# rr = RoundRobin(processes=data_collector.getProcesses().copy())
33-
# grantt_chart = rr.cpu_process(time_quantum=5)
34-
35-
mlfq = MLFQ(processes=data_collector.getProcesses().copy())
36-
grantt_chart = mlfq.cpu_process()
37-
38-
analysis = GranttAnalysis(grantt_chart=mlfq.grantt_chart, processes=processes_copy)
39-
analysis.pretty_print('RR')
14+
while True:
15+
print('\033[94m' + '--------------------------------------')
16+
print('FCFS = 1 | SJF = 2 | RR = 3 | MLFQ = 4')
17+
print('--------------------------------------' + '\033[0m')
18+
data_collector = []
19+
try:
20+
mode = int(input('Enter: '))
21+
except Exception as error:
22+
print('\033[93m' + 'Error: Wrong Input!')
23+
exit(-1)
24+
data_collector = DataCollector(csv_path=csv_input_path)
25+
# ------- get a deep copy of processes -------
26+
processes_copy = []
27+
result = None
28+
for process in data_collector.getProcesses().copy():
29+
processes_copy.append(Process(process.process_id,
30+
process.arrival_time,
31+
process.cpu_burst_time1,
32+
process.io_time,
33+
process.cpu_burst_time2))
34+
if mode == 1:
35+
# ------------------- FCFS -------------------
36+
result = FCFS(processes=data_collector.getProcesses())
37+
grantt_chart = result.cpu_process()
38+
elif mode == 2:
39+
# ------------------- SJF --------------------
40+
result = SJF(processes=data_collector.getProcesses())
41+
grantt_chart = result.cpu_process()
42+
elif mode == 3:
43+
# ------------------- RR ---------------------
44+
result = RoundRobin(processes=data_collector.getProcesses().copy())
45+
grantt_chart = result.cpu_process(time_quantum=1)
46+
elif mode == 4:
47+
# ------------------ MLFQ --------------------
48+
result = MLFQ(processes=data_collector.getProcesses().copy())
49+
grantt_chart = result.cpu_process()
50+
else:
51+
exit(0)
52+
if result is not None:
53+
analysis = GranttAnalysis(grantt_chart=result.grantt_chart, processes=processes_copy)
54+
analysis.pretty_print(result.ClassName)

0 commit comments

Comments
 (0)