diff options
Diffstat (limited to 'mem.py')
-rw-r--r-- | mem.py | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -8,6 +8,7 @@ class Memory: | |||
8 | def __init__(self, main_size, virt_size): | 8 | def __init__(self, main_size, virt_size): |
9 | self.main = [None] * main_size | 9 | self.main = [None] * main_size |
10 | self.virt = [None] * virt_size | 10 | self.virt = [None] * virt_size |
11 | self._virt_cursor = 0 | ||
11 | 12 | ||
12 | def _mem_to_string(self, mem): | 13 | def _mem_to_string(self, mem): |
13 | return ''.join(['%d' % n if n is not None else 'x' for n in mem]) | 14 | return ''.join(['%d' % n if n is not None else 'x' for n in mem]) |
@@ -18,6 +19,18 @@ class Memory: | |||
18 | def dump_virt(self): | 19 | def dump_virt(self): |
19 | return self._mem_to_string(self.virt) | 20 | return self._mem_to_string(self.virt) |
20 | 21 | ||
21 | def has_page(self, page): | 22 | def page_in_range(self, page): |
22 | return 0 <= page < len(self.virt) | 23 | return 0 <= page < len(self.main + self.virt) |
24 | |||
25 | def put_virt(self, page): | ||
26 | self.virt[self._virt_cursor] = page | ||
27 | self._virt_cursor += 1 | ||
28 | |||
29 | def remove_virt(self, page): | ||
30 | for i in range(len(self.virt)): | ||
31 | if self.virt[i] == page: | ||
32 | self._virt_cursor -= 1 | ||
33 | self.virt[i] = self.virt[self._virt_cursor] | ||
34 | self.virt[self._virt_cursor] = None | ||
35 | break | ||
23 | 36 | ||