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