Presentation is loading. Please wait.

Presentation is loading. Please wait.

Virtual Memory 1 CS502 Spring 2006 Virtual Memory CS-502 Operating Systems Spring 2006.

Similar presentations


Presentation on theme: "Virtual Memory 1 CS502 Spring 2006 Virtual Memory CS-502 Operating Systems Spring 2006."— Presentation transcript:

1 Virtual Memory 1 CS502 Spring 2006 Virtual Memory CS-502 Operating Systems Spring 2006

2 Virtual Memory 2 CS502 Spring 2006 Review Virtual Memory — the address space in which a process “thinks” As distinguished from Physical Memory, the address space of the hardware memory system Simplest form of virtual memory — Base and Limit registers Included in hardware many (most?) modern processors Allows swapping & relocation (in physical memory) at run- time Simplifies loading Probably used in most “small” operating systems

3 Virtual Memory 3 CS502 Spring 2006 Review (2) Segmentation — an improvement providing multiple (separate) VM’s to a process Code, Data, Stack, Kernel, etc. Hardware support in many modern processors Allows code sharing, some shared memory Paging –partition VM into equal size units (pages) –partition phys. mem into same size (frames) –hardware assistance in larger processors –allows subset of process in memory at one time –supports swapping in and out “on demand”

4 Virtual Memory 4 CS502 Spring 2006 Paging Review page frame 0 page frame 1 page frame 2 page frame Y … page frame 3 physical memory offset physical address F(PFN)page frame # page table offset virtual address virtual page #

5 Virtual Memory 5 CS502 Spring 2006 Paging Review (2) Page tables Per system vs. per process Single level vs. multi-level I.e., combining segmentation and paging Limiting the size of page tables for large VM’s Page Fault Page table entry invalid or read-only Swap in, conjure up, or copy page Must be fast and infrequent

6 Virtual Memory 6 CS502 Spring 2006 Page Review (3) Translation Lookaside Buffer (TLB) Hardware associative memory for fast page table lookup of small set of active pages Can be managed in OS or in hardware (or both) Must be flushed on context switch Page table organizations Direct:– virtual  physical address Hashed Inverted:– physical address  virtual address

7 Virtual Memory 7 CS502 Spring 2006 New terms Working set The set of pages needed to keep a process from too many page faults Thrashing Too many pages faults; results from insufficient physical memory to support the working set Caching The art and science of keeping the most active elements in fast storage for better execution speed Depends upon locality of references

8 Virtual Memory 8 CS502 Spring 2006 Questions?

9 Virtual Memory 9 CS502 Spring 2006 Outline for today Performance metrics Swap-in strategies Page replacement strategies Miscellaneous topics –More on segmentation –Kernel memory allocation –VM summary: Linux –VM summary: Windows

10 Virtual Memory 10 CS502 Spring 2006 Demand Paging Performance Page Fault Rate (p) 0 < p < 1.0 (measured in faults per reference) Page Fault Overhead = fault service time + read page time + restart process time Fault service time ~ 0.1–10  sec Restart process time ~ 0.1–10–100  sec Read page time ~ 8-20 milliseconds! Dominated by time to read page in from disk!

11 Virtual Memory 11 CS502 Spring 2006 Demand Paging Performance (continued) Effective Access Time (EAT) = (1-p) * (memory access time) + p * (page fault overhead) Want EAT to be no more than 10% degradation from memory access time –i.e., EAT < (1 + 10%) * memory access time

12 Virtual Memory 12 CS502 Spring 2006 Performance Example Memory access time = 100 nanosec = 10 -7 Page fault overhead = 25 millisec = 0.025 Page fault rate = 1/1000 = 10 -3 EAT = (1-p) * 10 -7 + p * (0.025)  (0.999) * 10 -7 + 10 -3 * 0.025  25 microseconds! I.e.,  250 * memory access time!

