Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1 Note on malloc() and slab allocation CS-502 (EMC) Fall 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 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 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 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 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 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 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 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 Slab Allocation (illustrated)

10 Note on malloc() and slab allocation CS-502 (EMC) Fall 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 Questions?


Download ppt "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."

Similar presentations


Ads by Google