Virtual memory: page table
How large is the page table for 32-bit address range?
Assume 4K block size
Number of table entries:
 232 addresses / 212 addresses per block =  220 blocks
Each table entry:
18 bits of address + valid bit: use 4 bytes
Total bytes
4 * 220 = 4MB
Each program (process) has its own page table
Suppose 50 processes running on a system:
200MB of memory used for page tables!
Alternatives to storing entire page table
 - Let page table grow as memory usage grows
 - But, stack and heap grow from opposite directions:
Have 2 tables which each grow with memory usage
 - Use a hash function on the virtual address
Only need as many entries as number of physical pages
Called inverted page table
Lookup process more complicated
 - Allow page table to be paged
Could result in paging loop, but can keep page tables in OS address space
 - Multiple levels of page tables
Top level: blocks of pages (64-256), called segments