contur2
Loading...
Searching...
No Matches
contur::IVirtualMemory Class Referenceabstract

Abstract interface for virtual memory management. More...

#include <i_virtual_memory.h>

Inheritance diagram for contur::IVirtualMemory:

Public Member Functions

virtual ~IVirtualMemory ()=default
virtual Result< MemoryAddressallocateSlot (ProcessId processId, std::size_t size)=0
 Allocates a virtual memory slot for a process.
virtual Result< void > freeSlot (ProcessId processId)=0
 Frees a previously allocated slot.
virtual Result< void > loadSegment (ProcessId processId, const std::vector< Block > &data)=0
 Loads a code/data segment into a process's virtual address space.
virtual Result< std::vector< Block > > readSegment (ProcessId processId) const =0
 Reads the entire code/data segment from a process's virtual memory.
virtual std::size_t totalSlots () const noexcept=0
 Returns the number of total slots available.
virtual std::size_t freeSlots () const noexcept=0
 Returns the number of free (unallocated) slots.
virtual bool hasSlot (ProcessId processId) const noexcept=0
 Checks whether a process has an allocated slot.
virtual std::size_t slotSize (ProcessId processId) const noexcept=0
 Returns the slot size (number of blocks) for a process, or 0 if no slot.

Detailed Description

Abstract interface for virtual memory management.

Provides slot-based allocation of virtual address spaces for processes. Each slot represents a contiguous virtual memory region that can be loaded with a code/data segment (vector of Blocks).

VirtualMemory sits conceptually above the MMU — it manages which processes have virtual address spaces and provides bulk load/store operations, while the MMU handles per-address translation.

Definition at line 25 of file i_virtual_memory.h.

Constructor & Destructor Documentation

◆ ~IVirtualMemory()

virtual contur::IVirtualMemory::~IVirtualMemory ( )
virtualdefault

Member Function Documentation

◆ allocateSlot()

virtual Result< MemoryAddress > contur::IVirtualMemory::allocateSlot ( ProcessId processId,
std::size_t size )
nodiscardpure virtual

Allocates a virtual memory slot for a process.

Parameters
processIdThe owning process.
sizeNumber of Block cells in the virtual address range.
Returns
The slot index (base virtual address), or an error.

Implemented in contur::VirtualMemory.

◆ freeSlot()

virtual Result< void > contur::IVirtualMemory::freeSlot ( ProcessId processId)
nodiscardpure virtual

Frees a previously allocated slot.

Parameters
processIdThe owning process.
Returns
Success, or an error if the process has no slot.

Implemented in contur::VirtualMemory.

◆ freeSlots()

virtual std::size_t contur::IVirtualMemory::freeSlots ( ) const
nodiscardpure virtualnoexcept

Returns the number of free (unallocated) slots.

Implemented in contur::VirtualMemory.

◆ hasSlot()

virtual bool contur::IVirtualMemory::hasSlot ( ProcessId processId) const
nodiscardpure virtualnoexcept

Checks whether a process has an allocated slot.

Implemented in contur::VirtualMemory.

◆ loadSegment()

virtual Result< void > contur::IVirtualMemory::loadSegment ( ProcessId processId,
const std::vector< Block > & data )
nodiscardpure virtual

Loads a code/data segment into a process's virtual address space.

Parameters
processIdThe owning process.
dataThe blocks to load.
Returns
Success, or an error if the slot is too small or not allocated.

Implemented in contur::VirtualMemory.

◆ readSegment()

virtual Result< std::vector< Block > > contur::IVirtualMemory::readSegment ( ProcessId processId) const
nodiscardpure virtual

Reads the entire code/data segment from a process's virtual memory.

Parameters
processIdThe owning process.
Returns
The blocks in the slot, or an error.

Implemented in contur::VirtualMemory.

◆ slotSize()

virtual std::size_t contur::IVirtualMemory::slotSize ( ProcessId processId) const
nodiscardpure virtualnoexcept

Returns the slot size (number of blocks) for a process, or 0 if no slot.

Implemented in contur::VirtualMemory.

◆ totalSlots()

virtual std::size_t contur::IVirtualMemory::totalSlots ( ) const
nodiscardpure virtualnoexcept

Returns the number of total slots available.

Implemented in contur::VirtualMemory.


The documentation for this class was generated from the following file: