mmap специальный файл, например /dev/zero
(или используйте MAP_ANONYMOUS) как PROT_NONE
, позже используйте mprotect для фиксации.
Вы можете включить эту функцию в масштабе всей системы, используя overcommit ядра. Обычно это настройка по умолчанию во многих дистрибутивах.
Вот объяснение http://www.mjmwired.net/kernel/Documentation/vm/overcommit-accounting
Linux-эквивалентом VirtualAlloc() является mmap(), который обеспечивает такое же поведение. Однако, как отмечает один из комментаторов, резервирование непрерывной памяти - это поведение вызовов malloc() до тех пор, пока память не инициализирована (например, calloc() или пользовательским кодом).
"кажущаяся случайной неприемлемая задержка для очень больших массивов
Вы также можете рассмотреть mlock() или mmap() + MAP_LOCKED
для уменьшения влияния подкачки. Многие процессоры поддерживают огромные (они же большие) страницы, страницы размером более 4 кб. Эти большие страницы могут уменьшить влияние TLB на потоковое чтение/запись.