When the memory requirements of a program are larger than
physical memory, we depend on virtual memory
All modern systems support this
Memory is broken into pages, often stored on secondary
store (disk)
Pages are brought into frames of physical memory
Operating system keeps track of a map called a page
table
Entries in a page table either give a disk address for a
non-resident page or an alternative set of bits for several of the
bits in a virtual address
Access for a non-resident page causes a page-fault
Lookup of these alternative bits is expensive, and often
supported by hardware
Because it's expensive, we usually keep a (very) small cache
of translations called a translation lookaside buffer or
TLB that is responsible for servicing a majority of lookup
requests
Virtual memory is usually dispensed with before access to
physical memory and the cache