Virtual Memory Art Munson CS614 Presentation February 10, 2004

advertisement
Virtual Memory
Art Munson
CS614 Presentation
February 10, 2004
VM Review
Virtual Memory (seen by application)
Efficient Translation?
0
6 1 4
Physical Memory
VM Review (II)
Virtual Memory (seen by application)
Lookup page
TLB
6
Fr 2
1
Fr 3
Found ?
0
6 1 4
Physical Memory
Yes
Page Table
Virt.
Page
No
Phys.
Frame
0
0
1
3
2
-1
…
…
VM Pros/Cons
• More address space
– Per program
– System-wide
• Isolation / Protection
• Ease of Cleanup
• Complicates sharing
memory
• Performance:
– Context switches
(cache, TLB)
Motivation: multiple interactive programs on one computer
Mach Goals
• Portable: uniproc, multiproc, and
distributed computers
• Support large, sparse virtual address space
• Copy-on-write as VM operation
• Efficient copy-on-write & read-write
memory sharing
Mach Goals (cont’d)
• Memory mapped files
• Allow generic user-provided backing store
objects (and pagers)
Mach Memory Architecture
Address map
R/C
RW/N
RW/C
X/S
Ref: 3
Memory objects
Ref: 1
Pagers
Kernel
??
Machine Dependent Code
CPU
Phys. Memory
pmap
Key Architecture Decisions
Memory Objects
• Data. Anywhere. Associated pager maps to
address space(s).
Message Passing
• Loosely coupled, allowing generality.
• Simple semantics allows consistent API for
distributed computing. Too simple?
Implementing Memory Sharing
• Shadow objects:
proxies to support
copy-on-write at page
granularity.
• Shared mapping:
provides coherency for
read-write sharing
A
B
C
Page Table Tradeoffs
Pg 0-3
Pg 0
Fr 2
Pg 3-6
Pg 1
Fr 0
…
Pg 2
Disk
…
…
Pg 0
Fr 2
Pg 1
Fr 0
Pg 2
Disk
…
…
Normal: due to large size
(8MB), linear
organization nonoption
Inverted: query with hash
function. Aliasing clumsy /
expensive
Fr 0
Pg 1
Fr 1
empty
Fr 2
Pg 0
Fr 3
Pg 6
Mach VM Performance
Mach VM Performance (II)
Clever VM Hacks
Idea: use page fault hardware to check simple
application predicates.
• OS provides hooks for application: TRAP,
PROT1, PROTN, UNPROT, DIRTY, MAP2
• Implicit assumption that faulting page is in
memory---i.e. app handles protection faults.
Pointer Forwarding
To-space
From-space
Pointer Forwarding (II)
To-space
From-space
Hack #1: Concurrent Garbage
Collection
From-space
1. Initialize collecting:
a. Stop mutator threads.
b. PROTN collection region.
c. MAP2 region so collector
can access (not shown).
d. Copy roots & registers to
to-space.
e. Restart mutator threads.
f. Collecting thread starts
scanning from-space.
To-space
Hack #1: Concurrent Garbage
Collection
(II)
From-space
Page fault
void trap_fault(pg) {
objList = scanPage(pg);
foreach (o in objList) {
copy o to to-space
forward ptrs to o
}
UNPROT(pg);
rerun faulting instr.
}
To-space
Hack #2: Shared Virtual Memory
Hack #2: Shared Virtual Memory
(II)
CPU 1 faults when trying to write read-only B.
CPU 1
a
B c d e f g h
Give me up-to-date copy of B;
Then invalidate the page.
Here you go.
CPU 5
CPU 1 now marks B as writeable
and resumes execution.
i
j k B m f w h
Hack #3: Concurrent
Checkpointing
Goal: save application state (registers +
memory).
Algorithm:
• Mark all pages read-only (PROTN).
• Background thread concurrently copies
pages to checkpoint, then marks read/write.
• On write-fault, checkpoint thread backs up
faulting page and marks writeable.
Other VM Algorithms
•
•
•
•
•
Generational garbage collection
Persistent stores
Extending address space in persistent stores
Data compression paging
Heap overflow detection
VM Primitive Performance
Is this a good idea?
View 1:
• Extending VM services provided by OS
• Reduces instruction count => better perf*
• Data properties determine program
execution. Mach model easy logical fit.
So OS designers should improve efficiency of
VM primitives.
Is this a good idea? (II)
View 2:
• Relies on knowledge of hardware, not an
abstraction.
• Introducing more page faults might degrade
performance on current highly pipelined
processors.
• Able to enforce not looking at CPU state?
• OS: trust application code?
Summary
• Rich set of memory abstractions enables
VM for uniproc and multiproc computers.
– Distributed computing tolerant of abstraction in
practice?
• Clever VM hacks may not adjust well to
hardware changes.
Download