Как MAP_PRIVATE обрабатывает изменения базового файла после вызова mmap () - PullRequest
0 голосов
/ 01 июня 2018

Допустим, у меня есть три отдельных процесса (PV, PS и PH), каждый из которых вызывает mmap () для всего файла.PV вызывает mmap () с флагом MAP_PRIVATE, а PS и PH вызывают mmap () с флагом MAP_SHARED.Я понимаю, что изменения, сделанные PV в блоке памяти, НЕ будут распространяться ни на PS, ни на PH.Я также понимаю, что изменения, сделанные PS, будут распространяться на PH, но будут ли изменения распространяться на PV?Или же PV изолирован от изменений, сделанных процессами, использующими MAP_SHARED?

Во-вторых, если никто из них не записал в память mmap (), все ли они будут использовать одну и ту же физическую память?Или MAP_SHARED и MAP_PRIVATE приводят к раздельному выделению физической памяти?

1 Ответ

0 голосов
/ 01 июня 2018

Со страницы руководства для mmap ():

Не указано, видны ли изменения, внесенные в файл после вызова mmap (), в отображаемой области.

tldr = Booooo!

...