diff options
author | pacien | 2018-03-17 20:38:29 +0100 |
---|---|---|
committer | pacien | 2018-03-17 20:38:29 +0100 |
commit | ff949b6802756f5a15cb528208e3cc71d7a7526c (patch) | |
tree | e1b65f3fa3e652562e34680852a5b957ec6cb19b /fifo.py | |
download | mempager-simulator-ff949b6802756f5a15cb528208e3cc71d7a7526c.tar.gz |
Bootstrap project
Diffstat (limited to 'fifo.py')
-rw-r--r-- | fifo.py | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -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 | |||
6 | from mem import Memory | ||
7 | |||
8 | |||
9 | class 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 | |||