Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 36: Programming Languages & Memory Management Announcements & Review Read Ch GU1 & GU2 Cohoon & Davidson Ch 14 Reges & Stepp Lab 10 set game due.

Similar presentations


Presentation on theme: "Lecture 36: Programming Languages & Memory Management Announcements & Review Read Ch GU1 & GU2 Cohoon & Davidson Ch 14 Reges & Stepp Lab 10 set game due."— Presentation transcript:

1 Lecture 36: Programming Languages & Memory Management Announcements & Review Read Ch GU1 & GU2 Cohoon & Davidson Ch 14 Reges & Stepp Lab 10 set game due 4/26 Exam 2 Wed 5/2 5:30-7:30 GEO 2.216 Last few times: GUI Today: Research in Programming Languages introduction to memory management

2 Lecture 36: Programming Languages & Memory Management Software Developer Dreams

3 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

4 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

5 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 matters unobtrusive, low overhead approaches

6 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

7 Lecture 36: Programming Languages & Memory Management Example Program with classes for plates, bowls, & silverware What happens in memory when the program says new?

8 Lecture 36: Programming Languages & Memory Management Select Plates, Bowls, Silverware Objects

9 Lecture 36: Programming Languages & Memory Management Select Plates, Bowls, Silverware

10 Lecture 36: Programming Languages & Memory Management Explicit Memory Management: Hand Wash Dishes

11 Lecture 36: Programming Languages & Memory Management Explicit Memory Management: Hand Wash Dishes

12 Lecture 36: Programming Languages & Memory Management Explicit Memory Management: Hand Wash Dishes

13 Lecture 36: Programming Languages & Memory Management Explicit Memory Management: Hand Wash Dishes

14 Lecture 36: Programming Languages & Memory Management Explicit Memory Management: Hand Wash Dishes

15 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

16 Lecture 36: Programming Languages & Memory Management Select Plates, Bowls, Silverware

17 Lecture 36: Programming Languages & Memory Management Select Plates, Bowls, Silverware

18 Lecture 36: Programming Languages & Memory Management Dad Runs Dish Washer & Puts Up Dishes

19 Lecture 36: Programming Languages & Memory Management Memory System Organization Registers CPU Central Processing Unit Instruction Cache Data Cache Level 2 Cache Memory

20 Lecture 36: Programming Languages & Memory Management Mapping Dishes to Computer Resources Class Declarations chunks of memory

21 Lecture 36: Programming Languages & Memory Management Contiguous Allocation Plate p = new Plate();

22 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();

23 Lecture 36: Programming Languages & Memory Management Contiguous Allocation etc.

24 Lecture 36: Programming Languages & Memory Management Explicit Memory Management Free with Continuous Allocation Free (b3)

25 Lecture 36: Programming Languages & Memory Management Free with Contiguous Allocation Free (b3) Free (s1)

26 Lecture 36: Programming Languages & Memory Management Garbage Collection with Contiguous Allocation Wait longer

27 Lecture 36: Programming Languages & Memory Management Garbage Collection with Contiguous Allocation Find live objects: L LL LL

28 Lecture 36: Programming Languages & Memory Management Find live objects: L Copy live objects to new area L Garbage Collection with Contiguous Allocation

29 Lecture 36: Programming Languages & Memory Management Find live objects: L Copy live objects to new area Reclaim old space L Garbage Collection with Contiguous Allocation

30 Lecture 36: Programming Languages & Memory Management Find live objects: L Copy them to new area Reclaim old space Allocate into new space Garbage Collection with Contiguous Allocation

31 Lecture 36: Programming Languages & Memory Management Allocation with Size-Class Free-Lists

32 Lecture 36: Programming Languages & Memory Management Free (b3) Free (s1) Allocation with Size-Class Free-Lists

33 Lecture 36: Programming Languages & Memory Management We can use linked lists for each list of free sizes to find the free ones Allocation with Size-Class Free-Lists... free list size 24 bytes free list size 20 bytes

34 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

35 Lecture 36: Programming Languages & Memory Management Other Key Ideas in Memory Management Locality Incrementality Generational behavior Older-first behavior –My research group introduced this one!


Download ppt "Lecture 36: Programming Languages & Memory Management Announcements & Review Read Ch GU1 & GU2 Cohoon & Davidson Ch 14 Reges & Stepp Lab 10 set game due."

Similar presentations


Ads by Google