Questions can have multiple correct answers, correct answers are marked with * What are reasons for having virtual memory? * Allowing programs to use more memory than is physically available. Decreasing RAM access time by providing a smaller, faster RAM. * Protecting programs from each other by isolating them in memory. * Allowing programs to easily share memory. Allowing programs to manually control where they reside in physical memory. What are similarities between cache memory and virtual memory? Both always use direct mapping. Both swap unused information to disk. * Both use similar concepts, like blocks/pages. Why does virtual memory never use write-through schemes? Virtual memory does use write-through. It is not necessary to actually save information to disk, only pages. * It is much slower to write to disk than it is to RAM. * Disks have high throughput, so it makes sense to write in whole pages all at once. What is the purpose of the tranlation lookaside buffer? To translate entries in memory to entries in the cache. * It acts as a cache for page table lookups. It's a buffer for pages currently being transferred to disk. How many page tables exist in memory? * One for each process. One for the whole system. It can vary, but usually about 16-512. What type of associativity does virtual memory implement? Direct mapping. 2-way associativity. 4-way associativity. * Full associativity. Why does virtual memory use a reference/used bit, instead of tracking least recently used pages? LRU is not a good metric for swapping pages. * Tracking LRU would take up too much space. * Updating recently used counters takes too much time. When do entries in the TLB point to the hard disk? * The TLB never points to the hard disk. When a page fault occurs and a page is swapped into memory. When a TLB miss occurs. Only when a page is present in memory. True or false: implementing protection in virtual memory requires at least two privilege modes. * True False True or false: pages are always written to disk when evicted from memory. True * False