Предварительно ли анонимное сопоставление памяти преобразуется на linux? - PullRequest
0 голосов
/ 04 февраля 2020

Если кто-то выделяет память с помощью анонимного отображения памяти с помощью системного вызова mmap на linux:

mmap(NULL, 512*4096, MAP_READ|MAP_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);

Мне было интересно, была ли отображена память с предварительным сбросом или физическая страница фактически выделяется только тогда, когда программа будет получить доступ к сопоставленной виртуальной памяти?

Я спрашиваю об этом, потому что во время сопоставления я не знаю, будет ли программа фактически использовать всю выделенную память. Поэтому, если ядро ​​фактически выделяет физическую память для анонимного отображения только при обращении к памяти, мне не нужно беспокоиться об исчерпании физической памяти.

1 Ответ

0 голосов
/ 04 февраля 2020

Я сделал тест, посмотрев в файл '/ proc // smaps'. Таким образом, ниже приводится эмпирический ответ, который может быть недействительным для всех конфигураций ядра.

Linux не предшествует анонимным страницам: выделение физической памяти происходит только при записи в виртуальную память.

...