This document discusses virtual memory and demand paging. It begins with background on virtual memory, how it allows programs to be larger than physical memory. It then discusses demand paging specifically, how pages are brought into memory only when needed by a reference. It describes how page tables track valid/invalid pages and cause page faults when an invalid page is accessed. It also discusses page replacement algorithms which select a page to remove from memory when a new page is needed but no frame is available.