As explained in OS - Virtual Memory > Slab allocation, there’s 3 parts to a slab based allocator:

  • caches
  • slab
  • objects

  • when the kernel wants to make an allocation, it will find the right cache and then find a partial slab to allocate that object.
  • if no partial or free slab, the allocator will allocate new slabs with the buddy allocator
  • each free slab in the partial list will have a pointer to the next free slab, creating a linked list

References