Лучшие вопросы
Таймлайн
Чат
Перспективы

Алгоритм двойников

алгоритм динамического распределения памяти Из Википедии, свободной энциклопедии

Remove ads

Алгоритм двойников (англ. Buddy memory allocation) — алгоритм динамического распределения памяти, при котором память поделена на блоки размером и при запросе выделяется блок, размер которого максимально приближен к требуемой памяти. Согласно Дональду Кнуту, алгоритм двойников впервые был предложен Гарри Марковицем в 1963 году[1].

Remove ads

Алгоритм

  • Память выделяется блоками размером
  • Когда требуется выделить память, ищем блок минимального подходящего размера . Если блок найден, то используем этот блок для размещения памяти. Если блок подходящего размера не найден, то находим ближайший блок большего размера и делим его до тех пор, пока не получим блок нужного размера.
  • При освобождении памяти проверяем, свободен ли соседний блок (двойник). Если свободен, то сливаем 2 блока в блок большего размера и повторяем это до тех пор, пока у получившегося блока есть свободные двойники.
Remove ads

Использование

Ядро Linux использует этот алгоритм в модифицированном виде для минимизации фрагментации блоков памяти, а также ряд других алгоритмов для управления памятью внутри блоков[2].

jemalloc — это современный аллокатор памяти, использующий, среди прочего, алгоритм двойников[3].

См. также

Примечания

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads