Title: Announcements
1Announcements Review
- Last few times
- GUI
- Today
- Research in Programming Languages
- introduction to memory management
-
- Read
- Ch GU1 GU2 Cohoon Davidson
- Ch 14 Reges Stepp
- Lab 10 set game
- due 4/26
- Exam 2
- Wed 5/2 530-730
- GEO 2.216
2Software Developer Dreams
3Software Developer Dreams
- Easy to implement specifications
- Easy to get correct
- Robust to errors of all sorts
- Easy to maintain
- Runs fast
4Impediments to the Dream
- Applications growing bigger more complex
- Application knowledge spread thin
- Testing is not enough
- Architectures growing more complex
- Single core complexity
- Multicore
- The glue is more complicated
- Dynamic optimization runtime systems
- Coordination between multiple languages and
runtime systems - Impossible to test all scenarios
- Difficult to understand the program
- or its runtime behavior
5Multi-pronged Approach to Correct High
Performance Software
- Better languages
- Java and C are not the last programming
languages - Validation when possible
- We probably will not be able to validate
substantial parallel applications any time soon - Is application growth outpacing validation
advances? - Analysis and development tools
- Static bug finding tools
- Dynamic optimization
- Dynamic bug finding tools
- Self healing systems
- Dont crash
- Dynamically updatable systems
- Evaluation
- Performance still matters
- unobtrusive, low overhead approaches
6Java put garbage collection into widespread use
- In Java
- programs use new
- objects abstract their location, i.e., a program
never records an object address - Therefore, objects can move
- programs contain no free/delete
- easier to program, since you dont have to figure
out when an object becomes unreachable - In C and C
- programmers use new and free/delete
- programs can record the address of an object in
variables which causes errors, e.g., buffer
overflow - Therefore, objects may not move
7Example
- Program with classes for plates, bowls,
silverware - What happens in memory when the program says
new?
8Select Plates, Bowls, Silverware Objects
9Select Plates, Bowls, Silverware
10Explicit Memory ManagementHand Wash Dishes
11Explicit Memory ManagementHand Wash Dishes
12Explicit Memory ManagementHand Wash Dishes
13Explicit Memory ManagementHand Wash Dishes
14Explicit Memory ManagementHand Wash Dishes
15Dish Washer Automatic Memory ManagementGarbage
Collection
- Dad is the garbage collector
- Do forever
- Prepare meal
- Select plates, bowls, silverware
- Serve food Eat
- Dad put dishes in dishwasher
- Dad checks if dishwasher full or
- Out of plates, bowls or silverware
- Dad runs dishwasher
16Select Plates, Bowls, Silverware
17Select Plates, Bowls, Silverware
18Dad Runs Dish Washer Puts Up Dishes
19Memory System Organization
Registers
Instruction Cache
CPU Central Processing Unit
Level 2 Cache
Data Cache
Memory
20Mapping Dishes to Computer Resources
chunks of memory
Class Declarations
21Contiguous Allocation
Plate p new Plate()
22Contiguous Allocation
Plate p1 new Plate() Plate p2 new Plate()
Bowl b1 new Bowl() Fork f1 new Fork()
Fork f2 new Fork() Spoon s1 new Spoon()
23Contiguous Allocation
etc.
24Explicit Memory ManagementFree with Continuous
Allocation
Free (b3)
25Free with Contiguous Allocation
Free (b3) Free (s1)
26Garbage Collectionwith Contiguous Allocation
Wait longer
27Garbage Collection with Contiguous Allocation
L
L
Find live objects L
L
L
28Garbage Collection with Contiguous Allocation
Find live objects L Copy live objects to new area
L
29Garbage Collection with Contiguous Allocation
Find live objects L Copy live objects to new
area Reclaim old space
L
30Garbage Collection with Contiguous Allocation
Find live objects L Copy them to new
area Reclaim old space Allocate into new space
31Allocation withSize-Class Free-Lists
32Allocation withSize-Class Free-Lists
Free (b3) Free (s1)
33Allocation withSize-Class Free-Lists
free list size 24 bytes
free list size 20 bytes
...
We can use linked lists for each list of free
sizes to find the free ones
...
34Memory Management
- All memory management uses one of these two basic
mechanisms - Contiguous allocation
- Size-Class Free-Lists
- Classic Computer Science Problem in Space-Time
tradeoff
35Other Key Ideas in Memory Management
- Locality
- Incrementality
- Generational behavior
- Older-first behavior
- My research group introduced this one!