13 Virtual Memory 13 CS502 Spring 2006 Performance Example (continued) Goal: achieve less than 10% degradation (1-p) * 10 -7 + p * (0.025) < 1.1 * 10 -7 i.e., p < (0.1 * 10 -7) / (0.025 - 10 -7 )  0.0000004 I.e., 1 fault in 2,500,000 accesses!

14 Virtual Memory 14 CS502 Spring 2006 Working Set Size Assume average swap time of 25 millisec. For memory access time = 100 nanoseconds Require < 1 page fault per 2,500,000 accesses For memory access time = 1 microsecond Require < 1 page fault per 250,000 accesses For memory access time = 10 microsecond Require < 1 page fault per 25,000 accesses

15 Virtual Memory 15 CS502 Spring 2006 Object Lesson Working sets must get bigger in proportion to memory speed! Disk speed ~ constant I.e., faster computers need larger physical memories to exploit the speed!

16 Virtual Memory 16 CS502 Spring 2006 Class Discussion 1.What is first thing to do when the PC you bought last year becomes too slow? 2.What is the second thing? 3.Can we do the same analysis on TLB performance?

17 Virtual Memory 17 CS502 Spring 2006 Break

18 Paging 18 CS502 Spring 2006 Caching issues When to put something in the cache What to throw out to create cache space for new items How to keep cached item and stored item in sync after one or the other is updated How to keep multiple caches in sync across processors or machines Size of cache needed to be effective Size of cache items for efficiency … From last week

19 Virtual Memory 19 CS502 Spring 2006 Virtual Memory Issues When to swap in a page On demand? or in anticipation? What to throw out Page Replacement Policy Keeping dirty pages in sync with disk Flushing strategy Multiple caches across processors or machines Defer to another time Size of physical memory to be effective See previous discussion Size of pages for efficiency One size fits all, or multiple sizes?

20 Virtual Memory 20 CS502 Spring 2006 Virtual Memory Issues When to swap in a page On demand? or in anticipation? What to throw out Page Replacement Policy Keeping dirty pages in sync with disk Flushing strategy Multiple caches across processors or machines Defer to another time Size of physical memory to be effective See previous discussion Size of pages for efficiency One size fits all, or multiple sizes?

21 Virtual Memory 21 CS502 Spring 2006 VM Page Replacement If there is an unused frame, use it. If there are no unused frames available, select one (according to policy) and –If it contains a dirty page (M == 1) write it to disk –Invalidate its PTE and TLB entry –Load in new page from disk –Update the PTE and TLB entry! –Restart the faulting instruction What is cost of replacing a page? How does the OS select the page to be evicted?

22 Virtual Memory 22 CS502 Spring 2006 Page Replacement Algorithms Want lowest page-fault rate. Evaluate algorithm by running it on a particular string of memory references (reference string) and computing the number of page faults on that string. Reference string – ordered list of pages accessed as process executes Ex. Reference String is A B C A B D A D B C B

23 Virtual Memory 23 CS502 Spring 2006 The Best Page to Replace The best page to replace is the one that will never be accessed again Optimal Algorithm – Belady’s Rule –Lowest fault rate for any reference string –Basically, replace the page that will not be used for the longest time in the future. –Belady’s Rule is a yardstick –We want to find close approximations

24 Virtual Memory 24 CS502 Spring 2006 Page Replacement – NRU (Not Recently Used) Periodically (i.e., on a clock interrupt) Clear R bit from all PTE’s When needed, rank order pages as follows 1.R = 0, M = 0 2.R = 0, M = 1 3.R = 1, M = 0 4.R = 1, M = 1 Evict a page at random from lowest non-empty class (write out if M = 1) Characteristics Easy to understand and implement Not optimal, but adequate in some cases

25 Virtual Memory 25 CS502 Spring 2006 Page Replacement – FIFO (First In, First Out) Easy to implement When page in, place page id on end of list Evict page at head of list Page to be evicted has been in memory the longest time, but … Maybe it is being used, very active even We just don’t know A weird phenomenon:– Belady’s Anomaly (§4.5.1) fault rate may increase when there is more physical memory! FIFO is rarely used in practice

26 Virtual Memory 26 CS502 Spring 2006 Second Chance Maintain FIFO page list On page fault, check reference bit If R == 1 then move page to end of list and clear R If R == 0 then evict page I.e., a page has to move to top of list at least twice I.e., once after the last time R-bit was cleared Disadvantage Moves pages around on list a lot (bookkeeping overhead)

27 Virtual Memory 27 CS502 Spring 2006 Clock Replacement (A slight variation of Second Chance) Create circular list of PTEs in FIFO Order One-handed Clock – pointer starts at oldest page –Algorithm – FIFO, but check Reference bit If R == 1, set R = 0 and advance hand evict first page with R == 0 –Looks like a clock hand sweeping PTE entries –Fast, but worst case may take a lot of time Two-handed clock – add a 2 nd hand that is n PTEs ahead –2 nd hand clears Reference bit –Allows very active pages to stay in longer

28 Virtual Memory 28 CS502 Spring 2006 Least Recently Used (LRU) Replace the page that has not been used for the longest time 3 Page Frames Reference String - A B C A B D A D B C A B C A B D A D B C LRU – 5 faults

29 Virtual Memory 29 CS502 Spring 2006 LRU Past experience may indicate future behavior Perfect LRU requires some form of timestamp to be associated with a PTE on every memory reference !!! 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 determine which are to change Stack implementation – keep a stack of page numbers in a double link form: –Page referenced: move it to the top –No search for replacement

30 Virtual Memory 30 CS502 Spring 2006 LRU Approximations Aging –Keep a counter for each PTE –Periodically (clock interrupt) – check R-bit If R = 0 increment counter (page has not been used) If R = 1 clear the counter (page has been used) Clear R = 0 –Counter contains # of intervals since last access –Replace page with largest counter value Alternative –§4.4.7 in Tannenbaum

31 Virtual Memory 31 CS502 Spring 2006 When to Evict Pages (Cleaning Policy) An OS process called the paging daemon –wakes periodically to inspect pool of frames –if insufficient # of free frames Mark pages for eviction according to policy, set valid bit to zero Schedule disk to write dirty pages –on page fault If desired page is marked but still in memory, use it Otherwise, replace first clean marked page in pool Advantage Writing out dirty pages is not in critical path to swapping in

32 Virtual Memory 32 CS502 Spring 2006 Virtual Memory Issues When to swap in a page On demand? or in anticipation? What to throw out Page Replacement Policy Keeping dirty pages in sync with disk Flushing strategy Multiple caches across processors or machines Defer to another time Size of physical memory to be effective See previous discussion Size of pages for efficiency One size fits all, or multiple sizes?

33 Virtual Memory 33 CS502 Spring 2006 What to Page in Demand paging brings in the faulting page –To bring in more pages, we need to know the future Users don’t really know the future, but a few OSs have user-controlled pre-fetching In real systems, –load the initial page –Start running –Some systems (e.g. WinNT will bring in additional neighboring pages (clustering)) Also –Figure out working set from previous activity –Page in entire working set of a swapped out process

34 Virtual Memory 34 CS502 Spring 2006 Working Set A working set of a process is used to model the dynamic locality of its memory usage –Working set = set of pages a process currently needs –Denning in late 60’s Definition: –WS(t,w) = set of pages referenced in the interval between time t-w and time t t is time and w is working set window (measured in page refs) Page is in working set only if it was referenced in last w references

35 Virtual Memory 35 CS502 Spring 2006 Working Set   working-set window  a fixed number of page references Example: 10,000 instruction WS i (working set of Process P i ) = total number of pages referenced in the most recent  (varies in time) –if  too small will not encompass entire locality. –if  too large will encompass several localities. –if  =   will encompass entire program.

36 Virtual Memory 36 CS502 Spring 2006 Assume 3 page frames Let interval be w = 5 1 2 3 2 3 1 2 4 3 4 7 4 3 3 4 1 1 2 2 2 1 W={1,2,3} W={3,4,7} W={1,2} –if w too small, will not encompass locality –if w too large, will encompass several localities –if w  infinity, will encompass entire program if Total WS > physical memory  thrashing –Need to suspend a process (to free up physical memory) Working Set Example

37 Virtual Memory 37 CS502 Spring 2006 Working Set Page Replacement In practice, convert references into time –E.g. 100ns/ref, 100,000 references  10msec WS algorithm in practice –On each clock tick all R bits are cleared and record process virtual time t –When looking for eviction candidates, scan all the process’s pages in memory If R == 1 Store t in LTU of PTE and clear R If R == 0 If (t – LTU) > WS_Interval, evict the page (not in WS) Else select page with the largest difference

38 Virtual Memory 38 CS502 Spring 2006 WSClock (combines Clock and WS algorithms) WSClock –Circular list of entries containing R, M, time of last use R and time are updated on each clock tick –Clock “hand” progresses around list If R = 1, reset and update time If R = 0, and if age > WS_interval, and if clean, then claim it. If R = 0, and if age > WS_interval, and if dirty, then schedule a disk write Step “hand” to next entry on list Very common in practice

39 Virtual Memory 39 CS502 Spring 2006 Review of Page Replacement Algorithms

40 Virtual Memory 40 CS502 Spring 2006 Break

41 Virtual Memory 41 CS502 Spring 2006 More on Segmentation Paging is invisible to programmer, but segmentation is not Even paging with two-level page tables is invisible Segment: an open-ended piece of VM Multics (H6000) : 2 18 segments of 64K words each Pentium: 16K segments of 2 30 bytes each –8K global segments, plus 8K local segments per process –Each segment may be paged or not –Each segment assigned to one of four protection levels Program consciously loads segment descriptors when accessing a new segment Only OS/2 used full power of Pentium segments Linux simply concatenates 3 segments to provide process VM

42 Virtual Memory 42 CS502 Spring 2006 OS Design Issue — Where does Kernel execute? In physical memory Old systems (e.g., IBM 360/67) Extra effort needed to look inside of VM of any process In virtual memory Most modern systems Shared segment among all processes Advantages Easy to access, transfer to/from VM of any process No context switch needed for traps, page faults No context switch needed for purely kernel interrupts

43 Virtual Memory 43 CS502 Spring 2006 Kernel Memory Requirements Interrupt handlers Must be pinned into physical memory At locations known to hardware Critical kernel code Pinned, never swapped out I/O buffers (user and kernel) Must be pinned and in contiguous physical memory Kernel data (e.g., PCB’s, file objects, semaphores, etc.) Cached in physical memory Dynamically allocated & freed not multiples of page size Not multiples of page size; fragmentation is an issue

44 Virtual Memory 44 CS502 Spring 2006 Kernel Memory Allocation E.g., Linux PCB ( struct task_struct ) 1.7 Kbytes each Created on every fork, deleted on every exit Kernel memory allocator Buddy system Slab allocation

45 Virtual Memory 45 CS502 Spring 2006 Buddy System Maintain a segment of contiguous pinned VM Round up each request to nearest power of 2 Recursively divide a chunk of size 2 k into two “buddies” of size 2 k-1 until an desired size When freeing an object, recursively coalesce its block with adjacent free buddies Problem, still a lot of fragmentation –E.g., 11 Kbyte page table requires 16 Kbytes

46 Virtual Memory 46 CS502 Spring 2006 Slab Allocation Maintain a separate cache for each major data type PCB, file descriptor, semaphore, etc. Slab: fixed number of contiguous physical pages assigned to a cache Upon kernel memory allocation request Allocate within a slab if possible Else, create a new slab for that cache Benefits Minimize fragmentation of kernel memory Most kernel memory requests can be satisfied quickly

47 Virtual Memory 47 CS502 Spring 2006 Unix VM Physical Memory –Core map (pinned) – page frame info –Kernel (pinned) – rest of kernel –Frames – remainder of memory Page replacement –Page daemon runs periodically to free up page frames Global replacement – multiple parameters Current BSD system uses 2-handed clock –Swapper – helps page daemon Look for processes idle 20 sec. or more and swap out longest idle Next, swap out one of 4 largest – one in memory the longest Check for processes to swap in

48 Virtual Memory 48 CS502 Spring 2006 Linux VM Kernel is pinned Rest of frames used –Processes –Buffer cache –Page Cache Multilevel paging –3 levels –Contiguous (slab) memory allocation using buddy algorithm Replacement – goal keep a certain number of pages free –Daemon (kswapd) runs once per second Clock algorithm on page and buffer caches Clock on unused shared pages Modified clock (by VA order) on user processes (by # of frames)

49 Virtual Memory 49 CS502 Spring 2006 WinNT VM Uses demand paging with clustering. Clustering brings in pages surrounding the faulting page. Processes are assigned working set minimum (20-50) and working set maximum (45-345) Working set minimum is the minimum number of pages the process is guaranteed to have in memory. A process may be assigned as many pages up to its working set maximum. When the amount of free memory in the system falls below a threshold, automatic working set trimming is performed to restore the amount of free memory. (Balance set manager) Working set trimming removes pages from processes that have pages in excess of their working set minimum

50 Virtual Memory 50 CS502 Spring 2006 VM Summary Memory Management – from simple multiprogramming support to efficient use of multiple system resources Models and measurement exist to determine the goodness of an implementation In real systems, must tradeoff –Implementation complexity –Management Overhead –Access time overhead What are the system goals? What models seem to be appropriate? Select one Measure Tune

51 Virtual Memory 51 CS502 Spring 2006 TLB fault performance Assumptions –m = memory access time = 100 nsec –t = TLB load time from memory = 300 nsec = 3 * m Goal is < 5% penalty for TLB misses –I.e., EAT < 1.05 * m EAT = (1-p) * m + p * t < 1.05 *m  p < (0.05 * m) / (t – m) = 0.05 * m / 2 * m = 0.025 I.e., TLB fault rate should be < 1 per 40 accesses!

52 Virtual Memory 52 CS502 Spring 2006 More on Thrashing With multiprogramming, physical memory is shared –Kernel code –System buffers and system information (e.g. PTs) –Some for each process Each process needs a minimum number of pages in memory to avoid thrashing

53 Virtual Memory 53 CS502 Spring 2006 Thrashing Degree of multiprogramming CPU utilization

54 Virtual Memory 54 CS502 Spring 2006 Cause of Thrashing Why does thrashing occur? –sum of working sets of active processes > total physical memory available (excluding kernel and pinned pages) Bounding the problem – page replacement algorithm does not matter –If system has more than enough memory (overprovisioning) –If system has too little memory (overcommitted)

55 Virtual Memory 55 CS502 Spring 2006 Page Fault Frequency increase number of frames decrease number of frames upper bound lower bound Page Fault Rate Number of Frames

56 Virtual Memory 56 CS502 Spring 2006 What should OS do? Establish “acceptable” page-fault rate for each process –If rate too low, process loses frame –If rate too high, process gains frame If overall system rate is to high, suspend a process

57 Virtual Memory 57 CS502 Spring 2006 Frame Allocation - Policies Equal allocation – e.g., if 100 frames and 5 processes, give each 20 pages. Proportional allocation – Allocate according to the size of process bigger process are allocated more frames and smaller processes Priority allocation Use a proportional allocation scheme using process priorities rather than size.

58 Virtual Memory 58 CS502 Spring 2006 Frame Allocation and Page Replacement Frame Allocation and Page Replacement interact Global replacement – process selects a replacement frame from the set of all frames; one process can take a frame from another. Local replacement – each process selects from only its own set of allocated frames.


Download ppt "Virtual Memory 1 CS502 Spring 2006 Virtual Memory CS-502 Operating Systems Spring 2006."

Similar presentations


Ads by Google