Распределитель SLOB (простой список блоков) является одним из трех доступных распределителей памяти в ядре Linux. (Два других - SLAB и SLUB.) Распределитель SLOB разработан так, что требует небольшого количества памяти для реализации и обслуживания, для использования в небольших системах, таких как встроенные системы. К сожалению, основным ограничением распределителя SLOB является то, что он сильно страдает от внутренней фрагментации. выделенные данные в виде списка.
Когда мы free
указатель, блок, соответствующий этому указателю, я также думаю, не удаляется и остается на месте, пока ядро не найдет новый выделенные данные, которые могут поместиться внутри освобожденного блока.
Но если данные помещаются внутри блока, они могут просто занять, скажем, 50% от ранее выделенного размера блока, и это оставляет нам 50 % неиспользуемого пространства, на которое невозможно сослаться.
Как разработчики справились с этой проблемой?