Лучшие вопросы
Таймлайн
Чат
Перспективы
Алгоритм двойников
алгоритм динамического распределения памяти Из Википедии, свободной энциклопедии
Remove ads
Алгоритм двойников (англ. Buddy memory allocation) — алгоритм динамического распределения памяти, при котором память поделена на блоки размером и при запросе выделяется блок, размер которого максимально приближен к требуемой памяти. Согласно Дональду Кнуту, алгоритм двойников впервые был предложен Гарри Марковицем в 1963 году[1].
Remove ads
Алгоритм
- Память выделяется блоками размером
- Когда требуется выделить память, ищем блок минимального подходящего размера . Если блок найден, то используем этот блок для размещения памяти. Если блок подходящего размера не найден, то находим ближайший блок большего размера и делим его до тех пор, пока не получим блок нужного размера.
- При освобождении памяти проверяем, свободен ли соседний блок (двойник). Если свободен, то сливаем 2 блока в блок большего размера и повторяем это до тех пор, пока у получившегося блока есть свободные двойники.
Remove ads
Использование
Ядро Linux использует этот алгоритм в модифицированном виде для минимизации фрагментации блоков памяти, а также ряд других алгоритмов для управления памятью внутри блоков[2].
jemalloc — это современный аллокатор памяти, использующий, среди прочего, алгоритм двойников[3].
См. также
Примечания
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads