CS 251 Fall 2019 Principles of Programming Languages Ben Wood λ CS 240 Spring 2020 Foundations of Computer Systems Ben Wood https://cs.wellesley.edu/~cs240/s20/ Virtual Memory Process Abstraction, Part 2: Private Address Space Motivation: why not direct physical memory access? Address translation with pages Optimizing translation: translation lookaside buffer Extra benefits: sharing and protection Memory as a contiguous array of bytes is a lie! Why? 1 Virtual Memory
39
Embed
Virtual Memory - Wellesley Collegecs240/s20/slides/virtual-memory.pdf · Virtual Memory Process Abstraction, Part 2: Private Address Space Motivation: why not direct physical memory
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
CS 251 Fall 2019Principles of Programming LanguagesBen Woodλ CS 240 Spring 2020Foundations of Computer SystemsBen Wood
https://cs.wellesley.edu/~cs240/s20/
Virtual MemoryProcess Abstraction, Part 2: Private Address Space
Motivation: why not direct physical memory access?Address translation with pages
Optimizing translation: translation lookaside bufferExtra benefits: sharing and protection
Memory as a contiguous array of bytes is a lie! Why?
Also:Context switches must swap out entire memory contents.Isn't that expensive? Virtual Memory
Problem 2: capacity
4
64-bit addresses can addressseveral exabytes
(18,446,744,073,709,551,616 bytes)
Physical main memory offersa few gigabytes
(e.g. 8,589,934,592 bytes)
?
1 virtual address space per process, with many processes…
(To scale with 64-bit address space,you can't see it.)
Virtual Memory
Problem 3: protection
5
Physical main memory
Process i
Process j
Problem 4: sharingPhysical main memory
Process i
Process j
Virtual Memory
Solution: Virtual Memory (address indirection)
6
Private virtual address space per process.
Physical memory
Virt
ual a
ddre
ss sp
ace
Process 1
Process n
virtual-to-physical
mapping
virtual addresses
physical addresses
virtual addresses
Single physical address space managed by OS/hardware.
Virt
ual a
ddre
ss sp
ace
data
data
Virtual Memory
Indirection
Direct naming
Indirect naming
7
"2"
"x" 2
What if we move Thing?
Thing
7
01
2
3
6
5
4What X currently maps to
"2"
"2"
"x""x"
"x"
(it's everywhere!)
Virtual Memory
Tangent: indirection everywhere• Pointers• Constants• Procedural abstraction• Domain Name Service (DNS)• Dynamic Host Configuration Protocol (DHCP)• Phone numbers• 911• Call centers• Snail mail forwarding• …“Any problem in computer science can be solved by adding another level of indirection.”
–David Wheeler, inventor of the subroutine, or Butler Lampson
Another Wheeler quote? "Compatibility means deliberately repeating other people's mistakes."Virtual Memory 8
Virtual addressing and address translation
9Physical addresses are invisible to programs.
0:1:
M-1:
Main memory
MMU
2:3:4:5:6:7:
Physical address(PA)
Data
8: ...
CPUVirtual address
(VA)
CPU Chip
44100
Memory Management Unittranslates virtual address to physical address
Virtual Memory
Page-based mapping
PhysicalAddress Space
Physical Page
0Physical
Page1
…Physical
Page2p - 1
0
2m - 1
VirtualAddress Space
VirtualPage
0VirtualPage
1
…VirtualPage2v - 1
0
2n - 1
VirtualPage
2VirtualPage
3
fixed-size, aligned pagespage size = power of two
Map virtual pages onto physical pages.
Some virtual pages do not fit! Where are they stored?
Virtual Memory 10
Cannot fit all virtual pages! Where are the rest stored?
Physical MemoryAddress Space
Physical Page
0Physical
Page1
…Physical
Page2p - 1
0
2m - 1
Virtual MemoryAddress Space
VirtualPage
0VirtualPage
1
…VirtualPage2v - 1
0
2n - 1
VirtualPage
2VirtualPage
31. On disk if used
2. Nowhere if not (yet?) used
virtual address spaceusually much larger thanphysical address space
Fully associative• Store any virtual page in any physical page• Large mapping function
Large page sizeusually 4KB, up to 2-4MB
Sophisticatedreplacement policy• Not just hardware Write-back
Associativity?
Page size?
Replacement policy? Write
policy?Virtual Memory 14
Address translation
15
0:1:
M-1:
Main memory
MMU
2:3:4:5:6:7:
Physical address(PA)
Data
8: ...
CPUVirtual address
(VA)
CPU Chip
44100
Virtual Memory
Page tablearray of page table entries (PTEs)mapping virtual page to where it is stored
16
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0
VP 2
VP 1
PP 3
How many page tables are in the system?
null
null
page table
01
0
01101
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
Memory resident,managed by HW (MMU), OS
VP 3
VP 6
Virtual Memory
Address translation with a page table
17
Virtual page number (VPN) Virtual page offset (VPO)
Physical page number (PPN) Physical page offset (PPO)
Virtual address (VA)
Physical address (PA)
Valid Physical page number (PPN)
Page table base register
(PTBR)
Page table Base addressof current process'spage table
Virtual page mappedto physical page?
yes = page hit
Virtual Memory
On disk
Page hit: virtual page is in memory
18
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0VP 1
PP 3
On diskPP 2
null
nullPP 0PP 1
PP 3
page table
01
0
01101
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
Virtual Page Number
VP 2
VP 3
VP 6
Virtual Memory
PP 1
PP 3On disk
Page fault:
19
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0VP 1
PP 3
On diskPP 2
null
nullPP 0
page table
01
0
01101
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
Virtual Page Number
VP 2
VP 3
VP 6
PP 1
PP 2
Virtual Memory
Process
Page fault: exceptional control flow
Process accessed virtual address in a page that is not in physical memory.
20
User Code OS exception handler
exception: page fault
Load pageinto memoryreturn
movl
Returns to faulting instruction:movl is executed again!
Virtual Memory
PP 1
PP 3On disk
Page fault: 1. page not in memory
21
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0VP 1
PP 3
On diskPP 2
null
nullPP 0
page table
01
0
01101
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
Virtual Page Number
VP 2
What now?OS handles fault
Exception!
VP 3
VP 6
Virtual Memory
null
0 On diskPP 1On disk
PP 3
Page fault: 2. OS evicts another page.
22
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0VP 1
PP 3
VP 3
On diskPP 2
null
page table
01
0
0
10
1
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
VP 6
Virtual Page Number
VP 2
"Page out"
VP 1Virtual Memory
PP 11
PP 3PP 0
Page fault: 3. OS loads needed page.
23
Physical pages(Physical memory)
Swap space(Disk)
VP 7
VP 4
PP 0
VP 2
PP 3
On diskPP 2
null
nullOn disk
page table
01
0
01
11
ValidPhysical Page Number
or disk addressPTE 0
PTE 7
Virtual Page Number
VP 3
VP 6
VP 1
VP 3
Finally:Re-execute faulting instruction.Page hit!
"Page in"
Virtual Memory
Terminologycontext switch
Switch control between processes on the same CPU.
page inMove page of virtual memory from disk to physical memory.
page outMove page of virtual memory from physical memory to disk.
thrashTotal working set size of processes is larger than physical memory.Most time is spent paging in and out instead of doing useful work.
24Virtual Memory
Address translation: page hit
1) Processor sends virtual address to MMU (memory management unit)
2-3) MMU fetches PTE from page table in cache/memory
4) MMU sends physical address to cache/memory
5) Cache/memory sends data word to processor
Virtual Memory 25
MMU Cache/Memory
PA
Data
CPU VA
CPU Chip PTEA
PTE1
2
3
4
5
Address Translation: Page Fault
1) Processor sends virtual address to MMU 2-3) MMU fetches PTE from page table in cache/memory4) Valid bit is zero, so MMU triggers page fault exception5) Handler identifies victim (and, if dirty, pages it out to disk)6) Handler pages in new page and updates PTE in memory7) Handler returns to original process, restarting faulting instruction
Virtual Memory 26
MMU Cache/Memory
CPU VA
CPU Chip PTEA
PTE1
2
3
4
5
Disk
Page fault handler
Victim page
New page
Exception
6
7
Translation Lookaside Buffer (TLB)Small hardware cache in MMU just for page table entries
e.g., 128 or 256 entries
Much faster than a page table lookup in memory.
In the running for "un/classiest name of a thing in CS"
27
How fast is translation?How many physical memory accesses are required to complete one virtual memory access?
Virtual Memory
TLB hit
28
MMU Cache/Memory
PA
Data
CPU VA
CPU Chip
PTE
1
2
4
5
A TLB hit eliminates a memory access
TLB
VPN 3
Virtual Memory
TLB miss
29
MMU Cache/MemoryPA
Data
CPU VA
CPU Chip
PTE
1
2
5
6
TLB
VPN
4
PTEA3
A TLB miss incurs an additional memory access (the PTE)Fortunately, TLB misses are rare. Does a TLB miss require disk access?
Virtual memory benefits:Simple address space allocation
Process needs private contiguous address space.Storage of virtual pages in physical pages is fully associative.
34
0
N-1
VP 1VP 2...
0
N-1
VP 1VP 2...
PP 2
PP 6
PP 8
...
0
M-1
PP 9
Process 1:Physical Address Space (DRAM)
Process 2:
Virtual Address Spaces
Virtual Memory
Virtual memory benefits:Simple cached access to storage > memoryGood locality, or least "small" working set = mostly page hits
If combined working set > physical memory:Thrashing: Performance meltdown. CPU always waiting or paging.
Full indirection quote:“Every problem in computer science can be solved by adding another level of indirection, but that usually will create another problem.”
35
All necessary page table entries
fit in TLB
Working set pagesfit in physical memory
Virtual Memory
Virtual memory benefits:Protection:
All accesses go through translation.Impossible to access physical memory not mapped in virtual address space.
Sharing:Map virtual pages in separate address spaces to same physical page (PP 6).
36
Process 1:Physical Address Space (DRAM)
0
N-1(e.g., execute-onlylibrary code: libc)
Process 2:
VP 1VP 2...
0
N-1
VP 1VP 2...
PP 2
PP 6
PP 8
...
0
M-1
Virtual Address Spaces
Virtual Memory
Virtual memory benefits:Memory permissions
37
Process 1: Physical Page NumWRITE EXECPP 6NoNoPP 4No YesPP 2Yes
Process 2:
No
READYes
NoYes
WRITE EXECPP 9Yes NoPP 6NoNo
PP 11Yes No
READ
YesNo
VP 0:VP 1:VP 2:
VP 0:VP 1:VP 2:
Physical Address Space
PP 2
PP 4
PP 6
PP 8PP 9
PP 11
YesYesYes
YesYesYes
Valid
Valid Physical Page Num
permission bits
Page Table
Page Table
permission bits
MMU checks on every access.Exception if not allowed.
Yes
How would you set permissions for the stack, heap, global variables, literals, code?Virtual Memory
Summary: virtual memoryProgrammer’s view of virtual memory
System view of virtual memory
38
Each process has its own private linear address spaceCannot be corrupted by other processes
Uses memory efficiently (due to locality) by caching virtual memory pagesSimplifies memory management and sharingSimplifies protection -- easy to interpose and check permissionsMore goodies:
• Memory-mapped files• Cheap fork() with copy-on-write pages (COW)
Virtual Memory
Summary: memory hierarchy
L1/L2/L3 Cache: Pure Hardware
Virtual Memory: Software-Hardware Co-design
39
Purely an optimization"Invisible" to program and OS, no direct controlProgrammer cannot control caching, can write code that fits well
Supports processes, memory managementOperating System (software) manages the mapping