contur2
Loading...
Searching...
No Matches
contur::ClockReplacement Class Referencefinal

Clock (Second Chance) page replacement. More...

#include <clock_replacement.h>

Inheritance diagram for contur::ClockReplacement:
Collaboration diagram for contur::ClockReplacement:

Public Member Functions

 ClockReplacement ()
 ~ClockReplacement () override
 ClockReplacement (const ClockReplacement &)=delete
ClockReplacementoperator= (const ClockReplacement &)=delete
 ClockReplacement (ClockReplacement &&) noexcept
ClockReplacementoperator= (ClockReplacement &&) noexcept
std::string_view name () const noexcept override
 Returns the name of the algorithm (e.g., "FIFO", "LRU").
FrameId selectVictim (const PageTable &pageTable) override
 Selects a victim frame to evict.
void onAccess (FrameId frame) override
 Notifies the policy that a frame was accessed (read or write).
void onLoad (FrameId frame) override
 Notifies the policy that a new page was loaded into a frame.
void reset () override
 Resets the policy's internal state.
Public Member Functions inherited from contur::IPageReplacementPolicy
virtual ~IPageReplacementPolicy ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Clock (Second Chance) page replacement.

Uses a circular buffer and reference bits. On eviction, scans frames:

  • If reference bit is set, clear it and advance (give a "second chance")
  • If reference bit is clear, select this frame as victim

Definition at line 17 of file clock_replacement.h.

Constructor & Destructor Documentation

◆ ClockReplacement() [1/3]

contur::ClockReplacement::ClockReplacement ( )

◆ ~ClockReplacement()

contur::ClockReplacement::~ClockReplacement ( )
override

◆ ClockReplacement() [2/3]

contur::ClockReplacement::ClockReplacement ( const ClockReplacement & )
delete

◆ ClockReplacement() [3/3]

contur::ClockReplacement::ClockReplacement ( ClockReplacement && )
noexcept

Member Function Documentation

◆ name()

std::string_view contur::ClockReplacement::name ( ) const
nodiscardoverridevirtualnoexcept

Returns the name of the algorithm (e.g., "FIFO", "LRU").

Implements contur::IPageReplacementPolicy.

◆ onAccess()

void contur::ClockReplacement::onAccess ( FrameId frame)
overridevirtual

Notifies the policy that a frame was accessed (read or write).

Implements contur::IPageReplacementPolicy.

◆ onLoad()

void contur::ClockReplacement::onLoad ( FrameId frame)
overridevirtual

Notifies the policy that a new page was loaded into a frame.

Implements contur::IPageReplacementPolicy.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ reset()

void contur::ClockReplacement::reset ( )
overridevirtual

Resets the policy's internal state.

Implements contur::IPageReplacementPolicy.

◆ selectVictim()

FrameId contur::ClockReplacement::selectVictim ( const PageTable & pageTable)
nodiscardoverridevirtual

Selects a victim frame to evict.

Parameters
pageTableThe current page table state.
Returns
The FrameId of the frame to evict.

Implements contur::IPageReplacementPolicy.

Member Data Documentation

◆ impl_

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

Definition at line 36 of file clock_replacement.h.


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