Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::ClockReplacement Class Referencefinal

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

#include <clock_replacement.h>

Inheritance diagram for contur::ClockReplacement:

Public Member Functions

 ClockReplacement ()
 Creates a clock replacement policy with empty tracking state.
 ~ClockReplacement () override
 Destroys clock replacement policy.
 ClockReplacement (const ClockReplacement &)=delete
 Copy construction is disabled.
ClockReplacementoperator= (const ClockReplacement &)=delete
 Copy assignment is disabled.
 ClockReplacement (ClockReplacement &&) noexcept
 Move-constructs policy state.
ClockReplacementoperator= (ClockReplacement &&) noexcept
 Move-assigns policy state.
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 ( )

Creates a clock replacement policy with empty tracking state.

Referenced by ClockReplacement(), ClockReplacement(), operator=(), and operator=().

◆ ~ClockReplacement()

contur::ClockReplacement::~ClockReplacement ( )
override

Destroys clock replacement policy.

◆ ClockReplacement() [2/3]

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

Copy construction is disabled.

References ClockReplacement().

◆ ClockReplacement() [3/3]

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

Move-constructs policy state.

References ClockReplacement().

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.

References name().

Referenced by name().

◆ onAccess()

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

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

Implements contur::IPageReplacementPolicy.

References onAccess().

Referenced by onAccess().

◆ onLoad()

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

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

Implements contur::IPageReplacementPolicy.

References onLoad().

Referenced by onLoad().

◆ operator=() [1/2]

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

Move-assigns policy state.

References ClockReplacement().

◆ operator=() [2/2]

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

Copy assignment is disabled.

References ClockReplacement().

◆ reset()

void contur::ClockReplacement::reset ( )
overridevirtual

Resets the policy's internal state.

Implements contur::IPageReplacementPolicy.

References reset().

Referenced by reset().

◆ 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.

References selectVictim().

Referenced by selectVictim().

Member Data Documentation

◆ impl_

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

Definition at line 54 of file clock_replacement.h.


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