aboutsummaryrefslogtreecommitdiff
path: root/fifo.py
diff options
context:
space:
mode:
Diffstat (limited to 'fifo.py')
-rw-r--r--fifo.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/fifo.py b/fifo.py
new file mode 100644
index 0000000..7fa55a0
--- /dev/null
+++ b/fifo.py
@@ -0,0 +1,30 @@
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
7
8
9class FifoPaginator:
10 def __init__(self, mem):
11 self.mem = mem
12 self._main_cursor = 0
13 self._virt_cursor = 0
14
15 def _put_main(self, page):
16 overwritten = self.mem.main[self._main_cursor]
17 self.mem.main[self._main_cursor] = page
18 self._main_cursor = (self._main_cursor + 1) % len(self.mem.main)
19 return overwritten
20
21 def _put_virt(self, page):
22 self.mem.virt[self._virt_cursor] = page
23 self._virt_cursor += 1
24
25 def load(self, page):
26 if not self.mem.has_page(page): raise IndexError
27 if page in self.mem.main: return
28 overwritten = self._put_main(page)
29 if overwritten not in self.mem.virt: self._put_virt(overwritten)
30