Download presentation
Presentation is loading. Please wait.
Published byMaia Kirkley Modified over 9 years ago
1
Note on malloc() and slab allocation CS-502 (EMC) Fall 20091 A Note on malloc() and Slab Allocation CS-502, Operating Systems Fall 2009 (EMC) (Slides include materials from Modern Operating Systems, 3 rd ed., by Andrew Tanenbaum and from Operating System Concepts, 7 th ed., by Silbershatz, Galvin, & Gagne) This presentation is best viewed in PowerPoint as a “slide show” (Press F5 key)
2
Note on malloc() and slab allocation CS-502 (EMC) Fall 20092 Typical Implementation of malloc() Heap comprises linked list of allocated and free blocks Each block is prefixed by a descriptor –Shows status –Length Descriptors effectively form a linked list –Possibly doubly-linked allocated descriptor free descriptor allocated descriptor Heap allocated descriptor free
3
Note on malloc() and slab allocation CS-502 (EMC) Fall 20093 Implementation of malloc() (continued) Descriptors are not protected against program errors –Writing past block end corrupts descriptor … –… and messes up all future allocation! Many allocated blocks adjacent to each other Free blocks coalesced allocated descriptor free descriptor allocated descriptor Heap allocated descriptor free
4
Note on malloc() and slab allocation CS-502 (EMC) Fall 20094 free descriptor allocated malloc() — Allocating New Object Traverse linked list until a large enough free block is found Carve off enough for request –length + sizeof(descriptor) Link remaining free portion descriptor Heap allocated … …
5
Note on malloc() and slab allocation CS-502 (EMC) Fall 20095 freeallocated free descriptor free() — Deallocating an Object Find descriptor from pointer Mark block as free If adjacent blocks are free, coalesce Note:– if bad pointer, heap becomes corrupted! descriptor Heap allocated … … free
6
Note on malloc() and slab allocation CS-502 (EMC) Fall 20096 Result — External Fragmentation After long operation, heap fills up with a lot of small, free spaces Too small for useful allocation Coalescence works, but not fast enough to recover large spaces Typical in 24×7 operation for days or weeks on end! Need something better
7
Note on malloc() and slab allocation CS-502 (EMC) Fall 20097 Slab Allocation Definition:– Slab. A separate memory pool for frequently created & deleted objects of same size. E.g, the task_struct in Linux kernel — i.e., the kernel data structure representing each process and thread — and other kernel objects Certain data structures in database applications Can be managed with bit-map allocator Very fast; no pointer manipulation or coalescence needed No common term for this concept
8
Note on malloc() and slab allocation CS-502 (EMC) Fall 20098 Slab Allocation in Linux Kernel Maintain a separate “cache” for each major data type E.g., task_struct, inode in Linux Slab: fixed number of contiguous physical pages assigned to one particular “cache” Upon kernel memory allocation request Recycle an existing object if possible Allocate a new one within a slab if possible Else, create an additional slab for that cache When finished with an object Return it to “cache” for recycling Benefits Minimize fragmentation of kernel memory Most kernel memory requests can be satisfied quickly Misuse of word cache
9
Note on malloc() and slab allocation CS-502 (EMC) Fall 20099 Slab Allocation (illustrated)
10
Note on malloc() and slab allocation CS-502 (EMC) Fall 200910 Summary Dynamic memory allocation is crucial to applications, system tools, & OS kernels Simple malloc() and free() are prone to a lot of fragmentation Especially during long, continuous operation Other allocators needed for more intelligent management of heap memory Slab allocators — one example of a better memory allocation tool
11
Note on malloc() and slab allocation CS-502 (EMC) Fall 200911 Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.