Система распределения физической памяти в Linux занимается размещением и освобождением страниц, групп страниц и небольших блоков памяти. Она имеет дополнительные механизмы для виртуальной памяти, отображаемой в адресное пространство исполняемых процессов.
Распределитель страниц размещает и освобождает физические страницы; он может также по запросу размещать группы смежных страниц.
Распределитель страниц Linux использует алгоритм buddy-heap (партнерской кучи)для слежения за доступными физическими страницами, принципы которого в следующем:
- Каждая область памяти, подлежащая распределению, образует пару с ее смежным "партнером".
- Когда обе области-партнера освобождаются, они сливаются и образуют смежную область вдвое большего размера [15].
- Если не существует малой области памяти, чтобы удовлетворить небольшой запрос на память, то область памяти большего размера расщепляется на две области-партнера для удовлетворения данного запроса.
Распределение памяти для ядра Linux возможно как статическое (драйвер резервирует статическую область памяти во время загрузки системы) или динамическое (с помощью распределителя страниц).
Расщепление памяти в куче изображено на рис. 1.1.

Рис. 1.1. Расщепление памяти в куче в системе Linux.