Clock Page Replacement
A simple clock page replacement algorithm implementation.
Usage
First, you should have your type representing a page table entry on a memory implement Page trait which requires basic access to some flag bits:
Then create a ClockPageReplacer instance. Every time you allocate a physical memory page, you should call ClockPageReplacer::register to register it to the replacer.
You don't need to unregister a page when it's evicted from the physical memory, because the replacer will automatically remove it when it becomes invalid.
When you need to replace a page, call the replace method to get the page to replace. The page is automatically removed from the replacer.