отключить копирование при записи (COW) на некоторых страницах памяти при выполнении fork () - PullRequest
1 голос
/ 17 января 2011

Когда родительский процесс разветвляется на дочерний процесс (в Linux), я хочу скопировать некоторые страницы памяти в родительском процессе в адресное пространство дочернего процесса в самом начале, что означает, что нет необходимости ждать копию -он-записи (КПС). Есть ли механизм поддержки этого? Спасибо: -)

Ответы [ 2 ]

1 голос
/ 17 января 2011

Я не знаю ни одного интерфейса для этого, но вы всегда делаете это вручную, либо с помощью memcpy, либо просто касаясь рассматриваемых страниц (например, прочитайте первое слово, а затем запишите его обратно).Обязательно отметьте страницу как volatile.

0 голосов
/ 17 января 2011

Посмотрите системный вызов clone.Наиболее актуальным вариантом является CLONE_VM.Важно понимать, что поведение страниц при копировании после разветвления - это просто оптимизация.Я не могу предвидеть ситуации, когда это может быть проблемой, за исключением, возможно, того, что вы хотите понести все потенциально «ленивые» потери производительности из-за дублирования страниц.Даже в этом случае вы можете переусердствовать в желании коснуться каждой доступной для записи страницы, поскольку вы будете увеличивать использование физической памяти для каждого процесса, разветвленного из оригинала.

...