![]() |
Contur 2
Educational OS kernel simulator
|
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 () | |
| Destroys page table. | |
| PageTable (const PageTable &)=delete | |
| PageTable & | operator= (const PageTable &)=delete |
| PageTable (PageTable &&) noexcept | |
| Move-constructs page table state. | |
| PageTable & | operator= (PageTable &&) noexcept |
| Move-assigns page table state. | |
| 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< FrameId > | translate (std::size_t virtualPage) const |
| Translates a virtual page number to a physical frame. | |
| Result< PageTableEntry > | getEntry (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_ |
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.
|
explicit |
Constructs a page table with the given number of virtual pages.
References pageCount().
Referenced by operator=(), operator=(), PageTable(), and PageTable().
| contur::PageTable::~PageTable | ( | ) |
Destroys page table.
|
delete |
References PageTable().
|
noexcept |
Move-constructs page table state.
References PageTable().
| void contur::PageTable::clear | ( | ) |
|
nodiscard |
Clears the referenced bit for a virtual page.
References clearReferenced().
Referenced by clearReferenced().
|
nodiscard |
References PageTable().
Move-assigns page table state.
References PageTable().
|
nodiscardnoexcept |
Returns the total number of virtual pages.
References pageCount().
Referenced by pageCount(), and PageTable().
|
nodiscardnoexcept |
Returns the number of pages currently present in memory.
References presentCount().
Referenced by presentCount().
|
nodiscard |
|
nodiscard |
Marks a page as referenced (used by Clock/LRU algorithms).
References setReferenced().
Referenced by setReferenced().
Translates a virtual page number to a physical frame.
References translate().
Referenced by translate().
|
nodiscard |
|
private |
Definition at line 79 of file page_table.h.