Chapter 9: Virtual Memory Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013 Background Virtual memory – separation of user logical memory from physical memory Only part of the program needs to be in memory for execution Logical address space can therefore be much larger than physical address space Allows address spaces to be shared by several processes Allows for more efficient process creation More programs running concurrently Less I/O needed to load or swap processes Virtual memory makes the task of programming much easier the programmer no longer needs to worry about the amount of physical memory available; she can concentrate instead on the problem to be programmed. 5 Background (Cont.) Virtual address space – logical view of how process is stored in memory Usually start at address 0, contiguous addresses until end of space Meanwhile, physical memory organized in page frames MMU must map logical to physical Virtual memory can be implemented via: Demand paging Demand segmentation 6 Virtual Memory That is Larger Than Physical Memory backing store 7 Page Table When Some Pages Are Not in Main Memory 15 Page Fault If the process tries to access a page that was not brought into memory, Or tries to access any “invalid” page: That will trap to OS, causing a page fault Such as when the first reference to a page is made 1. Operating system looks at another table to decide: Invalid reference abort the process Just not in memory => continue 2. Find free frame 3. Swap page into frame via scheduled disk operation 4. Reset tables to indicate page now is in memory Set validation bit = v 5. Restart the instruction that caused the page fault 16 Steps in Handling a Page Fault 17 What happens if there is no free frame? Page replacement Find some page in memory that is not really in use and swap it. Need page replacement algorithm Performance Issue - need an algorithm which will result in minimum number of page faults. Same page may be brought into memory many times. 18 Basic Page Replacement 1. Find the location of the desired page on disk 2. Find a free frame: - if (a free frame exist) then use it - else 3. use a page replacement algorithm to select a victim frame write victim frame to disk, if dirty Bring the desired page into the (newly) free frame; 4. update the page and frame tables accordingly Continue the process by restarting the instruction that caused the trap Note: now potentially 2 page transfers for page fault Increasing EAT 31 Page Replacement 32 Page Replacement Strategies The Principle of Optimality Replace the page that will not be used again the farthest time into the future. Random Page Replacement Choose a page randomly FIFO - First in First Out Replace the page that has been in memory the longest. LRU - Least Recently Used Replace the page that has not been used for the longest time. LFU - Least Frequently Used Replace the page that is used least often. NUR - Not Used Recently An approximation to LRU Working Set Keep in memory those pages that the process is actively using 35 First-In-First-Out (FIFO) Algorithm Reference string: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1 3 frames (3 pages can be in memory at a time per process) 15 page faults How to track ages of pages? Just use a FIFO queue 36 FIFO Illustrating Belady’s Anomaly Reference String: 1,2,3,4,1,2,5,1,2,3,4,5 Assume x frames (x pages can be in memory at a time per process) 3 frames Frame 1 Frame 2 Frame 3 1 2 3 4 1 2 5 3 4 4 frames Frame 1 Frame 2 Frame 3 Frame 4 1 2 3 4 5 1 2 3 4 5 9 Page faults 10 Page faults FIFO Replacement - Belady’s Anomaly -- more frames does not mean less page faults! 37 Optimal Algorithm Replace page that will not be used for longest period of time 9 page faults is optimal for the example How do you know this? Can’t read the future Used for measuring how well your algorithm performs 39 Least Recently Used (LRU) Algorithm Use past knowledge rather than future Replace page that has not been used in the most amount of time Associate time of last use with each page 12 faults – better than FIFO but worse than OPT Generally good algorithm and frequently used But how to implement? 40 Implementation of LRU Algorithm Counter implementation Every page entry has a counter; every time page is referenced through this entry, copy the clock into the counter When a page needs to be changed, look at the counters to find smallest value Search through table needed Stack implementation Keep a stack of page numbers in a double link form: Page referenced: move it to the top requires 6 pointers to be changed No search for replacement But each update more expensive LRU and OPT don’t have Belady’s Anomaly 41 LRU Approximation Algorithms (contd.) Second-chance algorithm (=Clock algorithm) Based of FIFO replacement algorithm Also uses the hardware-provided reference bit If page to be replaced has reference_bit = 0 => replace it reference_bit = 1 => – set reference bit 0, leave page in memory – replace next page, subject to same rules Idea: If reference_bit = 1, we give the page a 2nd chance and move on to select the next FIFO page. When a page gets a second chance, its reference bit is cleared, and its arrival time is reset to the current time. Thus, a page that is given a 2nd chance will not be replaced until all other pages have been replaced (or given second chances). In addition, if a page is used often enough to keep its reference bit set, it will never be replaced. 44 Second-Chance (clock) Page-Replacement Algorithm A circular queue implementation. Uses a pointer that is, a hand on the clock indicates the page to be replaced next. When a frame is needed, the pointer advances until it finds a page with a 0 reference bit. As it advances, it clears the reference bits. Once a victim page is found, the page is replaced, and the new page is inserted in the circular queue in that position. BSD Unix used this 45