Buddy Allocator, определения
- Будем аллоцировать только блоки по 2^k frame-ов
- k - будем называть порядком блока
- блок идентифицируется первым frame-ом в блоке
- в каждой структуре для frame-а храним признак занятости блока, в котором соответствующий frame является первым, а также порядок блока
- свободные блоки каждого уровня связаны в списки
- Блоки страниц порядка k объединены попарно (buddies)
- frame-ы, в индексе которых k-1 наименее значимых бит 0 являются первыми в блоке порядка k
- блоки соседние, если все биты индексов их первых frame-ов кроме k-ого совпадают
- индекс первого frame-а соседнего блока легко находится по формуле: