aboutsummaryrefslogtreecommitdiff
path: root/myMemory.py
diff options
context:
space:
mode:
Diffstat (limited to 'myMemory.py')
-rwxr-xr-xmyMemory.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/myMemory.py b/myMemory.py
new file mode 100755
index 0000000..dd2aaa6
--- /dev/null
+++ b/myMemory.py
@@ -0,0 +1,48 @@
1#!/usr/bin/env python3
2
3# UPEM / Programmation système / Projet : Simulation de gestion de mémoire virtuelle
4# Pacien TRAN-GIRARD et Adam NAILI
5
6from mem import Memory
7from fifo import FifoPaginator
8
9paginators = {
10 'fifo': FifoPaginator
11}
12
13
14def output(cmd, msg):
15 print('> \033[1A' + cmd + '\t' + msg)
16
17
18def main(main_size, virt_size, paginator):
19 mem = Memory(main_size, virt_size)
20 pag = paginator(mem)
21
22 while True:
23 cmd = input('> ')
24 if cmd.isnumeric():
25 try:
26 pag.load(int(cmd))
27 output(cmd, mem.dump_main())
28 except:
29 output(cmd, "Error: invalid page.")
30 elif cmd == 'p':
31 output(cmd, mem.dump_main() + '\t' + mem.dump_virt())
32 elif cmd == 'x':
33 break
34 else:
35 output(cmd, 'Error: invalid command.')
36
37
38if __name__ == '__main__':
39 from argparse import ArgumentParser
40 argparser = ArgumentParser()
41 argparser.add_argument('-s', '--mem_size', type = int, required = True)
42 argparser.add_argument('-v', '--virtual_size', type = int, required = True)
43 argparser.add_argument('-a', '--algorithm', required = True, choices = paginators.keys())
44
45 args = argparser.parse_args()
46 assert args.mem_size < args.virtual_size
47 main(args.mem_size, args.virtual_size, paginators[args.algorithm])
48