contur2
Loading...
Searching...
No Matches
optimal_replacement.h
Go to the documentation of this file.
1
3
4
#pragma once
5
6
#include <memory>
7
#include <vector>
8
9
#include "
contur/memory/i_page_replacement.h
"
10
11
namespace
contur
{
12
19
class
OptimalReplacement
final :
public
IPageReplacementPolicy
20
{
21
public
:
24
explicit
OptimalReplacement
(std::vector<FrameId> futureAccesses);
25
~OptimalReplacement
()
override
;
26
27
OptimalReplacement
(
const
OptimalReplacement
&) =
delete
;
28
OptimalReplacement
&
operator=
(
const
OptimalReplacement
&) =
delete
;
29
OptimalReplacement
(
OptimalReplacement
&&) noexcept;
30
OptimalReplacement
&operator=(
OptimalReplacement
&&) noexcept;
31
32
[[nodiscard]] std::string_view
name
() const noexcept override;
33
[[nodiscard]]
FrameId
selectVictim
(const
PageTable
&pageTable) override;
34
void
onAccess
(
FrameId
frame) override;
35
void
onLoad
(
FrameId
frame) override;
36
void
reset
() override;
37
38
private:
39
struct Impl;
40
std::unique_ptr<Impl>
impl_
;
41
};
42
43
}
// namespace contur
contur::IPageReplacementPolicy
Abstract interface for page replacement algorithms.
Definition
i_page_replacement.h:20
contur::OptimalReplacement::onAccess
void onAccess(FrameId frame) override
Notifies the policy that a frame was accessed (read or write).
contur::OptimalReplacement::~OptimalReplacement
~OptimalReplacement() override
contur::OptimalReplacement::onLoad
void onLoad(FrameId frame) override
Notifies the policy that a new page was loaded into a frame.
contur::OptimalReplacement::name
std::string_view name() const noexcept override
Returns the name of the algorithm (e.g., "FIFO", "LRU").
contur::OptimalReplacement::impl_
std::unique_ptr< Impl > impl_
Definition
optimal_replacement.h:40
contur::OptimalReplacement::operator=
OptimalReplacement & operator=(const OptimalReplacement &)=delete
contur::OptimalReplacement::reset
void reset() override
Resets the policy's internal state.
contur::OptimalReplacement::OptimalReplacement
OptimalReplacement(std::vector< FrameId > futureAccesses)
Constructs with a known future access sequence.
contur::OptimalReplacement::OptimalReplacement
OptimalReplacement(OptimalReplacement &&) noexcept
contur::OptimalReplacement::selectVictim
FrameId selectVictim(const PageTable &pageTable) override
Selects a victim frame to evict.
contur::OptimalReplacement::OptimalReplacement
OptimalReplacement(const OptimalReplacement &)=delete
contur::PageTable
Page table mapping virtual page numbers to physical frames.
Definition
page_table.h:27
i_page_replacement.h
IPageReplacementPolicy interface — pluggable page replacement algorithms.
contur
Definition
block.h:15
contur::FrameId
std::uint32_t FrameId
Frame number in physical memory.
Definition
types.h:43
include
contur
memory
optimal_replacement.h
Generated by
1.16.1