2Page replacement algorithms Also seen in:CPU cacheWeb server cache of web pagesBuffered I/O (file) caches
3Optimal page replacement Page fault occursScan all pages currently in memoryDetermine which page won’t be needed (referenced) until furthest in the futureReplace that pageNot really possible. (But useful as a benchmark.)Depends on code as well as data.
4Algorithms we will discuss: OptimalNRUFIFOSecond chanceClockLRUNFUAgingWorking setWSClock
5NRU (not recently used) Bits set by hardware after every memory referenceCleared only by software (OS)R bits – set when page is referenced (read or write)M bits – set when page is modified (written)Periodically (after k clock interrupts), R bits are cleared
6NRU page categories Not referenced, not modified Not referenced, modifiedOccurs when #4’s R bit is cleared during clock interruptReferenced, not modifiedReferenced, modifiedNRU algorithm: remove random page from lowest numbered non empty class
7NRU algorithm evaluation SimpleEfficientNot optimal but adequate
8FIFO page replacement Queue pages as they are requested. Remove page at head (front) of queue.Oldest page is removed first+ simple/efficient- might remove a heavily used page
9Second chance page replacement Inspect R bit of oldest pageIf R==0 thenpage is old & unusedReplace itElseClear R bitMove page to from head to tail of FIFOTreating it as a newly loaded pageTry another page
13LRU (least recently used) page replacement Page recently used is likely to be used in the near future; page not used in ages is not likely to be used in the near future.Algorithm:“age” the pagesMaintain a queue of pages in memory.Recently used at front; oldest at rear.Every time a page is referenced, it is removed from the queue and placed at the front of the queue.This is slow!
14LRU in hardware implementation #1: 64 bit counter, C, incremented after every instructionEach page also has a 64 bit counterWhen a page is referenced, C is copied to its counter.Page with lowest counter is oldest.
15LRU in hardware implementation #2: Given n page frames, let M be a nxn matrix of bits initially all 0.Reference to page frame k occurs.Set all bits in row k of M to 1.Set all bits in column k of M to 0.Row with lowest binary value is least recently used.
16LRU in hardware: implementation #2 example oldest
17NFU (Not Frequently Used) Hardware doesn’t often support LRUSoftware counter associated w/ each page initially set to 0.At each clock interrupt:Add R bit (either 0 or 1) to the counter for each page.Page with lowest counter is NFU
18NFU problem It never forgets! So pages that were frequently referenced (during initialization for example) but are no longer needed appear to be FU.Solution (called “aging”):Shift all counters to right 1 bit before R bit is added in.Then R bit is added to MSb (leftmost bit) instead of LSb (rightmost bit).Page w/ lowest value is chosen for removal.
20Differences between LRU and NFU LRU updated after every instruction so it’s resolution is very fine.NFU is coarse (updated after n instructions execute between clock interrupts).A given page referenced by n-1 instruction is given equal weight to a page referenced by only 1 instruction (between clock interrupts).n/2 references to a given page at the beginning of the interval are given equal weight with n/2 references to another page at the end of the interval.
21Working set page replacement algorithm Demand paging = start up processes with 0 pages and only load what’s needed.Locality of reference = during any phase of execution, the process references only a relatively small fraction of its pages.Working set = set of pages that a process is currently using.Thrashing = causing a page fault every few instructions.
22Working setsWorking set model = make sure a page is in memory before the process needs it.a.k.a. prepagingw.s. = set of pages used in the k most recent memory references.
23Working set algorithmUses current virtual time = amount of CPU time a process has actually used since it started.T is a threshold on CVTR and M bits as before; clock interrupt
24Working set algorithm age = current virtual time – time of last use (greatest age/least virtual time) and choose that one if no better candidate exists.If no suitable candidate exists, pick one at random.
25WSClock page replacement Previous WS algorithm requires entire page table be scanned at each page fault.WSClock:Simple, efficient, widely used.Uses circular list of page frames.
26WSClock page replacement At each page fault…Loop once through page table:Examine PTE pointed to by clock hand.If r bit == 1 thenclear r bit; advance clock hand; goto loopelseIf age>tIf page is clean then use this page!Elsewrite dirty page to disk; advance clock hand;goto loopIf write scheduled, wait for completion and used that page.Else pick a victim at random.
27WSClock page replacement clear r bit and advance clock hand.WSClock page replacementReplace old and advance.