|
contur2
|
Concrete Memory Management Unit implementation. More...
#include <mmu.h>


Public Member Functions | |
| Mmu (IMemory &memory, std::unique_ptr< IPageReplacementPolicy > replacementPolicy) | |
| Constructs an MMU backed by the given physical memory. | |
| ~Mmu () override | |
| Mmu (const Mmu &)=delete | |
| Mmu & | operator= (const Mmu &)=delete |
| Mmu (Mmu &&) noexcept | |
| Mmu & | operator= (Mmu &&) noexcept |
| Result< Block > | read (ProcessId processId, MemoryAddress virtualAddress) const override |
| Reads a Block from a virtual address in a given process's address space. | |
| Result< void > | write (ProcessId processId, MemoryAddress virtualAddress, const Block &block) override |
| Writes a Block to a virtual address in a given process's address space. | |
| Result< MemoryAddress > | allocate (ProcessId processId, std::size_t pageCount) override |
| Allocates a range of frames for a process. | |
| Result< void > | deallocate (ProcessId processId) override |
| Deallocates all frames owned by a process. | |
| Result< void > | swapIn (ProcessId processId, MemoryAddress virtualAddress) override |
| Swaps a page into physical memory. | |
| Result< void > | swapOut (ProcessId processId, MemoryAddress virtualAddress) override |
| Swaps a page out of physical memory (to simulated disk). | |
| std::size_t | totalFrames () const noexcept override |
| Returns the total number of physical frames managed. | |
| std::size_t | freeFrames () const noexcept override |
| Returns the number of free (unallocated) physical frames. | |
| Public Member Functions inherited from contur::IMMU | |
| virtual | ~IMMU ()=default |
Private Attributes | |
| std::unique_ptr< Impl > | impl_ |
Concrete Memory Management Unit implementation.
Manages per-process page tables, translates virtual addresses to physical frame addresses, handles frame allocation/deallocation, and delegates page replacement decisions to an IPageReplacementPolicy.
The MMU operates on top of an IMemory instance (physical memory) and maintains a simulated swap space for pages evicted from RAM.
|
explicit |
Constructs an MMU backed by the given physical memory.
| memory | The physical memory to manage (non-owning reference). |
| replacementPolicy | The page replacement policy to use. |
|
override |
|
delete |
|
noexcept |
|
nodiscardoverridevirtual |
Allocates a range of frames for a process.
| processId | The owning process. |
| pageCount | Number of pages (frames) to allocate. |
Implements contur::IMMU.
Deallocates all frames owned by a process.
| processId | The process whose frames should be freed. |
Implements contur::IMMU.
|
nodiscardoverridevirtualnoexcept |
Returns the number of free (unallocated) physical frames.
Implements contur::IMMU.
|
nodiscardoverridevirtual |
Reads a Block from a virtual address in a given process's address space.
| processId | The owning process. |
| virtualAddress | The virtual address to read from. |
Implements contur::IMMU.
|
nodiscardoverridevirtual |
Swaps a page into physical memory.
| processId | The owning process. |
| virtualAddress | A virtual address within the target page. |
Implements contur::IMMU.
|
nodiscardoverridevirtual |
Swaps a page out of physical memory (to simulated disk).
| processId | The owning process. |
| virtualAddress | A virtual address within the target page. |
Implements contur::IMMU.
|
nodiscardoverridevirtualnoexcept |
Returns the total number of physical frames managed.
Implements contur::IMMU.
|
nodiscardoverridevirtual |
Writes a Block to a virtual address in a given process's address space.
| processId | The owning process. |
| virtualAddress | The virtual address to write to. |
| block | The Block to store. |
Implements contur::IMMU.