Memory management ch 14
This presentation is the property of its rightful owner.
Sponsored Links
1 / 41

Memory Management (Ch 14) PowerPoint PPT Presentation


  • 56 Views
  • Uploaded on
  • Presentation posted in: General

It is a 800-pages topic, but here we want to do it in one/two class!. Memory Management (Ch 14). Dynamic memory allocation Language systems provide an important hidden player: Runtime memory manager Activation records Objects Explicit allocations: new , malloc , etc.

Download Presentation

Memory Management (Ch 14)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Memory management ch 14

It is a 800-pages topic, but here

we want to do it in one/two class!

Memory Management (Ch 14)

  • Dynamic memory allocation

    Language systems provide an important hidden player:

    Runtime memory manager

    • Activation records

    • Objects

    • Explicit allocations: new, malloc, etc.

    • Implicit allocations: strings, file buffers, arrays with dynamically varying size, etc.

IT 327


Memory model

Memory Model

Yes! It’s OS’s job!!

  • For now, assume that the OS grants each running program one or more fixed-size regions of memory for dynamic allocation

  • We will model these regions as an array

    • Our textbook shows an examples of memory management code in Java

IT 327


Stacks of activation records

Stacks Of Activation Records

A simple memory management problem

  • Activation records must be allocated dynamically

  • Allocate on call and de-allocate on return

  • Stack of activation records: push and pop

IT 327


A stack illustration

A Stack Illustration

An empty stack of 8 words.

reg.

grow

IT 327


Memory management ch 14

Some program P needs 3 words

The manager program calls m.push(3).

P gets this

pointer

IT 327


Memory management ch 14

Some other program Q needs 2 words

The manager program calls m.push(2).

P gets this

pointer

Q gets this

pointer

wasted

IT 327


Memory management ch 14

Heap

  • Stack is easy to do, but

    Allocations and deallocations may come in any order?

  • A heapis a pool of blocks of memory

    At the beginning there is only one block

    (but not always the case)

    There are many approaches for doing this…

IT 327


How to deal blocks to the requests

How to deal blocks to the requests?

A pool of free blocks are linked, initially containing one big free block, then fragmented into small blocks

The easiest approach: First Fitfor request

  • Search the free list for first adequate block

  • If there is extra space in the block, return the unused portion to front of the free list

  • Allocate requested portion (at the lower end)

To free a block, just add to the front of the free list

IT 327


Heap implementation in an array

Heap implementation in an array

Pointer to next block,

-1 means no next block.

Size of this block

IT 327


Memory management ch 14

Some program P

requests 4 words

Size of this free block

P gets this

pointer

Size of this block for P

IT 327


Memory management ch 14

Some program Q

requests 2 words

Q gets this

pointer

Size of this block

IT 327


Memory management ch 14

P is done

IT 327


Memory management ch 14

Some program R

requests 1 word

R gets this

pointer

IT 327


A problem

top

A Problem

p2

p2

  • Consider this sequence:

  • The manager needs to coalesce adjacent free blocks.

p1=m.allocate(4);

p2=m.allocate(4);

m.deallocate(p1);

m.deallocate(p2);

p3=m.allocate(7);

top

top

p1

p1

top

How?

IT 327


Improvement strategy

Improvement strategy

  • Quick lists, a separate list, same sized blocks

  • Delayed coalescing

Keep separate free lists for popular (small) block sizes

IT 327


Another problem fragmentation

Another problem: Fragmentation

p1=m.allocate(4);p2=m.allocate(1);m.deallocate(p1);p3=m.allocate(5);

The final allocation will fail because of fragmentation.

DeFragmentation

IT 327


Heap mechanisms to manage heaps

Heap Mechanisms (to manage heaps.)

Many variety and different refinements

  • Three major issues:

    • Placement—where to allocate a block

    • Splitting—when and how to split large blocks

    • Coalescing—when and how to recombine

IT 327


Placement where to allocate a block

Placement: Where to allocate a block

  • (FF) First Fit from a stack (FIFO) of free list

  • (BF) Best Fit …

  • (NF) Next Fit …

    Some mechanisms use a more scalable data structure like a Balanced Binary Tree

IT 327


Splitting when and how to split large blocks

Splitting: When and how to split large blocks

  • Split to requested size

  • Sometimes, less splitting gives better results e.g., allocate more than requested or rounding up allocation size to somemultiple, for example 2n

IT 327


Coalescing when and how to recombine adjacent free blocks

Coalescing: When and how to recombine adjacent free blocks

  • Several varieties:

    • No coalescing

    • Eager coalescing

    • Delayed coalescing

IT 327


Current heap links

Current Heap Links

  • Some systems track current heap links

  • A current heap link is a memory address (location in the heap) where the running program may use

a

b

What if

a = new X(i);

b = new X(j);

a = b;

IT 327


Tracing current heap links

Tracing Current Heap Links

2

IntList a = new IntList(null);int b = 2;int c = 1;a = a.cons(b);a = a.cons(c);

