Что эквивалентно dwAllocationGranularity
в линуксе? В Windows это определяется как:
Детализация начального адреса, по которому может быть выделена виртуальная память.
Обратите внимание, что это не то же самое, что PAGE_SIZE
, который является гранулярностью физическое стр.
(В Windows степень детализации виртуального адреса составляет 64 КБ на x86, тогда как размер страницы, конечно, 4 КБ.)
Ближайшим эквивалентом VirtualAlloc в Linux является mmap, который, как и VirtualAlloc, позволяет указать желаемый целевой адрес выделения выделенной памяти. В Windows этот адрес должен быть выровнен по гранулярности выделения. В Linux я цитирую со страницы руководства mmap:
Если addr не равен NULL, ядро воспринимает это как подсказку о том, куда
поместите отображение; в Linux, отображение будет создано в соседнем
граница страницы.
Насколько я знаю, нет ситуации, когда гранулярность выделения выше, чем размер страницы системы, поэтому вы должны иметь возможность безопасно использовать PAGE_SIZE в качестве замены.