Dynamic Memory Allocation II.ppt
《Dynamic Memory Allocation II.ppt》由会员分享,可在线阅读,更多相关《Dynamic Memory Allocation II.ppt(37页珍藏版)》请在麦多课文档分享上搜索。
1、Dynamic Memory Allocation II,Topics Explicit doubly-linked free lists Segregated free lists Garbage collection Memory-related perils and pitfalls,dmem2.ppt,CS 105 “Tour of the Black Holes of Systems!”,Keeping Track of Free Blocks,Method 1: Implicit list using lengths - links all blocksMethod 2: Expl
2、icit list among the free blocks using pointers within the free blocksMethod 3: Segregated free lists Different free lists for different size classes Method 4: Blocks sorted by size (not discussed) Can use a balanced tree (e.g. Red-Black tree) with pointers within each free block, and the length used
3、 as a key,5,4,2,6,5,4,2,6,Explicit Free Lists,Use data space for link pointers Typically doubly linked Still need boundary tags for coalescingIt is important to realize that links are not necessarily in the same order as the blocks,4,4,4,4,6,6,4,4,4,4,Forward links,Back links,A,B,C,Allocating From E
4、xplicit Free Lists,free block,pred,succ,free block,pred,succ,Before:,After: (with splitting),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
5、 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 searchPro: studies suggest fragmentation is better than LIFO,Freeing With a L
6、IFO Policy,Case 1: a-a-a Insert self at beginning of free listCase 2: a-a-f Remove next from free list, coalesce self and next, and add to beginning of free list,pred (p),succ (s),self,a,a,p,s,self,a,f,before:,p,s,f,a,after:,Freeing With a LIFO Policy (cont),Case 3: f-a-a Remove prev from free list,
7、 coalesce with self, and add to beginning of free listCase 4: f-a-f Remove prev and next from free list, coalesce with self, and add to beginning of list,p,s,self,f,a,before:,p,s,f,a,after:,p1,s1,self,f,f,before:,f,after:,p2,s2,p1,s1,p2,s2,Summary of Explicit Lists,Comparison to implicit lists: Allo
8、cate is linear-time in number of free blocks instead of total blocksmuch 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
9、 conjunction with segregated free lists Keep multiple linked lists of different size classes, or possibly for different types of objects,Keeping Track of Free Blocks,Method 1: Implicit list using lengths - links all blocksMethod 2: Explicit list among the free blocks using pointers within the free b
10、locksMethod 3: Segregated free list Different free lists for different size classes Method 4: Blocks sorted by size Can use a balanced tree (e.g. Red-Black tree) with pointers within each free block, and the length used as a key,5,4,2,6,5,4,2,6,Segregated Storage,Each size class has its own collecti
11、on of blocks,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,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, alloc
12、ate 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) Tradeo
13、ffs: Fast, but can fragment badly,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,
14、try next larger class Repeat until block is found To free a block: Coalesce and place on appropriate list (optional) Tradeoffs 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 De
15、ferred coalescing can help,Buddy Allocators,Special case of segregated fits Basic idea:Limited to power-of-two sizesCan only coalesce with “buddy“, who is other half ofnext-higher power of two Clever use of low address bits to find buddies Problem: large powers of two result in large internal fragme
16、ntation (e.g., what if you want to allocate 65537 bytes?),For More Info on Allocators,D. Knuth, “The Art of Computer Programming, Second Edition”, Addison Wesley, 1973 The classic reference on dynamic storage allocationWilson et al, “Dynamic Storage Allocation: A Survey and Critical Review”, Proc. 1
17、995 Intl Workshop on Memory Management, Kinross, Scotland, Sept, 1995. Comprehensive survey Available from CS:APP student site (csapp.cs.cmu.edu),Implicit Memory Management: Garbage Collection,Garbage collection: automatic reclamation of heap-allocated storageapplication never has to free,Common in
18、functional languages, scripting languages, and modern object oriented languages: Lisp, ML, Java, Perl, Python, Mathematica, Variants (conservative garbage collectors) exist for C and C+ Cannot collect all garbage,void foo() int *p = malloc(128);return; /* p block is now garbage */ ,Garbage Collectio
19、n,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 themNeed to make certain assumptions about pointers Memory ma
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DYNAMICMEMORYALLOCATIONIIPPT
