could be used by kernel allocate objects of same size from a dedicated pool all structures of same type are same size

every object type has its own pool with blocks of the correct size basically prevents/limits internal fragmentation

slab is a cache of slots each allocation size has a corresponding slab of slots one slot holds on allocation

instead of linked list, we use a bitmap for allocations, set bit and return slot deallocations, just clear bit if we want to be simple

slab can also be implemented on top of buddy allocator if slabs are located adjacent to each other, we can reduce internal fragmentation