1

3

Where are the current heap links in this picture?

1

2

3

IT 327


To find current heap links

To Find Current Heap Links

  • Start with the root set: memory locations outside of the heap with links into the heap

    We have to check:

    • Active activation records (if on the stack)

    • Static variables, etc.

  • For each memory location in the set, look at the allocated block it points to, and add all the memory locations in that block

  • Repeat until no new locations are found

{a b c }

They are not in the active activation record.

IT 327


Possible errors in current heap links

Possible Errors In Current Heap Links

Heap

1. Exclusion errors: a memory location that actually is a current heap link is left out. (This type of error is not allowed)

Current heap links

Static variables

p, r, a

Current Activation Record

IT 327


Possible errors in current heap links1

Possible Errors In Current Heap Links

Heap

2. Unused inclusion errors: a memory location is included, but the program never actually uses the value stored there

Current heap links

Static variables

s, p, r, a, c, d

How do I know this is the case?

Current Activation Record

IT 327


Possible errors in current heap links2

Possible Errors In Current Heap Links

Heap

3. Used inclusion errors (mistaken): a memory location is included, but the program uses the value stored there as something other than a heap address (e.g. int)

Current heap links

Static variables

s, p, r, a, c, y, z

How do I know this is the case?

Current Activation Record

IT 327


Errors are unavoidable

Errors Are Unavoidable

  • For heap manager purposes, exclusion errors are unacceptable

    Therefore, we must include a location if it might be used as a heap link, and

  • This makes unused inclusionerrors unavoidable

  • Depending on the language, used inclusions errors (mistaken) may also be unavoidable

IT 327


An application for current heap links heap compaction defragmentation

An application for current heap links:Heap Compaction/Defragmentation

P

P

  • Manager can re-allocate blocks:

    • Copy the block to a new location

    • Update all links to (or into) that block

  • So it can compact the heap, moving all allocated blocks to one end, leaving one big free block and no fragmentation

S

Q

R

Q

T

R

S

T

IT 327


Memory management ch 14

  • There are so many errors caused by improper de-allocation

    (e.g., Bad or without class destructors in C/C++)

  • It is a burden on the programmer …

Therefore, let the language system do the job automatically --- Garbage Collection

IT 327


Garbage collection

Garbage Collection

  • Mark and sweep

  • Copying

  • Reference counting

Three Major Approaches

IT 327


Mark and sweep

Mark And Sweep

uses current heap links in a two-stage process:

  • Mark: find the live heap links and mark all the heap blocks pointed by them

  • Sweep: make a pass over the heap and return unmarked blocks to the free pool

- both kinds of inclusion errors are tolerated,

- blocks are not moved, fragmentation may remain

IT 327


Mark and sweep1

Mark And Sweep

blocks are not moved / fragmentations may remain

Mark: live heap links (in red)

P

P

Free blocks

Free blocks

R

R

S

S

Sweep: return unmarked blocks to the free pool

T

T

IT 327


Copying collection

Copying Collection

  • divide memory in half, and uses only one half at a time

  • When one half becomes full, find live heap links, and copy live blocks to the other half

  • Fragmentation is eliminated

  • Moves blocks

Cannot tolerate used inclusion errors. Why?

Because that used variable will be mistaken as a link and hence modified

IT 327


Memory management ch 14

Moves blocks: cannot tolerate used inclusion errors (mistake)

X=100

P

X=700

P

S

Copying Collection

Q

R

Q

T

R

S

T

IT 327


Reference counting

Reference Counting

  • Each block has a counter of heap links to it

  • Incremented when a heap link is copied, decremented when a heap link is discarded

  • When counter goes to zero, block is garbage and can be freed

  • Does not use current heap links

IT 327


Reference counting1

Reference Counting

IT 327


Reference counting problem

Garbage cycles can’t be identified

Reference Counting Problem

Reference counters are not zero

But all blocks are garbage.

IT 327


Reference counting2

Reference Counting

  • Problem 1: cycles of garbage

  • Problem 2: overhead of updating reference counters is high

  • One advantage: more uniform. I.e., cost is incremental, no big pause while collecting

IT 327


Garbage collecting refinements

Garbage Collecting Refinements

  • Generational collectors

    • Divide block into generations according to age

    • Garbage collect in younger generations more often (using previous methods)

  • Incremental collectors

    • Collect garbage a little at a time

    • Avoid the uneven performance like mark-and-sweep and copying collectors

IT 327


Languages with garbage collectors

Languages with Garbage Collectors

  • Required: Java, ML

  • encouraged: Ada

  • difficult to have: C, C++

    • But not impossible, even for C and C++

    • There are libraries that replace the usual malloc/free with a garbage-collecting manager

IT 327


Conclusion

Conclusion

  • Memory management is an important hidden player in language systems

  • Performance and reliability are critical

  • Different techniques are difficult to compare, since every run of every program makes different memory demands

  • Still an active area of language systems research and experimentation

IT 327


  • Login