contur2
Loading...
Searching...
No Matches
contur::PageTable Class Reference

Page table mapping virtual page numbers to physical frames. More...

#include <page_table.h>

Public Member Functions

 PageTable (std::size_t pageCount)
 Constructs a page table with the given number of virtual pages.
 ~PageTable ()
 PageTable (const PageTable &)=delete
PageTableoperator= (const PageTable &)=delete
 PageTable (PageTable &&) noexcept
PageTableoperator= (PageTable &&) noexcept
Result< void > map (std::size_t virtualPage, FrameId frame)
 Maps a virtual page to a physical frame.
Result< void > unmap (std::size_t virtualPage)
 Unmaps a virtual page (marks as not present, clears frame).
Result< FrameIdtranslate (std::size_t virtualPage) const
 Translates a virtual page number to a physical frame.
Result< PageTableEntrygetEntry (std::size_t virtualPage) const
 Returns the entry for a virtual page (read-only).
Result< void > setReferenced (std::size_t virtualPage, bool value)
 Marks a page as referenced (used by Clock/LRU algorithms).
Result< void > setDirty (std::size_t virtualPage, bool value)
 Marks a page as dirty.
Result< void > clearReferenced (std::size_t virtualPage)
 Clears the referenced bit for a virtual page.
std::size_t pageCount () const noexcept
 Returns the total number of virtual pages.
std::size_t presentCount () const noexcept
 Returns the number of pages currently present in memory.
void clear ()
 Resets all entries to unmapped state.

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Page table mapping virtual page numbers to physical frames.

Each process has its own PageTable. The MMU uses it to translate virtual addresses and to decide which pages to swap in/out.

Definition at line 26 of file page_table.h.

Constructor & Destructor Documentation

◆ PageTable() [1/3]

contur::PageTable::PageTable ( std::size_t pageCount)
explicit

Constructs a page table with the given number of virtual pages.

◆ ~PageTable()

contur::PageTable::~PageTable ( )

◆ PageTable() [2/3]

contur::PageTable::PageTable ( const PageTable & )
delete

◆ PageTable() [3/3]

contur::PageTable::PageTable ( PageTable && )
noexcept

Member Function Documentation

◆ clear()

void contur::PageTable::clear ( )

Resets all entries to unmapped state.

◆ clearReferenced()

Result< void > contur::PageTable::clearReferenced ( std::size_t virtualPage)
nodiscard

Clears the referenced bit for a virtual page.

◆ getEntry()

Result< PageTableEntry > contur::PageTable::getEntry ( std::size_t virtualPage) const
nodiscard

Returns the entry for a virtual page (read-only).

◆ map()

Result< void > contur::PageTable::map ( std::size_t virtualPage,
FrameId frame )
nodiscard

Maps a virtual page to a physical frame.

Returns
Success or InvalidAddress if virtualPage is out of range.

◆ operator=() [1/2]

PageTable & contur::PageTable::operator= ( const PageTable & )
delete

◆ operator=() [2/2]

PageTable & contur::PageTable::operator= ( PageTable && )
noexcept

◆ pageCount()

std::size_t contur::PageTable::pageCount ( ) const
nodiscardnoexcept

Returns the total number of virtual pages.

◆ presentCount()

std::size_t contur::PageTable::presentCount ( ) const
nodiscardnoexcept

Returns the number of pages currently present in memory.

◆ setDirty()

Result< void > contur::PageTable::setDirty ( std::size_t virtualPage,
bool value )
nodiscard

Marks a page as dirty.

◆ setReferenced()

Result< void > contur::PageTable::setReferenced ( std::size_t virtualPage,
bool value )
nodiscard

Marks a page as referenced (used by Clock/LRU algorithms).

◆ translate()

Result< FrameId > contur::PageTable::translate ( std::size_t virtualPage) const
nodiscard

Translates a virtual page number to a physical frame.

Returns
The FrameId, or InvalidAddress if not mapped, or SegmentationFault if not present.

◆ unmap()

Result< void > contur::PageTable::unmap ( std::size_t virtualPage)
nodiscard

Unmaps a virtual page (marks as not present, clears frame).

Returns
Success or InvalidAddress if virtualPage is out of range.

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::PageTable::impl_
private

Definition at line 74 of file page_table.h.


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