Harvey Mudd CS 105 - Dynamic Memory Allocation II

Unformatted text preview:

CS 105 Tour of the Black Holes of Systems Dynamic Memory Allocation II Topics dmem2 ppt Explicit doubly linked free lists Segregated free lists Garbage collection Memory related perils and pitfalls Keeping Track of Free Blocks Method 1 Implicit list using lengths links all blocks 5 4 6 2 Method 2 Explicit list among the free blocks using pointers within the free blocks 5 4 6 2 Method 3 Segregated free lists Different free lists for different size classes Method 4 Blocks sorted by size not discussed 2 Can use a balanced tree e g Red Black tree with pointers within each free block and the length used as a key CS 105 Explicit Free Lists A B C Use data space for link pointers Typically doubly linked Still need boundary tags for coalescing Forward links A 4 4 4 4 6 6 4 C 3 4 4 B 4 Back links It is important to realize that links are not necessarily in the same order as the blocks CS 105 Allocating From Explicit Free Lists pred Before succ free block pred After with splitting 4 succ free block CS 105 Freeing With Explicit Free Lists Insertion policy Where in the free list do you put a newly freed block LIFO last in first out policy Insert freed block at the beginning of the free list Pro simple and constant time Con studies suggest fragmentation is worse than address ordered Address ordered policy Insert freed blocks so free list blocks are always in address order i e addr pred addr curr addr succ Con requires search Pro studies suggest fragmentation is better than LIFO 5 CS 105 Freeing With a LIFO Policy pred p Case 1 a a a Insert self at beginning of free list a succ s self a p Case 2 a a f before a Remove next from free list coalesce self and next and add to beginning of free list after 6 s self f p a s f CS 105 Freeing With a LIFO Policy cont p Case 3 f a a Remove prev from free list coalesce with self and add to beginning of free list s before f after p 7 Remove prev and next from free list coalesce with self and add to beginning of list a s f p1 Case 4 f a f self a s1 p2 s2 before f after p1 self s1 f p2 s2 f CS 105 Summary of Explicit Lists Comparison to implicit lists Allocate is linear time in number of free blocks instead of total blocks much faster allocates when most of memory full Slightly more complicated allocate and free since needs to splice blocks in and out of free list Some extra space for links 2 extra words for each block Main use of linked lists is in conjunction with segregated free lists 8 Keep multiple linked lists of different size classes or possibly for different types of objects CS 105 Keeping Track of Free Blocks Method 1 Implicit list using lengths links all blocks 5 4 6 2 Method 2 Explicit list among the free blocks using pointers within the free blocks 5 4 6 2 Method 3 Segregated free list Different free lists for different size classes Method 4 Blocks sorted by size 9 Can use a balanced tree e g Red Black tree with pointers within each free block and the length used as a key CS 105 Segregated Storage Each size class has its own collection of blocks 1 2 3 4 5 8 9 16 10 Often have separate size class for every small size 2 3 4 For larger sizes typically have a size class for each power of 2 CS 105 Simple Segregated Storage Separate heap and free list for each size class No splitting To allocate a block of size n If free list for size n is not empty allocate first block on list note list can be implicit or explicit If free list is empty get a new page create new free list from all blocks in page allocate first block on list Constant time To free a block Add to free list If page is empty return the page for use by another size optional Tradeoffs 11 Fast but can fragment badly CS 105 Segregated Fits Array of free lists each one for some size class To allocate a block of size n Search appropriate free list for block of size m n If an appropriate block is found Split block and place fragment on appropriate list optional If no block is found try next larger class Repeat until block is found To free a block Coalesce and place on appropriate list optional Tradeoffs 12 Faster search than sequential fits i e log time for power of two size classes Controls fragmentation of simple segregated storage Coalescing can increase search times Deferred coalescing can help CS 105 Buddy Allocators Special case of segregated fits Basic idea Limited to power of two sizes Can only coalesce with buddy who is other half of next higher power of two Clever use of low address bits to find buddies Problem large powers of two result in large internal fragmentation e g what if you want to allocate 65537 bytes 13 CS 105 For More Info on Allocators D Knuth The Art of Computer Programming Second Edition Addison Wesley 1973 The classic reference on dynamic storage allocation Wilson et al Dynamic Storage Allocation A Survey and Critical Review Proc 1995 Int l Workshop on Memory Management Kinross Scotland Sept 1995 14 Comprehensive survey Available from CS APP student site csapp cs cmu edu CS 105 Implicit Memory Management Garbage Collection Garbage collection automatic reclamation of heapallocated storage application never has to free void foo int p malloc 128 return p block is now garbage Common in functional languages scripting languages and modern object oriented languages Lisp ML Java Perl Python Mathematica Variants conservative garbage collectors exist for C and C 15 Cannot collect all garbage CS 105 Garbage Collection How does the memory manager know when memory can be freed In general we cannot know what is going to be used in the future since it depends on conditionals But we can tell that certain blocks cannot be used if there are no pointers to them Need to make certain assumptions about pointers 16 Memory manager can distinguish pointers from nonpointers All pointers point to the start of a block Cannot hide pointers e g by coercing them to an int and then back again CS 105 Classical GC algorithms Mark and sweep collection McCarthy 1960 Does not move blocks unless you also compact Reference counting Collins 1960 Does not move blocks not discussed Copying collection Minsky 1963 Moves blocks not discussed Multiprocessing compactifying Steele 1975 For more information see Jones and Lin Garbage Collection Algorithms for Automatic Dynamic Memory John Wiley Sons 1996 17 CS 105 Memory as a Graph We view memory as a directed graph Each block is a node in the graph Each pointer is an edge in the graph Locations not in the heap that contain pointers into the heap are …


View Full Document

Harvey Mudd CS 105 - Dynamic Memory Allocation II

Documents in this Course
Processes

Processes

25 pages

Processes

Processes

27 pages

Load more
Download Dynamic Memory Allocation II
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Dynamic Memory Allocation II and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Dynamic Memory Allocation II 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?