Выравнивание страниц в Linux

#linux #windows #memory-management #allocator

#linux #Windows #управление памятью #распределитель

Вопрос:

В Windows я могу выделить 64 КБ виртуальной памяти, и возвращаемая память будет выровнена по границе 64 КБ.

Это полезно, поскольку я могу округлить любой адрес в моем распределителе памяти до границы 64 КБ и привести его к «заголовку страницы», где я сохраняю информацию о бронировании.

Я хотел бы сделать то же самое в Linux, но, похоже, я могу сделать это только для размера страницы (обычно 4K).

Есть ли какой-либо способ попросить ОС Linux предоставить мне, скажем, 16K или 8K, но выровненный по той же границе?

Комментарии:

1. Вы смотрели posix_memalign ?

2. Я хотел бы сам управлять страницами (mmap). Куча Linux подвела меня, мне пришлось в конечном итоге использовать jemalloc, а в Windows куча, как она есть, в большинстве сценариев. Я подумываю об использовании вместо этого больших страниц.

3. Linux позволяет дешево сохранять большие, в основном неиспользуемые выделения, и вы можете удалять поддиапазоны madvise . Собственное решение Linux, скорее всего, сделает это вместо того, чтобы пытаться выделить 64 КБ за раз.

4. Вы также можете создать большую выровненную область с помощью sbrk и некоторой арифметики.