00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ZYGOMA_PAGEFRAMESELECTIONPOLICY_H_
00024 #define ZYGOMA_PAGEFRAMESELECTIONPOLICY_H_
00025
00026 #include <pageframetable.h>
00027
00028 namespace Zygoma
00029 {
00030 class PageFrame;
00031
00041 class PageFrameSelectionPolicy
00042 {
00043 public:
00047 virtual ~PageFrameSelectionPolicy() = 0;
00048
00054 virtual PageFrameTable::FrameIndex
00055 selectUnusedFrame() const = 0;
00056
00068 virtual PageFrameTable::FrameIndex
00069 selectReplacementFrame() const = 0;
00070
00071 protected:
00080 const PageFrame&
00081 getFrame(PageFrameTable* pageFrameTable, PageFrameTable::FrameIndex frameIndex);
00082 };
00083 }
00084
00085 #endif // ZYGOMA_PAGEFRAMESELECTIONPOLICY_H_