page number, page starting address, and byte offset
physical pages
address translation
loading instructions into the CPU
accessing memory like "movq 0x08(%rsp), %rax"
simple page table
(notational digression: mega vs. mebi, bytes vs. Hertz, common sloppy usage, and people's desire not to sound goofy by saying "kibi" and "gibi" out loud)
Practice
Pretend
pages have size 4KiB
we have 64-bit addresses
we have 16GiB of physical memory
What is the starting virtual address of page 6 (i.e. the 7th page)?
Suppose virtual page 6 is stored at physical page 0xabcd3. What is the virtual
address of the 9th byte on the page? What is the physical address of that same byte?
In general, how do you translate between a virtual address and a physical address?
How big would a page table have to be?
Page tables
What does the Linux page table look like?
Mu
Why bother?
efficient use of resources
load a page only when you need it
fast context switching (i.e. scheduling a new process)