Date post: | 20-Dec-2015 |
Category: |
Documents |
View: | 217 times |
Download: | 1 times |
Lecture 36: Programming Languages & Memory Management
Announcements & Review
Read Ch GU1 & GU2 Cohoon & DavidsonCh 14 Reges & Stepp
Lab 10 set gamedue 4/26
Exam 2 Wed 5/2 5:30-7:30GEO 2.216
Last few times:GUI
Today: Research in Programming Languagesintroduction to memory management
Lecture 36: Programming Languages & Memory Management
Software Developer Dreams
• Easy to implement specifications• Easy to get correct• Robust to errors of all sorts• Easy to maintain• Runs fast
Lecture 36: Programming Languages & Memory Management
Impediments 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
Lecture 36: Programming Languages & Memory Management
Multi-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– Don’t crash
• Dynamically updatable systems• Evaluation
Performance still mattersunobtrusive, low overhead approaches
Lecture 36: Programming Languages & Memory Management
Java 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 don’t 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
Lecture 36: Programming Languages & Memory Management
Example
• Program with classes for plates, bowls, & silverware
• What happens in memory when the program says new?
Lecture 36: Programming Languages & Memory Management
Dish Washer: Automatic Memory Management
Garbage 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
Lecture 36: Programming Languages & Memory Management
Memory System Organization
Registers
CPUCentral
Processing Unit
InstructionCache
DataCache
Level 2Cache
Memory
Lecture 36: Programming Languages & Memory Management
Mapping Dishes to Computer
Resources
Class Declarations
chunks of memory
Lecture 36: Programming Languages & Memory Management
Contiguous 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();
Lecture 36: Programming Languages & Memory Management
Explicit Memory Management
Free with Continuous Allocation
Free (b3)
Lecture 36: Programming Languages & Memory Management
Free with Contiguous Allocation
Free (b3)Free (s1)
Lecture 36: Programming Languages & Memory Management
Garbage Collectionwith Contiguous Allocation
Wait longer
Lecture 36: Programming Languages & Memory Management
Garbage Collection with Contiguous
Allocation
Find live objects: L
L L
L L
Lecture 36: Programming Languages & Memory Management
Find live objects: LCopy live objects to new area
L
Garbage Collection with Contiguous
Allocation
Lecture 36: Programming Languages & Memory Management
Find live objects: LCopy live objects to new areaReclaim old space
L
Garbage Collection with Contiguous
Allocation
Lecture 36: Programming Languages & Memory Management
Find live objects: LCopy them to new areaReclaim old spaceAllocate into new space
Garbage Collection with Contiguous
Allocation
Lecture 36: Programming Languages & Memory Management
Free (b3)Free (s1)
Allocation withSize-Class Free-Lists
Lecture 36: Programming Languages & Memory Management
We can use linked listsfor each list of free sizesto find the free ones
Allocation withSize-Class Free-Lists
...
...
free list size 24 bytes
free list size 20 bytes
Lecture 36: Programming Languages & Memory Management
Memory 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