Задать вопрос
@beduin01

Может ли размер memory pool быть меньше размера страницы?

Как я понимаю для того, чтобы избежать постоянные аллоцирования памяти можно выделить память большим куском это и называется memory pool. Так же вроде бы размер страницы фиксированный -- 4KB. Может ли memory pool быть меньше размера страницы или не кратен ему?
  • Вопрос задан
  • 239 просмотров
Подписаться 2 Оценить 7 комментариев
Решения вопроса 1
Все зависит от того, что вы подразумеваете под словом "выделить", выделить от кого кому? Операционная система приложению выделяет память постранично. На уровне приложения для управления памятью как правило организуется динамическая память в виде кучи. Соответственно, память для кучи выделяется постранично, а из кучи - любого размера. Memory pool может быть организован и поверх кучи, например если вы создаете хэш-таблицу, можно взять память постранично от ОС (VirtualAlloc / mmap), а можно - из кучи (new, malloc, HeapAlloc, etc).

P.S. Размер страницы может быть разный, но фиксированный. Сейчас многие системы поддерживают huge page'ы, где одна страница может занимать достаточно большой кусок памяти, например 2MB или 1GB. Но пользоваться этим надо с большой осторожностью, т.к. пейджинация на таких страницах - очень медленная операция.

P.P.S. В качестве альтернативы memory pool можно использовать организацию кучи на bitmap'ах с фиксированными размерами чанков, фактически это примерно то же самое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы