230 likes | 380 Views
Virtual Memory. Why do we need VM? . Program address space: 0 – 2^32 bytes 4GB of space Physical memory available 256MB or so Multiprogramming systems Have more than one program running. What do we do?. Paging Break up the memory space into equal-sized blocks - pages
E N D
Why do we need VM? • Program address space: 0 – 2^32 bytes • 4GB of space • Physical memory available • 256MB or so • Multiprogramming systems • Have more than one program running
What do we do? • Paging • Break up the memory space into equal-sized blocks - pages • Put the program into main memory a page at a time • Avoids fragmentation • What kind? • What about fragmentation within a page?
Address Translation • Virtual Addr Physical Addr • If the page is in Physical Memory • Otherwise the page is on Disk • Page Fault!
How does the translation work? • Going from a 4GB address space to a 512MB address space • Virtual Address bit size? • Physical Address bit size? • What’s the page size? • 4K, 8K, 16K … • Page offset bit size?
How does the translation work? II • Page Number = Address / Page Size • Page Number = higher n-k bits • k = number of bits for the page offset
Page Faults • What if the page is not in Physical Memory • How do we know? • What do we need to do? • Bring the page into PM • What if PM is full? • How do we choose a victim? • What happens to the victim?
Write Policies • Two options: • Write-through • Write-back What are the costs? • How do we know when to write? • Do we always write? • How does this compare to cache?
Caching the Page Table • What does it take to access memory? • getting the instruction • what if it’s a load or a store? • Translation-lookaside Buffer (TLB) • Small number of entries • Keeps recently accesses VM PM translations Small hit time Small miss rate
VM and the Cache • Address translations happen first and the cache is oblivious of Virtual Memory
Other Stuff • Protection with VM • Protection bits are part of the page table • Used to isolate user program data • Can be used for shared memory
Page Tables • Example 1 • Given 16K pages • How big is the page table? • How do we do address translations?
Handling page faults • Example 2 • TLB: hit = 95%, 2 cycles • Page Table: hit = 99.999%, 100 cycles • Disk Access: 1,000,000 cycles What’s the average number of cycles per memory access?
Translations • Example 3 • Bits 0 though 9 represent the page offset • What's the physical address corresponding to the virtual address 2073?