Slab Allocator vs General Purpose

Why does the Linux kernel use a slab allocator for frequently allocated objects like task_struct instead of a general-purpose allocator?

A

Slab allocators use less total memory than any other strategy

B

Slab allocation is the only allocator that works in kernel space

C

Pre-allocating fixed-size object caches eliminates per-allocation overhead and fragmentation for known object sizes

D

General-purpose allocators cannot handle allocations smaller than one page